pax_global_header00006660000000000000000000000064152117435230014515gustar00rootroot0000000000000052 comment=abc798f3fc449154f31509c7ec23267db0ebeefc onionshare-onionshare-26fcdc5/000077500000000000000000000000001521174352300165235ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/.github/000077500000000000000000000000001521174352300200635ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/.github/CODEOWNERS000066400000000000000000000001741521174352300214600ustar00rootroot00000000000000* @micahflee # localization /share/locale/ @emmapeel2 # tests /tests/ @mig5 /tests_gui_local/ @mig5 /tests_gui_tor/ @mig5 onionshare-onionshare-26fcdc5/.github/ISSUE_TEMPLATE/000077500000000000000000000000001521174352300222465ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/.github/ISSUE_TEMPLATE/bug.md000066400000000000000000000016311521174352300233460ustar00rootroot00000000000000--- name: Bug report about: Use this form to submit a bug report about something not working in OnionShare --- - [ ] I have already searched the issue queue for my error message or symptom ## Details about your operating system Operating system: (e.g. Linux / Windows) Version/distribution: (e.g. Ubuntu 22.04 / Debian Bookworm / macOS Ventura, etc) Version of Onionshare: (e.g. 2.6.2) ## How did you install OnionShare - [ ] Native Mac/Windows package - [ ] Flatpak - [ ] Snap - [ ] Pip (command line) - [ ] Via my Linux distribution's package manager - [ ] From source ## What is the problem Please replace this text with the problem you experienced. Please try to include logs if safe to do so (run OnionShare cli or desktop with -v from a terminal). Make sure to omit any onion addresses or 'Private Key'/passwords if they would deanonymize you or your recipient! ## Anything else you'd like to tell us? onionshare-onionshare-26fcdc5/.github/ISSUE_TEMPLATE/feature.md000066400000000000000000000011461521174352300242250ustar00rootroot00000000000000--- name: Feature request about: Use this form to submit a suggestion about a feature you think OnionShare should have. --- - [ ] I have already searched the issue queue for my feature request ## Your feature idea Please write it here. Please note that we are not looking to add the following features: * Ability to host a dynamic website requiring databases or anything not considered 'static' * Database backends to store persistent information about use of Share or Receive mode, e.g statistics * Chat, voice or other instant messaging services * High availability for Onion Services (e.g OnionBalance) onionshare-onionshare-26fcdc5/.github/ISSUE_TEMPLATE/question.md000066400000000000000000000002431521174352300244360ustar00rootroot00000000000000--- name: Question or support about: Use this form if it is neither a bug nor a feature, but you just had a question. --- ## Your uestion Please write it here. onionshare-onionshare-26fcdc5/.github/workflows/000077500000000000000000000000001521174352300221205ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/.github/workflows/build.yml000066400000000000000000000360631521174352300237520ustar00rootroot00000000000000name: Build run-name: Build Windows (x86_64), macOS (Intel), Snap, and Flatpak 🚀 on: push: branches: - main pull_request: branches: - main jobs: build-win64: runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Install python uses: actions/setup-python@v5 with: python-version: "3.12.9" - name: Install poetry run: C:\hostedtoolcache\windows\Python\3.12.9\x64\python -m pip install poetry - name: Restore cache - poetry uses: actions/cache@v4 with: path: ~\AppData\Local\pypoetry\Cache\virtualenvs key: ${{ runner.os }}-win64-poetry-${{ hashFiles('desktop/poetry.lock') }} - name: Install poetry dependencies run: | cd desktop C:\hostedtoolcache\windows\Python\3.12.9\x64\Scripts\poetry install C:\hostedtoolcache\windows\Python\3.12.9\x64\Scripts\poetry env list --full-path - name: Restore cache - tor uses: actions/cache@v4 with: path: desktop\build\tor key: ${{ runner.os }}-win64-tor-${{ hashFiles('desktop/scripts/get-tor.py') }} - name: Get tor binaries from Tor Browser (64-bit) run: cd desktop && C:\hostedtoolcache\windows\Python\3.12.9\x64\Scripts\poetry run python .\scripts\get-tor.py windows-x86_64 - name: Install Go >=1.23.5 uses: actions/setup-go@v5 with: go-version: ">=1.23.5" cache: false - run: go version - name: Restore cache - obfs4proxy uses: actions/cache@v4 with: path: desktop\onionshare\resources\tor\obfs4proxy.exe key: ${{ runner.os }}-win64-obfs4proxy-${{ hashFiles('desktop/scripts/build-pt-obfs4proxy.ps1') }} - name: Build obfs4proxy shell: pwsh run: | if ((Test-Path -Path 'desktop\onionshare\resources\tor\obfs4proxy.exe') -eq $True) { Write-Output "obfs4proxy already built" } else { cd desktop .\scripts\build-pt-obfs4proxy.ps1 } - name: Restore cache - snowflake uses: actions/cache@v4 with: path: desktop\onionshare\resources\tor\snowflake-client.exe key: ${{ runner.os }}-win64-snowflake-${{ hashFiles('desktop/scripts/build-pt-snowflake.ps1') }} - name: Build snowflake shell: pwsh run: | if ((Test-Path -Path 'desktop\onionshare\resources\tor\snowflake-client.exe') -eq $True) { Write-Output "snowflake already built" } else { cd desktop .\scripts\build-pt-snowflake.ps1 } - name: Restore cache - meek uses: actions/cache@v4 with: path: desktop\onionshare\resources\tor\meek-client.exe key: ${{ runner.os }}-win64-meek-${{ hashFiles('desktop/scripts/build-pt-meek.ps1') }} - name: Build meek shell: pwsh run: | if ((Test-Path -Path 'desktop\onionshare\resources\tor\meek-client.exe') -eq $True) { Write-Output "meek already built" } else { cd desktop .\scripts\build-pt-meek.ps1 } - name: Build OnionShare run: | cd desktop C:\hostedtoolcache\windows\Python\3.12.9\x64\Scripts\poetry run python .\setup-freeze.py build C:\hostedtoolcache\windows\Python\3.12.9\x64\Scripts\poetry run python .\scripts\build-windows.py cleanup-build - name: Compress shell: pwsh run: | mv desktop\build\exe.win-amd64-3.12\ ~\onionshare-win64 Compress-Archive -LiteralPath ~\onionshare-win64 -DestinationPath ~\onionshare-win64.zip - uses: actions/upload-artifact@v4 with: name: win64-build path: ~\onionshare-win64.zip build-mac-intel: runs-on: macos-15-intel steps: - uses: actions/checkout@v4 - name: Install Python 3.12.9 (universal2) run: | curl -L https://www.python.org/ftp/python/3.12.9/python-3.12.9-macos11.pkg --output ~/Downloads/python.pkg cd ~/Downloads && echo "cca03f4d7ed77e93074d64936435d56d1f329870240cdb1ef0fd8e37cdaae8a0 python.pkg" | shasum -a 256 --check && sudo installer -pkg python.pkg -target / - name: Install poetry run: | curl -sSL https://install.python-poetry.org | python3 - - name: Restore cache - poetry uses: actions/cache@v4 with: path: ~/Library/Caches/pypoetry/virtualenvs key: ${{ runner.os }}-macos-poetry-${{ hashFiles('desktop/poetry.lock') }} - name: Install poetry dependencies run: | cd desktop ~/Library/Application\ Support/pypoetry/venv/bin/poetry install - name: Restore cache - tor uses: actions/cache@v4 with: path: desktop/build/tor key: ${{ runner.os }}-macos-tor-${{ hashFiles('desktop/scripts/get-tor.py') }} - name: Get tor binaries from Tor Browser run: | cd desktop ~/Library/Application\ Support/pypoetry/venv/bin/poetry run python ./scripts/get-tor.py macos - name: Install Go >=1.23.5 uses: actions/setup-go@v5 with: go-version: ">=1.23.5" cache: false - run: go version - name: Restore cache - obfs4proxy uses: actions/cache@v4 with: path: desktop/onionshare/resources/tor/obfs4proxy key: ${{ runner.os }}-macos-obfs4proxy-${{ hashFiles('desktop/scripts/build-pt-obfs4proxy.sh') }} - name: Build obfs4proxy run: | if [[ -f "desktop/onionshare/resources/tor/obfs4proxy" ]]; then echo "obfs4proxy already built" else cd desktop ./scripts/build-pt-obfs4proxy.sh fi - name: Restore cache - snowflake uses: actions/cache@v4 with: path: desktop/onionshare/resources/tor/snowflake-client key: ${{ runner.os }}-macos-snowflake-${{ hashFiles('desktop/scripts/build-pt-snowflake.sh') }} - name: Build snowflake run: | if [[ -f "desktop/onionshare/resources/tor/snowflake-client" ]]; then echo "snowflake already built" else cd desktop ./scripts/build-pt-snowflake.sh fi - name: Restore cache - meek uses: actions/cache@v4 with: path: desktop/onionshare/resources/tor/meek-client key: ${{ runner.os }}-macos-meek-${{ hashFiles('desktop/scripts/build-pt-meek.sh') }} - name: Build meek run: | if [[ -f "desktop/onionshare/resources/tor/meek-client" ]]; then echo "meek already built" else cd desktop ./scripts/build-pt-meek.sh fi - name: Install cx_Freeze/PySide6 build dependencies run: | brew install libiodbc curl -L https://github.com/PostgresApp/PostgresApp/releases/download/v2.6.5/Postgres-2.6.5-14.dmg --output ~/Downloads/Postgres-2.6.5-14.dmg cd ~/Downloads && echo "26a2a8a877008cba735d7d8b734dd6e445b2962ce372de6f6b5add3113705920 Postgres-2.6.5-14.dmg" | shasum -a 256 --check hdiutil attach Postgres-2.6.5-14.dmg cp -r /Volumes/Postgres-2.6.5-14/Postgres.app /Applications/ hdiutil detach /Volumes/Postgres-2.6.5-14 - name: Touch dylib file for build to finish run: | touch /usr/local/lib/libmimerapi.dylib - name: Build OnionShare run: | cd desktop ~/Library/Application\ Support/pypoetry/venv/bin/poetry run python ./setup-freeze.py bdist_mac ~/Library/Application\ Support/pypoetry/venv/bin/poetry run python ./scripts/build-macos.py cleanup-build - name: Compress run: | cd desktop/build tar -czvf ~/onionshare-macos-intel.tar.gz OnionShare.app - uses: actions/upload-artifact@v4 with: name: mac-intel-build path: ~/onionshare-macos-intel.tar.gz build-mac-arm64-and-universal: runs-on: macos-15 needs: build-mac-intel steps: - uses: actions/checkout@v4 - name: Install Python 3.12.9 (universal2) run: | curl -L https://www.python.org/ftp/python/3.12.9/python-3.12.9-macos11.pkg --output ~/Downloads/python.pkg cd ~/Downloads && echo "cca03f4d7ed77e93074d64936435d56d1f329870240cdb1ef0fd8e37cdaae8a0 python.pkg" | shasum -a 256 --check && sudo installer -pkg python.pkg -target / - name: Install poetry run: | curl -sSL https://install.python-poetry.org | python3 - - name: Restore cache - poetry uses: actions/cache@v4 with: path: ~/Library/Caches/pypoetry/virtualenvs key: ${{ runner.os }}-macos-arm-poetry-${{ hashFiles('desktop/poetry.lock') }} - name: Install poetry dependencies run: | cd desktop ~/Library/Application\ Support/pypoetry/venv/bin/poetry install - name: Restore cache - tor uses: actions/cache@v4 with: path: desktop/build/tor key: ${{ runner.os }}-macos-arm-tor-${{ hashFiles('desktop/scripts/get-tor.py') }} - name: Get tor binaries from Tor Browser run: | cd desktop ~/Library/Application\ Support/pypoetry/venv/bin/poetry run python ./scripts/get-tor.py macos - name: Install Go >=1.23.5 uses: actions/setup-go@v5 with: go-version: ">=1.23.5" cache: false - run: go version - name: Restore cache - obfs4proxy uses: actions/cache@v4 with: path: desktop/onionshare/resources/tor/obfs4proxy key: ${{ runner.os }}-macos-arm-obfs4proxy-${{ hashFiles('desktop/scripts/build-pt-obfs4proxy.sh') }} - name: Build obfs4proxy run: | if [[ -f "desktop/onionshare/resources/tor/obfs4proxy" ]]; then echo "obfs4proxy already built" else cd desktop ./scripts/build-pt-obfs4proxy.sh fi - name: Restore cache - snowflake uses: actions/cache@v4 with: path: desktop/onionshare/resources/tor/snowflake-client key: ${{ runner.os }}-macos-arm-snowflake-${{ hashFiles('desktop/scripts/build-pt-snowflake.sh') }} - name: Build snowflake run: | if [[ -f "desktop/onionshare/resources/tor/snowflake-client" ]]; then echo "snowflake already built" else cd desktop ./scripts/build-pt-snowflake.sh fi - name: Restore cache - meek uses: actions/cache@v4 with: path: desktop/onionshare/resources/tor/meek-client key: ${{ runner.os }}-macos-arm-meek-${{ hashFiles('desktop/scripts/build-pt-meek.sh') }} - name: Build meek run: | if [[ -f "desktop/onionshare/resources/tor/meek-client" ]]; then echo "meek already built" else cd desktop ./scripts/build-pt-meek.sh fi - name: Install cx_Freeze/PySide6 build dependencies run: | brew install libiodbc curl -L https://github.com/PostgresApp/PostgresApp/releases/download/v2.6.5/Postgres-2.6.5-14.dmg --output ~/Downloads/Postgres-2.6.5-14.dmg cd ~/Downloads && echo "26a2a8a877008cba735d7d8b734dd6e445b2962ce372de6f6b5add3113705920 Postgres-2.6.5-14.dmg" | shasum -a 256 --check hdiutil attach Postgres-2.6.5-14.dmg cp -r /Volumes/Postgres-2.6.5-14/Postgres.app /Applications/ hdiutil detach /Volumes/Postgres-2.6.5-14 - name: Build OnionShare run: | cd desktop ~/Library/Application\ Support/pypoetry/venv/bin/poetry run python ./setup-freeze.py bdist_mac ~/Library/Application\ Support/pypoetry/venv/bin/poetry run python ./scripts/build-macos.py cleanup-build - name: Compress run: | cd desktop/build tar -czvf ~/onionshare-macos-arm64.tar.gz OnionShare.app mkdir -p ~/tmp/arm64 cp -a OnionShare.app ~/tmp/arm64/ - uses: actions/upload-artifact@v4 with: name: mac-arm64-build path: ~/onionshare-macos-arm64.tar.gz - uses: actions/download-artifact@v4 with: name: mac-intel-build path: ~/ - name: Make universal bundle run: | mkdir -p ~/tmp/intel ~/tmp/universal tar -xzvf ~/onionshare-macos-intel.tar.gz -C ~/tmp/intel cd desktop ~/Library/Application\ Support/pypoetry/venv/bin/poetry run ./scripts/macos-merge-universal.py ~/tmp/intel/OnionShare.app ~/tmp/arm64/OnionShare.app ~/tmp/universal/OnionShare.app cd ~/tmp/universal tar -czvf ~/onionshare-macos-universal.tar.gz OnionShare.app - uses: actions/upload-artifact@v4 with: name: mac-universal-build path: ~/onionshare-macos-universal.tar.gz build-flatpak: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup run: | sudo apt update sudo apt install -y flatpak flatpak-builder flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo - name: Restore cache - .flatpak-builder uses: actions/cache@v4 with: path: flatpak/.flatpak-builder key: flatpak-.flatpak-builder-${{ hashFiles('flatpak/org.onionshare.OnionShare.yaml') }} - name: Restore cache - build uses: actions/cache@v4 with: path: flatpak/build key: flatpak-build-${{ hashFiles('flatpak/org.onionshare.OnionShare.yaml') }} - name: Flatpak build run: | cd flatpak flatpak-builder build --force-clean --verbose --install-deps-from=flathub --install --user org.onionshare.OnionShare.yaml flatpak build-bundle ~/.local/share/flatpak/repo ~/OnionShare.flatpak org.onionshare.OnionShare --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo - uses: actions/upload-artifact@v4 with: name: flatpak-build path: ~/OnionShare.flatpak build-snap: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Restore cache - lxd uses: actions/cache@v4 with: path: ~/lxd_cache.tar.gz key: snap-lxd-${{ hashFiles('snap/snapcraft.yaml') }} - name: Decompress cached content to lxd directory run: | if [ -f "~/lxd_cache.tar.gz" ]; then sudo tar -xzf ~/lxd_cache.tar.gz -C / fi - name: Install dependencies run: | sudo lxd init --auto sudo lxc storage list sudo snap install snapcraft --classic sudo ufw disable - name: Build snap run: sudo snapcraft -v - name: Compress lxd directory and set proper permissions run: | sudo tar -czf ~/lxd_cache.tar.gz /var/snap/lxd/common/lxd/storage-pools/default sudo chown $USER:$USER ~/lxd_cache.tar.gz - uses: actions/upload-artifact@v4 with: name: snapcraft-build path: onionshare_*.snap onionshare-onionshare-26fcdc5/.github/workflows/codeql-analysis.yml000066400000000000000000000043761521174352300257450ustar00rootroot00000000000000# For most projects, this workflow file will not need changing; you simply need # to commit it to your repository. # # You may wish to alter this file to override the set of languages analyzed, # or to provide custom queries or build logic. # # ******** NOTE ******** # We have attempted to detect the languages in your repository. Please check # the `language` matrix defined below to confirm you have the correct set of # supported CodeQL languages. # name: "CodeQL" on: push: branches: - main pull_request: branches: - main schedule: - cron: '22 11 * * 5' jobs: analyze: name: Analyze runs-on: ubuntu-latest strategy: fail-fast: false matrix: language: [ 'python' ] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] # Learn more: # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed steps: - name: Checkout repository uses: actions/checkout@v2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v1 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. # queries: ./path/to/local/query, your-org/your-repo/queries@main # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild uses: github/codeql-action/autobuild@v1 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines # and modify them (or add more) to build your code if your project # uses a compiled language #- run: | # make bootstrap # make release - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v1 onionshare-onionshare-26fcdc5/.github/workflows/tests.yml000066400000000000000000000045301521174352300240070ustar00rootroot00000000000000name: Run Tests run-name: Run tests on: push: branches: - main pull_request: branches: - main jobs: test-cli: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: "3.10" - name: Install dependencies run: | sudo apt-get update sudo apt-get -y install tor obfs4proxy pip install --upgrade pip poetry - uses: actions/cache@v3 with: path: ~/.cache/pypoetry/virtualenvs key: ${{ runner.os }}-cli-poetry-${{ hashFiles('cli/poetry.lock') }} - run: cd cli && poetry install - run: | cd cli poetry run pytest -v ./tests poetry run onionshare-cli --local-only ./tests --auto-stop-timer 2 --qr --verbose poetry run onionshare-cli --local-only ./tests --auto-start-timer 2 --auto-stop-timer 2 --qr --verbose poetry run onionshare-cli --local-only --receive --auto-stop-timer 2 --qr --verbose poetry run onionshare-cli --local-only --website ../docs --auto-stop-timer 2 --qr --verbose poetry run onionshare-cli --local-only --chat --auto-stop-timer 5 --qr --verbose touch /tmp/foo{1,2} && poetry run onionshare-cli --local-only --persistent tests/persistent.json --auto-stop-timer 5 --verbose test-desktop: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: "3.10" - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y tor obfs4proxy gcc python3-dev python3-pyside2.qtcore python3-pyside2.qtwidgets python3-pyside2.qtgui sudo apt-get install -y xvfb x11-utils libxkbcommon-x11-0 libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev libxcb-render-util0 libxcb-icccm4 libxcb-keysyms1 libxcb-image0 pip install --upgrade pip poetry - uses: actions/cache@v3 with: path: ~/.cache/pypoetry/virtualenvs key: ${{ runner.os }}-desktop-poetry-${{ hashFiles('desktop/poetry.lock') }} - run: cd desktop && poetry install - run: | cd desktop QT_QPA_PLATFORM=offscreen QT_DEBUG_PLUGINS=1 xvfb-run poetry run pytest -v ./tests/test_gui_*.py onionshare-onionshare-26fcdc5/.gitignore000066400000000000000000000011211521174352300205060ustar00rootroot00000000000000__pycache__ *.py[cod] # C extensions *.so # Packages *.egg *.egg-info *.eggs dist deb_dist build _build eggs parts var sdist develop-eggs .installed.cfg MANIFEST env onionshare-*.tar.gz onionshare_*.snap .flatpak-builder OnionShare.flatpak # Installer logs pip-log.txt # Unit test / coverage reports .coverage .tox nosetests.xml .cache .pytest_cache # Translations *.mo # Mr Developer .mr.developer.cfg .project .pydevproject # vim *.swp # tags ctags tags # OSX .DS_Store # virtualenv venv # other .vscode .python-version onionshare.dist-info desktop/onionshare/resources/tor TODO* onionshare-onionshare-26fcdc5/CHANGELOG.md000066400000000000000000000376571521174352300203560ustar00rootroot00000000000000# OnionShare Changelog ## 2.6.4 * Security fix: Prevent symlink traversal * Security fix: Prevent upload of files when file upload mode is disabled. Prevent creation of empty folder on empty POST request payload * Dependencies: Updates tor dependencies and other python and web dependencies. Also updates flatpak runtime. * Bug fix: Show indeterminate progress and warn user during Tor traversal ## 2.6.3 * Feature: It is now possible to view what URLs are visited in Share/Website mode using the CLI tool, with `--log-filenames`. * Feature: It is now possible to automatically start a saved persistent onion tab, once OnionShare itself starts and once Tor is connected. * Bug fix: It is now once again possible to request bridges and use meek as a Pluggable Transport. * Bug fix: Fixed a fatal error with Censorship Circumvention when no bridges are returned. * Bug fix: Fixed an issue with lack of gevent with SocketIO on systems that don't have it. * Bug fix: Fixed a thread-related race condition segfault with the CLI tool on shutdown. * Bug fix: Fixed an issue with the 'auto-stop timer' when the CLI tool is being used in 'Share mode' and someone has visited the share at least once. Desktop was unaffected, as were all other modes. * Locales: Gaeilge, Slovenčina and Tamil languages introduced, and various other translations in existing languages added or improved (thanks to the translators!) * Documentation: Added examples of using a systemd unit file for persistent onions, and various other clarifications. * Documentation: Documented all the config file parameters and what they mean, as well as that for persistent onion json files. * Packaging: Built the snap with a cleanup step in such a way that it should work on Ubuntu 24.04 and higher. Unfortunately, we have to drop support for armhf for now, as there are no PySide6 packages available on Pypi to install for that architecture. However, ARM64 is supported. * Packaging: Fixed ARM64 packaging for Flatpak. * Packaging: Many internal packaging improvements that make it easier for us to release snap and flatpak. * Miscellaneous: Many dependency updates to Python libraries, Tor, Snowflake * Miscellaneous: Various minor bug fixes/warning messages resolved, and minor changes to some wording for the 'Save this tab' option to make it clearer that this means 'persistent onion address'. * Miscellaneous: Nicer and more intuitive icons with better dark mode support. ## 2.6.2 * Security fix: Removes newlines from History item path * Security fix: Set a maximum length of 524288 characters for text messages in Receive mode * Security fix: Allows only specific ASCII characters for usernames and removes control characters * Security fix: Forcefully disconnect user from chat on `disconnect` event * Security fix: Handle username validation excpeptions to prevent silent joining ## 2.6.1 * Release updates: Automate builds with CI, make just 64-bit Windows release, make a single universal2 release for both Intel and Apple Silicon macOS * Upgrade dependencies, including Tor, meek, and snowflake * Bug fix: Restore the primary_action mode settings in a tab after OnionShare reconnects to Tor * Bug fix: Fix issue with auto-connecting to Tor with persistent tabs open * Bug fix: Fix packaging issue where Windows version of OnionShare conflicts with Windows version of Dangerzone * Bug fix: Fix 'Use a bridge' checkbox state change * Bug fix: Raise error from waitress if not shutdown ## 2.6 * Major feature: a new 'Quickstart' screen, which enables toggling on or off an animated automatic connection to Tor. This allows configuring network settings prior to automatic connection. * Major feature: Censorship circumvention. Use new features in the upstream Tor API to try to automatically obtain bridges depending on the user's location. * New feature: automatically fetch the built-in bridges from the upstream Tor API rather than hardcode them in each release of OnionShare. * New feature: keyboard shortcuts to access various modes and menus, and accessibility hints * Bug fix: Temporary Directory for serving the OnionShare web pages was broken on Windows * Packaging: Packaging is more automated, and Linux Snapcraft releases are available for amd64, arm64, and armhf * Miscellaneous: Many dependency updates and web page theming improvements ## 2.5 * Security fix: Sanitize the path parameter in History item widget to be plain text * Security fix: Use microseconds in Receive mode directory creation to avoid potential DoS * Security fix: Several hardening improvements for session and username management in Chat mode, to prevent impersonation and other issues * Major feature: Obtain bridges from Moat / BridgeDB (over a domain-fronted Meek client) * Major feature: Snowflake bridge support * New feature: Tor connection settings, as well as general settings, are now Tabs rather than dialogs * New feature: User can customize the Content-Security-Policy header in Website mode * New feature: Built-in bridges are automatically updated from Tor's API when the user has chosen to use them * Switch to using our `stem` fork called `cepa`, which is now published on Pypi so we can build it in releases * Various bug fixes ## 2.4 * Major feature: Private keys (v3 onion client authentication) replaces passwords and HTTP basic auth * Updated Tor to 0.4.6.7 on all platforms * Various bug fixes ## 2.3.3 * New feature: Setting for light or dark theme * Updated Tor to 0.4.6.7 for Linux, 0.4.5.10 for Windows and macOS * Various bug fixes ## 2.3.2 * New feature: Custom titles can be set for OnionShare's various modes * New feature: Receive mode supports notification webhooks * New feature: Receive mode supports submitting messages as well as files * New feature: New ASCII art banner and prettier verbose output * New feature: Partial support for range requests (pausing and resuming in HTTP) * Updated Tor to 0.4.5.7 * Updated built-in obfs4 bridges * Various bug fixes ## 2.3.1 * Bugfix: Fix chat mode * Bugfix: Fix --persistent in onionshare-cli * Bugfix: Fix checking for updates in Windows and macOS ## 2.3 * Major new feature: Multiple tabs, including better support for persistent services, faster Tor connections * New feature: Chat anonymously mode * New feature: All new design * New feature: Ability to display QR codes of OnionShare addresses * New feature: Web apps have responsive design and look better on mobile * New feature: Flatpak and Snapcraft packaging for Linux * Several bug fixes ## 2.2 * New feature: Website mode, which allows publishing a static HTML website as an onion service * Allow individual files to be viewed or downloaded in Share mode, including the ability to browse into subdirectories and use breadcrumbs to navigate back * Show a counter when individual files or pages are viewed * Better History items including colors and status codes to differentiate between successful and failed requests * Swap out the random /slug suffix for HTTP basic authentication (when in non-public mode) * Hide the Tor connection settings if the ONIONSHARE_HIDE_TOR_SETTINGS environment variable is set (Tails compatibility) * Remove the NoScript XSS warning in Receive Mode now that the NoScript/Tor Browser bug is fixed. The ajax upload method still exists when javascript is enabled. * Better support for DragonFly BSD * Updated various dependencies, including Flask, Werkzeug, urllib3, requests, and PyQt5 * Updated Tor to 0.4.1.5 * Other minor bug fixes * New translations: * Arabic (العربية) * Dutch (Nederlands) * Persian (فارسی) * Romanian (Română) * Serbian latin (Srpska (latinica)) * Removed translations with fewer than 90% of strings translated: * Finnish (Suomi) ## 2.1 * New feature: Auto-start timer, which allows scheduling when the server starts * Renamed CLI argument --debug to --verbose * Make Tor connection timeout configurable as a CLI argument * Updated various dependencies, including fixing third-party security issues in urllib3, Jinja2, and jQuery * Updated Tor to 0.3.5.8 * New translations: * Traditional Chinese (正體中文 (繁體)), * Simplified Chinese (中文 (简体)) * Finnish (Suomi) * German (Deutsch) * Icelandic (Íslenska) * Irish (Gaeilge) * Norwegian Bokmål (Norsk bokmål) * Polish (Polski) * Portuguese Portugal (Português (Portugal)) * Telugu (తెలుగు) * Turkish (Türkçe) * Ukrainian (Українська) * Removed translations with fewer than 90% of strings translated: * Bengali (বাংলা) * Persian (فارسی) ## 2.0 * New feature: Receiver mode allows you to receive files with OnionShare, instead of only sending files * New feature: Support for next generation onion services * New feature: macOS sandbox is enabled * New feature: Public mode feature, for public uses of OnionShare, which when enabled turns off slugs in the URL and removes the limit on how many 404 requests can be made * New feature: If you're sharing a single file, don't zip it up * New feature: Full support for meek_lite (Azure) bridges * New feature: Allow selecting your language from a dropdown * New translations: Bengali (বাংলা), Catalan (Català), Danish (Dansk), French (Français), Greek (Ελληνικά), Italian (Italiano), Japanese (日本語), Persian (فارسی), Portuguese Brazil (Português Brasil), Russian (Русский), Spanish (Español), Swedish (Svenska) * Several bugfixes * Invisible to users, this version includes some major refactoring of the codebase, and a robust set of unit tests which makes OnionShare easier to maintain going forward ## 1.3.2 * Bugfix: In debug mode, stop saving flask debug log in /tmp, where all users can access it ## 1.3.1 * Updated Tor to 0.2.3.10 * Windows and Mac binaries are now distributed with licenses for Tor and obfs4 ## 1.3 * Major UI redesign, introducing many UX improvements * Client-side web interface redesigned * New feature: Support for meek_lite pluggable transports (Amazon and Azure) - not yet ready for Windows or macOS, sorry * New feature: Support for custom obfs4 and meek_lite bridges (again, meek_lite not available on Windows/macOS yet) * New feature: Ability to cancel share before it starts * Bugfix: The UpdateChecker no longer blocks the UI when checking * Bugfix: Simultaneous downloads (broken in 1.2) * Updated Tor to 0.2.3.9 * Improved support for BSD * Updated French and Danish translations * Minor build script and build documentation fixes * Flake8 tests added ## 1.2 * New feature: Support for Tor bridges, including obfs4proxy * New feature: Ability to use a persistent URL * New feature: Auto-stop timer, to stop OnionShare at a specified time * New feature: Get notification when Tor connection dies * Updated versions of Python, Qt, Tor, and other dependencies that are bundled * Added ability to supply a custom settings file as a command line arg * Added support for FreeBSD * Fixed small user interface issues * Fixed minor bugs * New Dutch translations ## 1.1 * OnionShare connects to Tor itself now, so opening Tor Browser in the background isn't required * In Windows and macOS, OnionShare alerts users about updates * Removed the menu bar, and adding a "Settings" button * Added desktop notifications, and a system tray icon * Ability to add multiple files and folders with a single "Add" button * Ability to delete multiple files and folders at once with the "Delete" button * Hardened some response headers sent from the web server * Minor clarity improvements to the contents of the share's web page * Alert the user rather than share an empty archive if a file was unreadable * Prettier progress bars ## 1.0 * Fixed long-standing macOS X bug that caused OnionShare to crash on older Macs (!) * Added settings dialog to configure connecting to Tor, including support for system Tor * Added support for stealth onion services (advanced option) * Added support for Whonix * Improved AppArmor profiles * Added progress bar for zipping up files * Improved the look of download progress bars * Allows developers to launch OnionShare from source tree, without building a package * Deleted legacy code, and made OnionShare purely use ephemeral Tor onion services * Switched to EFF's diceware wordlist for slugs ## 0.9.2 (Linux only) * Looks for `TOR_CONTROL_PORT` environment variable, to help Tails integration * Change how OnionShare checks to see if it's installed system-wide, to help Subgraph OS integration ## 0.9.1 * Added Nautilus extension, so you can right-click on a file and choose "Share via OnionShare", thanks to Subgraph developers * Switch to using the term "onion service" rather than "hidden service" * Fix CVE-2016-5026, minor security issue related to use of /tmp directory * Switch from PyInstaller to cx_Freeze for Windows and OSX packaging * Support CLI in Windows and OSX ## 0.9 * Slugs are now shorter and human-readable, with rate limiting to prevent URL guessing * Uses a new slug each time the server restarts * "Stop sharing automatically" enforces only one download * Users get asked if they're sure they want to close OnionShare while server is running * Added estimated time remaining progress indicator * Fixed frozen window while waiting for hidden service to start * Displays version number in both GUI and CLI * Closing window causes downloads to stop immediately * Web server listens in ports 17600-17650, for future Tails support * Updated translations * Ported from Python 2 to Python 3 and from Qt4 to Qt5 * Ported from py2app and py2exe to PyInstaller ## 0.8.1 * Fixed crash in Windows 7 * Fixed crash related to non-ephemeral hidden services in Linux * Fixed minor bugs ## 0.8 * Add support for ephemeral hidden services * Stopped leaking sender's locale on download page * Add support for Tor Messenger as provider of Tor service * Minor bugfixes, code cleanup, and refactoring ## 0.7.1 * Fixed critical bug in OS X binaries that caused crashes on some computers * Added Security Design document * Minor bugfix with Windows code signing timestamp server * Linux version uses HS dir that is allowed by Tor Browser Launcher's AppArmor profiles ## 0.7 * Added code signing for Mac OS X * Does not disable existing hidden services * Uses allowZip64 to allow compressing files >5gb * Sets HS dir to be in /var/lib/tor in Tails, to obey AppArmor rules * Misc. minor code cleanup ## 0.6 * Brand new drag-and-drop GUI with ability to start and stop server * Much cleaner code split into several files * Support for sharing multiple files and folders at once, and automatically compresses files before sharing * Redesigned receiver HTML interface * Waits for hidden service to be available before displaying URL * Cleans up hidden service directory on exit * Continuous integration with Travis * Support for multiple downloads at once * Fixed unicode-related filename and display bugs * Warns that large files could take hours to send * New translations * Several misc. bugfixes * Added code signing for Windows with Authenticode ## 0.5 * Removed webkit GUI altogether, and refactored GUI with native Qt widget * In Tails, launches separate process as root for Tor control port and firewall stuff, everything else runs as amnesia * Fixed itsdangerous dependency bug in Debian Wheezy and Tails * Guesses content type of file, responds in HTTP header ## 0.4 * Fixed critical XSS bug that could deanonymize user: https://micahflee.com/2014/07/security-advisory-upgrade-to-onionshare-0-4-immediately/ * Added CSP headers in GUI to prevent any future XSS bugs from working * Hash urandom data before using it, to avoid leaking state of entropy * Constant time compare the slug to avoid timing attacks * Cleaned up Tails firewall code ## 0.3 * Built a simple, featureful cross-platform GUI * Graphical installers for Windows and OSX * Packaged for Linux in .deb, .rpm, with desktop launcher * Installable in Tails 1.1+, with simple "install" script * Automatically copies URL to clipboard * Automatically closes when download is done by default * Shows download progress * Limited suite of tests * If a localized string doesn't exist, falls back to English * New translations: Dutch, Portuguese, German, Russian, and updated translations: Norwegian Bokmål, Spanish, French, Italian onionshare-onionshare-26fcdc5/LICENSE.txt000066400000000000000000001047251521174352300203570ustar00rootroot00000000000000(Note: Third-party licenses can be found under licenses/.) OnionShare Copyright (C) 2014-2022 Micah Lee, et al. GNU GENERAL PUBLIC LICENSE Version 3, 29 June 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 General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is 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. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. 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. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. 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 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. Use with the GNU Affero General Public License. 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 Affero 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 special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 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 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 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 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 . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". 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 GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . onionshare-onionshare-26fcdc5/README.md000066400000000000000000000016301521174352300200020ustar00rootroot00000000000000![OnionShare](/docs/source/_static/logo.png) [![Run Tests](https://github.com/onionshare/onionshare/actions/workflows/tests.yml/badge.svg)](https://github.com/onionshare/onionshare/actions/workflows/tests.yml) # OnionShare OnionShare is an open source tool that lets you securely and anonymously share files, host websites, and chat with friends using the Tor network. ## Installing OnionShare You can download OnionShare for Windows and macOS from the [OnionShare website](https://onionshare.org). For macOS you can also use [Homebrew](https://brew.sh/): ``` brew install --cask onionshare ``` See [these instructions](https://docs.onionshare.org/2.6/en/install.html#linux) to install OnionShare in Linux as a Flatpak or Snap package. ## Documentation To learn how OnionShare works, what its security properties are, how to use it, and how to contribute to the project, check out https://docs.onionshare.org. onionshare-onionshare-26fcdc5/RELEASE.md000066400000000000000000000371761521174352300201430ustar00rootroot00000000000000# OnionShare Release Process Unless you're a core OnionShare developer making a release, you'll probably never need to follow it. ## Preparing the release ### Update the version in these places - [ ] `cli/pyproject.toml` - [ ] `cli/onionshare_cli/resources/version.txt` - [ ] `desktop/pyproject.toml` - [ ] `desktop/setup.py` - [ ] `desktop/org.onionshare.OnionShare.appdata.xml` - [ ] `docs/source/conf.py` (`version` at the top, and the `versions` list too) - [ ] `snap/snapcraft.yaml` ### You also must edit these files - [ ] `desktop/org.onionshare.OnionShare.appdata.xml` should have the correct release date, and links to correct screenshots - [ ] `CHANGELOG.md` should be updated to include a list of all major changes since the last release ### Update dependencies Check `cli/pyproject.toml` to see if any hard-coded versions should be updated. Then, update the dependencies like this: ```sh cd cli poetry update cd .. ``` If you update `flask-socketio`, ensure that you also update the [socket.io.min.js](https://github.com/micahflee/onionshare/blob/develop/cli/onionshare_cli/resources/static/js/socket.io.min.js) file to a version that is [supported](https://flask-socketio.readthedocs.io/en/latest/#version-compatibility) by the updated version of `flask-socketio`. Check `desktop/pyproject.toml` to see if any hard-coded versions should be updated. Then, update the dependencies like this: ``` cd desktop poetry update cd .. ``` Update the docs dependencies like this: ``` cd docs poetry update cd .. ``` Update the versions of `meek`, `obfs4proxy`, and `snowflake` in the `desktop/scripts/build-pt-*` scripts, both the bash and PowerShell scripts. You can find the latest versions by looking at the tags in their git repos: [meek](https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/meek/-/tags), [obfs4proxy](https://gitlab.com/yawning/obfs4/-/tags), [snowflake](https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/tags). ### Update the documentation - [ ] Update all of the documentation in `docs` to cover new features, including taking new screenshots if necessary ### Finalize localization - [ ] Merge all the translations from weblate: ``` git remote add weblate https://hosted.weblate.org/projects/onionshare/translations/ git pull weblate main ``` - [ ] In `docs` run `poetry run ./check-weblate.py [API_KEY]` to see which translations are >90% in the app and docs - [ ] Edit `cli/onionshare_cli/settings.py`, make sure `self.available_locales` lists only locales that are >90% translated - [ ] From the `desktop` folder in the virtual env, run `./scripts/countries-update-list.py` to make sure the localized country list for censorship circumvention is available in all available languages - [ ] Edit `docs/source/conf.py`, make sure `languages` lists only languages that are >90% translated - [ ] Edit `docs/build.sh` and make sure `LOCALES=` lists the same languages as above, in `docs/source/conf.py` - [ ] Make sure the latest documentation is built and committed: ``` cd docs poetry install poetry run ./build.sh ``` ### Make sure Snapcraft packaging works Ensure you have the ability to run `poetry export`. You may need to run `poetry self add poetry-plugin-export@latest`, as in recent versions of Poetry it is now a plugin rather than in the core. Enter the `cli` directory and run `poetry export > ../snap/local/cli-requirements.txt` Enter the `desktop` directory and run `poetry export > ../snap/local/desktop-requirements.txt`. Now edit this file and remove the first line that has a `-e` with a path to the `cli` folder - we don't want it. In `snap/snapcraft.yaml`: - [ ] Update the version number near the top of the file. - [ ] The `tor`, `libevent`, `obfs4`, `snowflake-client`, and `meek-client` parts should be updated if necessary To test locally: - Install snapcraft with: `sudo snap install snapcraft --classic` - Build snap with: `snapcraft` - Install with: `sudo snap install ./onionshare_${VERSION}_amd64.snap --devmode` To test in the edge branch: With every commit to the `main` branch, Snapcraft's CI should trigger builds. If you just merged to `main` and consider this to be what will become the new version's 'tag', you can also click 'Trigger a build' in the Snapcraft.io web interface. Make sure the builds all succeeded at https://snapcraft.io/onionshare/builds (you must be logged in), and test them. You can install them with: `snap install onionshare --edge` ### Make sure the Flatpak packaging works In `flatpak/org.onionshare.OnionShare.yaml`: - [ ] Update `tor` and `libevent` - [ ] Update `obfs4proxy`, `meek-client`, and `snowflake-client` dependencies. To do this, edit the script `flatpak/generate-golang-dependencies.py` and make sure that the repository URLs and tags are the latest versions. Then run this command from the root of the onionshare repository folder: ```sh ./flatpak/generate-golang-dependencies.py ``` - [ ] Update the Python dependencies. This is super hacky. You need to use both the poetry and pip parts of [this tool](https://github.com/flatpak/flatpak-builder-tools), but the version from [this PR](https://github.com/flatpak/flatpak-builder-tools/pull/353): ```sh # get onionshare-cli dependencies cd flatpak-build-tools/poetry ./flatpak-poetry-generator.py ../../onionshare/cli/poetry.lock --production ../flatpak-json2yaml.py ./generated-poetry-sources.json mv generated-poetry-sources.yml onionshare-cli.yaml # get onionshare dependencies cd flatpak-build-tools/pip ./flatpak-pip-generator $(../../onionshare/flatpak/poetry-to-requirements.py ../../onionshare/desktop/pyproject.toml | grep -v PySide6) ../flatpak-json2yaml.py ./python3-modules.json mv python3-modules.yml onionshare-desktop.yaml ``` Now, move `onionshare-desktop.yaml` and `onionshare-cli.yaml` into the `flatpak/` folder. For the `onionshare-cli.yaml` file, adjust the `pip3 install` step so that it includes the `--use-pep517` argument. - [ ] Build and test the Flatpak package to ensure it works: ```sh flatpak-builder build --force-clean --jobs=$(nproc) --install-deps-from=flathub --install --user flatpak/org.onionshare.OnionShare.yaml flatpak run org.onionshare.OnionShare ``` ### Create a signed git tag - [ ] There must be a PGP-signed git tag for the version, e.g. for OnionShare 2.1, the tag must be `v2.1` The first step for the Linux, macOS, and Windows releases is the same. Verify the release git tag: ```sh git fetch git tag -v v$VERSION ``` If the tag verifies successfully, check it out: ```sh git checkout v$VERSION ``` ## Making the release ### Linux Snapcraft release From https://snapcraft.io/onionshare/releases (you must be logged in), find the release that corresponds to the recent builds that ran against our `main` branch (the Build ID mentioned can be cross-referenced to the build log, as the ID appears in the log). You can then 'promote' that release from latest/edge to latest/beta, then latest/candidate, then latest/stable. ### Linux Flatpak release - [ ] Create a new branch in https://github.com/flathub/org.onionshare.OnionShare for the version - [ ] Overwrite the manifest in the flathub repo with the updated version in [flatpak/org.onionshare.OnionShare.yaml](./flatpak/org.onionshare.OnionShare.yaml) - [ ] Edit it so that the sources for `onionshare` and `onionshare-cli` are the GitHub repo, with the correct git tag, rather than the local filesystem - [ ] Ensure you also copy across the `onionshare-cli.yaml`, `onionshare-desktop.yaml`, `meek-client`, `snowflake` and `obfs4proxy` from the `flatpak/` folder into the flathub repository, so that the flathub repository has all the latest dependencies. - [ ] Make a PR in the flathub repo, and merge it to make a release ### Windows release Create a Windows 11 VM, and set it up like this: - Install [git for Windows](https://git-scm.com/download/win). - Install the latest version of 3.12 [from python.org](https://www.python.org/downloads/). - Install [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/), making sure to check "Desktop development with C++". - Download and install [7-Zip (x64)](https://7-zip.org/). Add `C:\Program Files\7-Zip` to your path. - Download and install [gpg4win](https://gpg4win.org/). Add `C:\Program Files (x86)\GnuPG\bin` to your path. - Install the Windows SDK from here: https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/. - Go to https://dotnet.microsoft.com/download/dotnet-framework and download and install .NET Framework 3.5 SP1 Runtime. I downloaded `dotnetfx35.exe`. - Go to https://wixtoolset.org/docs/wix3/ and download and install WiX toolset. I downloaded `wix314.exe`. Add `C:\Program Files (x86)\WiX Toolset v3.14\bin` to the path. Clone the OnionShare git repo and checkout the release tag. If you've used this git repo for a previous release, clean it up: - In the `onionshare/desktop` folder, delete `build` and `dist` from the previous build. - Delete the poetry environment. You can find its name by run `poetry env list`, and then you can delete it with `poetry env remove [ENV_NAME]`. Install Poetry and deps. Open a Developer PowerShell for VS window, change to the `onionshare` folder, and run: ```powershell cd desktop pip install poetry poetry install ``` Github Actions will build the binaries. Find the Github Actions `build` workflow, switch to the summary tab, download `win64-build.zip`, and copy it to the Windows packaging environment. Extract `win64-build.zip`. Run: ``` poetry run python .\scripts\build-windows.py codesign [path] poetry run python .\scripts\build-windows.py package [path] ``` This will create: - `desktop/dist/OnionShare-win64-$VERSION.msi` ### macOS release In order to make a universal2 binary, you must following these instructions using a Mac with Apple Silicon. To keep a clean environment, you can use VM. Set up the VM like this: - Install [Homebrew](https://brew.sh/) - `brew install create-dmg libiodbc` - Install the latest Python 3.12 from https://www.python.org/downloads/ - Install ARM64 version of Go from https://go.dev/dl/ - Install "Postgres.app with PostgreSQL 16 (Universal)" from https://postgresapp.com/downloads.html Clone the OnionShare git repo and checkout the release tag. If you've used this git repo for a previous release, clean it up: ```sh cd desktop rm -rf build dist # Delete the old poetry environment /Library/Frameworks/Python.framework/Versions/3.12/bin/poetry env remove $(poetry env list | grep "(Activated)" | cut -d" " -f1) ``` Install and build dependencies: ```sh cd desktop /Library/Frameworks/Python.framework/Versions/3.12/bin/python3 -m pip install poetry /Library/Frameworks/Python.framework/Versions/3.12/bin/poetry install /Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run python ./scripts/get-tor.py macos ./scripts/build-pt-obfs4proxy.sh ./scripts/build-pt-snowflake.sh ./scripts/build-pt-meek.sh ``` Make the Apple Silicon app bundle: ```sh /Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run python ./setup-freeze.py bdist_mac /Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run python ./scripts/build-macos.py cleanup-build ``` The Apple Silicon app bundle will be in `build` folder called `OnionShare.app`. Github Actions will build the Intel app bundle. Find the Github Actions `build` workflow, switch to the summary tab, and download the `mac-intel-build` artifact. Extract it, and you'll get the Intel `OnionShare.app` folder. Let's create some consistent directories for the next step: ```sh mkdir ~/tmp/intel mkdir ~/tmp/arm64 mkdir ~/tmp/universal ``` Now move the `build/OnionShare.app` into `~/tmp/arm64`, and extract the Intel .app from the Github Actions build artifact above, and move it into `~/tmp/intel`. Next, merge these two app bundles into a single universal2 app bundle: ```sh /Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run ./scripts/macos-merge-universal.py ~/tmp/intel/OnionShare.app ~/tmp/arm64/OnionShare.app ~/tmp/universal/OnionShare.app ``` You will need to have obtained a Developer ID Certificate from our Apple team account. The 'Development certificates' don't work for production-ready code-signing. Micah as the 'Account Holder' can request Developer ID certs, so you will need to provide him a CSR to do so. Refer to https://developer.apple.com/help/account/create-certificates/create-developer-id-certificates/ and https://developer.apple.com/help/account/create-certificates/create-a-certificate-signing-request/ . The private key will be in your keychain. Glenn can send you the cert once it's issued, and you should add that to your keychain too. Finally, code sign and package the universal2 app bundle. ```sh /Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run python ./scripts/build-macos.py codesign ~/tmp/universal/OnionShare.app /Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run python ./scripts/build-macos.py package ~/tmp/universal/OnionShare.app ``` The will create `dist/OnionShare-$VERSION.dmg` in the `desktop` directory that you're still cd'd into. Now, notarize the release. You will need an app-specific Apple ID password set up. You will also need to change the `--apple-id` to your Apple ID email. The team ID below, however, is consistent to all of us, it's the Lockdown Systems LLC ID. ```sh export APPLE_PASSWORD="changeme" # This must be an app-specific Apple ID password, not your main Apple ID password export APPLE_ID="you@example.com" export TEAM_ID="TEAMID" # You must update it to the Lockdown Systems team ID export VERSION=$(cat ../cli/onionshare_cli/resources/version.txt) # Notarize it xcrun notarytool submit --apple-id "$APPLE_ID" --team-id $TEAM_ID --password "$APPLE_PASSWORD" --progress --wait dist/OnionShare-$VERSION.dmg ``` If this is your first time notarizing with this Apple ID, it can take a very long time (like 9 hours), because Apple builds up a sort of 'signature' of your request and this kind of app. All subsequent notarizations (for future releases) should be much faster (a couple of minutes). ```sh # After it's approved, staple the ticket xcrun stapler staple dist/OnionShare-$VERSION.dmg ``` This will (re)create `desktop/dist/OnionShare-$VERSION.dmg`, signed and notarized. The dmg is now ready for release. ### Source package To make a source package, run `./build-source.sh $TAG`, where `$TAG` is the name of the signed git tag, e.g. `v2.1`. This will create `dist/onionshare-$VERSION.tar.gz`. ## Publishing the release ### PGP signatures After following all of the previous steps, gather these files: - `onionshare_${VERSION}_amd64.snap` - `OnionShare.flatpak` (rename to `OnionShare-$VERSION.flatpak`) - `OnionShare-win64-$VERSION.msi` - `OnionShare-$VERSION.dmg` - `onionshare-$VERSION.tar.gz` Create a PGP signature for each of these files, e.g: ```sh gpg -a --detach-sign OnionShare-$VERSION.tar.gz gpg -a --detach-sign [... and so on] ``` ### Create a release on GitHub: - Match it to the version tag, put the changelog in description of the release - Upload all 8 files (binary and source packages and their `.asc` signatures) ### Update onionshare-cli on PyPi ```sh cd cli poetry install poetry publish --build ``` ### Update Homebrew - Make a PR to [homebrew-cask](https://github.com/homebrew/homebrew-cask) to update the macOS version ### Update onionshare.org - Upload all 10 files to https://onionshare.org/dist/$VERSION/ - Update the [onionshare-website](https://github.com/micahflee/onionshare-website) repo: - Edit `latest-version.txt` to match the latest version - Update the version number and download links - Deploy to https://onionshare.org/ ### Update docs.onionshare.org - Upload everything from `docs/build/docs` to https://docs.onionshare.org/ ### Update the community - Blog, toot, etc. onionshare-onionshare-26fcdc5/build-source.sh000077500000000000000000000026551521174352300214670ustar00rootroot00000000000000#!/bin/bash # The script builds a source package # Usage display_usage() { echo "Usage: $0 [tag]" } if [ $# -lt 1 ] then display_usage exit 1 fi # Input validation TAG=$1 if [ "${TAG:0:1}" != "v" ] then echo "Tag must start with 'v' character" exit 1 fi VERSION=${TAG:1} # Make sure tag exists git tag | grep "^$TAG\$" if [ $? -ne 0 ] then echo "Tag does not exist" exit 1 fi # Clone source mkdir -p build/source mkdir -p dist cd build/source git clone --single-branch --branch $TAG --depth 1 https://github.com/onionshare/onionshare.git cd onionshare # Verify tag git tag -v $TAG 2> ../verify.txt if [ $? -ne 0 ] then echo "Tag does not verify" exit 1 fi cat ../verify.txt | grep -e "using RSA key 927F419D7EC82C2F149C1BD1403C2657CD994F73" -e "using RSA key 2E530667425F4B93874935707B7F1772C0C6FCBF" -e "using RSA key 3804565A5EFA6C11AFDA0E5359B3F0C24135C6A9" if [ $? -ne 0 ] then echo "Tag signed with wrong key" exit 1 fi cat ../verify.txt | grep "^gpg: Good signature from" if [ $? -ne 0 ] then echo "Tag verification missing 'Good signature from'" exit 1 fi # Checkout code git checkout $TAG # Delete .git, compress, and PGP sign cd .. rm -rf onionshare/.git tar -czf onionshare-$VERSION.tar.gz onionshare/ # Move source package to dist cd ../.. mv build/source/onionshare-$VERSION.tar.gz dist # Clean up rm -rf build/source/onionshare rm build/source/verify.txt echo "Source package complete, file in dist" onionshare-onionshare-26fcdc5/cli/000077500000000000000000000000001521174352300172725ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/README.md000066400000000000000000000056231521174352300205570ustar00rootroot00000000000000``` ╭───────────────────────────────────────────╮ │ * ▄▄█████▄▄ * │ │ ▄████▀▀▀████▄ * │ │ ▀▀█▀ ▀██▄ │ │ * ▄█▄ ▀██▄ │ │ ▄█████▄ ███ -+- │ │ ███ ▀█████▀ │ │ ▀██▄ ▀█▀ │ │ * ▀██▄ ▄█▄▄ * │ │ * ▀████▄▄▄████▀ │ │ ▀▀█████▀▀ │ │ -+- * │ │ ▄▀▄ ▄▀▀ █ │ │ █ █ ▀ ▀▄ █ │ │ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │ │ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │ │ │ │ https://onionshare.org/ │ ╰───────────────────────────────────────────╯ ``` ## Installing OnionShare CLI First, make sure you have `tor` and `python3` installed. In Linux, install it through your package manager. In macOS, install it with [Homebrew](https://brew.sh): `brew install tor`. Second, OnionShare is written in python, and you can install the command line version use python's package manager `pip`. ### Requirements Debian/Ubuntu (APT): ```sh sudo apt-get install tor python3-pip ``` Arch (Pacman): ```sh sudo pacman -S tor python-pip ``` CentOS, Red Hat, and Fedora (Yum): ```sh sudo yum install tor python3 python3-wheel ``` macOS (Homebrew): ```sh brew install tor python sudo easy_install pip ``` ### Main #### Installation Install OnionShare CLI: ```sh pip install --user onionshare-cli ``` #### Set path When you install programs with pip and use the `--user` flag, it installs them into *~/.local/bin*, which isn't in your path by default. To add *~/.local/bin* to your path automatically for the next time you reopen the terminal or source your shell configuration file, do the following: Apply the path to your shell file: ```sh printf "PATH=\$PATH:~/.local/bin\n" >> ~/.${SHELL##*/}rc . ~/.${SHELL##*/}rc ``` #### Usage Then run it with: ```sh onionshare-cli --help ``` ## Developing OnionShare CLI You must have python3 and [poetry](https://python-poetry.org/) installed. Install dependencies with poetry: ```sh poetry install ``` To run from the source tree: ```sh poetry run onionshare-cli ``` To run tests: ```sh poetry run pytest -v ./tests ``` onionshare-onionshare-26fcdc5/cli/onionshare_cli/000077500000000000000000000000001521174352300222665ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/onionshare_cli/__init__.py000066400000000000000000000473731521174352300244150ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os import sys import time import argparse import threading from datetime import datetime from datetime import timedelta from .common import Common, CannotFindTor from .web import Web from .onion import TorErrorProtocolError, TorTooOldEphemeral, TorTooOldStealth, Onion from .onionshare import OnionShare from .mode_settings import ModeSettings from qrcode import QRCode def main(cwd=None): """ The main() function implements all of the logic that the command-line version of onionshare uses. """ common = Common() common.display_banner() # OnionShare CLI in OSX needs to change current working directory (#132) if common.platform == "Darwin": if cwd: os.chdir(cwd) # Parse arguments parser = argparse.ArgumentParser( formatter_class=lambda prog: argparse.HelpFormatter(prog, max_help_position=28) ) # Select modes parser.add_argument( "--receive", action="store_true", dest="receive", help="Receive files" ) parser.add_argument( "--website", action="store_true", dest="website", help="Publish website" ) parser.add_argument( "--chat", action="store_true", dest="chat", help="Start chat server" ) # Tor connection-related args parser.add_argument( "--local-only", action="store_true", dest="local_only", default=False, help="Don't use Tor (only for development)", ) parser.add_argument( "--connect-timeout", metavar="SECONDS", dest="connect_timeout", default=120, help="Give up connecting to Tor after a given amount of seconds (default: 120)", ) parser.add_argument( "--config", metavar="FILENAME", default=None, help="Filename of custom global settings", ) # Persistent file parser.add_argument( "--persistent", metavar="FILENAME", default=None, help="Filename of persistent session", ) # General args parser.add_argument("--title", metavar="TITLE", default=None, help="Set a title") parser.add_argument( "--public", action="store_true", dest="public", default=False, help="Don't use a private key", ) parser.add_argument( "--auto-start-timer", metavar="SECONDS", dest="autostart_timer", default=0, help="Start onion service at scheduled time (N seconds from now)", ) parser.add_argument( "--auto-stop-timer", metavar="SECONDS", dest="autostop_timer", default=0, help="Stop onion service at schedule time (N seconds from now)", ) # Share args parser.add_argument( "--no-autostop-sharing", action="store_true", dest="no_autostop_sharing", default=False, help="Share files: Continue sharing after files have been sent (default is to stop sharing)", ) parser.add_argument( "--log-filenames", action="store_true", dest="log_filenames", default=False, help="Log file download activity to stdout", ) parser.add_argument( "--qr", action="store_true", dest="qr", default=False, help="Display a QR code in the terminal for share links", ) # Receive args parser.add_argument( "--data-dir", metavar="data_dir", default=None, help="Receive files: Save files received to this directory", ) parser.add_argument( "--webhook-url", metavar="webhook_url", default=None, help="Receive files: URL to receive webhook notifications", ) parser.add_argument( "--disable-text", action="store_true", dest="disable_text", help="Receive files: Disable receiving text messages", ) parser.add_argument( "--disable-files", action="store_true", dest="disable_files", help="Receive files: Disable receiving files", ) # Website args parser.add_argument( "--disable_csp", action="store_true", dest="disable_csp", default=False, help="Publish website: Disable the default Content Security Policy header (allows your website to use third-party resources)", ) parser.add_argument( "--custom_csp", metavar="custom_csp", default=None, help="Publish website: Set a custom Content Security Policy header", ) # Other parser.add_argument( "-v", "--verbose", action="store_true", dest="verbose", help="Log OnionShare errors to stdout, and web errors to disk", ) parser.add_argument( "filename", metavar="filename", nargs="*", help="List of files or folders to share", ) args = parser.parse_args() filenames = args.filename for i in range(len(filenames)): filenames[i] = os.path.abspath(filenames[i]) receive = bool(args.receive) website = bool(args.website) chat = bool(args.chat) local_only = bool(args.local_only) connect_timeout = int(args.connect_timeout) config_filename = args.config persistent_filename = args.persistent title = args.title public = bool(args.public) autostart_timer = int(args.autostart_timer) autostop_timer = int(args.autostop_timer) autostop_sharing = not bool(args.no_autostop_sharing) print_qr = bool(args.qr) data_dir = args.data_dir webhook_url = args.webhook_url disable_text = args.disable_text disable_files = args.disable_files disable_csp = bool(args.disable_csp) custom_csp = args.custom_csp log_filenames = bool(args.log_filenames) verbose = bool(args.verbose) # Verbose mode? common.verbose = verbose # Re-load settings, if a custom config was passed in if config_filename: common.load_settings(config_filename) else: common.load_settings() # Mode settings if persistent_filename: mode_settings = ModeSettings(common, persistent_filename) mode_settings.set("persistent", "enabled", True) else: mode_settings = ModeSettings(common) if receive: mode = "receive" elif website: mode = "website" elif chat: mode = "chat" else: mode = "share" if mode_settings.just_created: # This means the mode settings were just created, not loaded from disk mode_settings.set("general", "title", title) mode_settings.set("general", "public", public) mode_settings.set("general", "autostart_timer", autostart_timer) mode_settings.set("general", "autostop_timer", autostop_timer) mode_settings.set("general", "qr", print_qr) if persistent_filename: mode_settings.set("persistent", "mode", mode) if mode == "share": mode_settings.set("share", "autostop_sharing", autostop_sharing) mode_settings.set("share", "log_filenames", log_filenames) if mode == "receive": if data_dir: mode_settings.set("receive", "data_dir", data_dir) if webhook_url: mode_settings.set("receive", "webhook_url", webhook_url) mode_settings.set("receive", "disable_text", disable_text) mode_settings.set("receive", "disable_files", disable_files) if mode == "website": if disable_csp and custom_csp: print( "You cannot disable the CSP and set a custom one. Either set --disable-csp or --custom-csp but not both." ) sys.exit() if disable_csp: mode_settings.set("website", "disable_csp", True) mode_settings.set("website", "custom_csp", None) if custom_csp: mode_settings.set("website", "custom_csp", custom_csp) mode_settings.set("website", "disable_csp", False) mode_settings.set("website", "log_filenames", log_filenames) else: # See what the persistent mode was mode = mode_settings.get("persistent", "mode") # In share and website mode, you must supply a list of filenames if mode == "share" or mode == "website": # Unless you passed in a persistent filename, in which case get the filenames from # the mode settings if persistent_filename and not mode_settings.just_created: # The assumption is that if we didn't just create the mode settings, # this persistent json file already has validated the filenames # defined therein. filenames = mode_settings.get(mode, "filenames") else: # Make sure filenames given. If it is somehow empty yet we had a persistent # json file, something has gone wrong with that file, just remove it. if len(filenames) == 0: if persistent_filename: mode_settings.delete() print("No file(s) were provided") parser.print_help() sys.exit() # Validate filenames valid = True for filename in filenames: if not os.path.isfile(filename) and not os.path.isdir(filename): print(f"{filename} is not a valid file.") valid = False if not os.access(filename, os.R_OK): print(f"{filename} is not a readable file.") valid = False if not valid: sys.exit() # Save the filenames in persistent file if persistent_filename: mode_settings.set(mode, "filenames", filenames) # In receive mode, you must allows either text, files, or both if mode == "receive" and disable_text and disable_files: print("You cannot disable both text and files") sys.exit() # Create the Web object web = Web(common, False, mode_settings, mode) # Start the Onion object try: onion = Onion(common, use_tmp_dir=True) except CannotFindTor: print("You must install tor to use OnionShare from the command line") if common.platform == "Darwin": print("In macOS, you can do this with Homebrew (https://brew.sh):") print(" brew install tor") sys.exit() try: onion.connect( custom_settings=False, config=config_filename, connect_timeout=connect_timeout, local_only=local_only, ) except KeyboardInterrupt: print("") sys.exit() except Exception: sys.exit() # Start the onionshare app try: common.settings.load() # Receive mode needs to know the tor proxy details for webhooks if mode == "receive": if local_only: web.proxies = None else: (socks_address, socks_port) = onion.get_tor_socks_port() web.proxies = { "http": f"socks5h://{socks_address}:{socks_port}", "https": f"socks5h://{socks_address}:{socks_port}", } app = OnionShare(common, onion, local_only, autostop_timer) app.choose_port() # Delay the startup if a startup timer was set if autostart_timer > 0: # Can't set a schedule that is later than the auto-stop timer if autostop_timer > 0 and autostop_timer < autostart_timer: print( "The auto-stop time can't be the same or earlier than the auto-start time. Please update it to start sharing." ) sys.exit() app.start_onion_service(mode, mode_settings, False) url = f"http://{app.onion_host}" schedule = datetime.now() + timedelta(seconds=autostart_timer) if mode == "receive": print( f"Files sent to you appear in this folder: {mode_settings.get('receive', 'data_dir')}" ) print("") print( "Warning: Receive mode lets people upload files to your computer. Some files can potentially take " "control of your computer if you open them. Only open things from people you trust, or if you know " "what you are doing." ) print("") if not mode_settings.get("general", "public"): print( f"Give this address and private key to your sender, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}" ) print(f"Private key: {app.auth_string}") else: print( f"Give this address to your sender, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}" ) else: if not mode_settings.get("general", "public"): print( f"Give this address and private key to your recipient, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}" ) print(f"Private key: {app.auth_string}") else: print( f"Give this address to your recipient, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}" ) print(url) if mode_settings.get("general", "qr"): qr = QRCode() qr.add_data(url) print("Onion address as QR code:") qr.print_ascii() if not mode_settings.get("general", "public"): qr.clear() qr.add_data(app.auth_string) print("Private key as QR code:") qr.print_ascii() print("") print("Waiting for the scheduled time before starting...") app.onion.cleanup(False) time.sleep(autostart_timer) app.start_onion_service(mode, mode_settings) else: app.start_onion_service(mode, mode_settings) except KeyboardInterrupt: print("") sys.exit() except (TorTooOldEphemeral, TorTooOldStealth, TorErrorProtocolError) as e: print("") sys.exit() if mode == "website": # Prepare files to share try: web.website_mode.set_file_info(filenames) except OSError as e: print(e.strerror) sys.exit(1) if mode == "share": # Prepare files to share print("Compressing files.") try: web.share_mode.set_file_info(filenames) except OSError as e: print(e.strerror) sys.exit(1) # Warn about sending large files over Tor if web.share_mode.download_filesize >= 157_286_400: # 150mb print("") print("Warning: Sending a large share could take hours") print("") # Start OnionShare http service in new thread t = threading.Thread(target=web.start, args=(app.port,)) t.daemon = True t.start() try: # Trap Ctrl-C time.sleep(0.2) # start auto-stop timer thread if app.autostop_timer > 0: app.autostop_timer_thread.start() # Build the URL url = f"http://{app.onion_host}" print("") if autostart_timer > 0: print("Server started") else: if mode == "receive": print( f"Files sent to you appear in this folder: {mode_settings.get('receive', 'data_dir')}" ) print("") print( "Warning: Receive mode lets people upload files to your computer. Some files can potentially take " "control of your computer if you open them. Only open things from people you trust, or if you know " "what you are doing." ) print("") if mode_settings.get("general", "public"): print("Give this address to the sender:") print(url) else: print("Give this address and private key to the sender:") print(url) print(f"Private key: {app.auth_string}") else: if mode_settings.get("general", "public"): print("Give this address to the recipient:") print(url) else: print("Give this address and private key to the recipient:") print(url) print(f"Private key: {app.auth_string}") if mode_settings.get("general", "qr"): qr = QRCode() qr.add_data(url) print("Onion address as QR code:") qr.print_ascii() if not mode_settings.get("general", "public"): qr.clear() qr.add_data(app.auth_string) print("Private key as QR code:") qr.print_ascii() print("") print("Press Ctrl+C to stop the server") # Wait for app to close while t.is_alive(): if app.autostop_timer > 0: # if the auto-stop timer was set and has run out, stop the server if not app.autostop_timer_thread.is_alive(): if mode == "share": # If there were no attempts to download the share, or all downloads are done, we can stop if ( not web.share_mode.download_in_progress or web.share_mode.cur_history_id == 0 or web.done ): print("Stopped because auto-stop timer ran out") web.stop(app.port) break elif mode == "receive": if ( web.receive_mode.cur_history_id == 0 or not web.receive_mode.uploads_in_progress ): print("Stopped because auto-stop timer ran out") web.stop(app.port) break web.receive_mode.can_upload = False else: # website or chat mode print("Stopped because auto-stop timer ran out") web.stop(app.port) break # Allow KeyboardInterrupt exception to be handled with threads # https://stackoverflow.com/questions/3788208/python-threading-ignores-keyboardinterrupt-exception time.sleep(0.2) except KeyboardInterrupt: web.stop(app.port) finally: # Shutdown web.cleanup() t.join() onion.cleanup() if __name__ == "__main__": main() onionshare-onionshare-26fcdc5/cli/onionshare_cli/censorship.py000066400000000000000000000254251521174352300250250ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import requests class CensorshipCircumventionError(Exception): """ There was a problem connecting to the Tor CensorshipCircumvention API. """ class CensorshipCircumvention(object): """ Connect to the Tor Moat APIs to retrieve censorship circumvention recommendations or the latest bridges. We support reaching this API over Tor, or Meek (domain fronting) if Tor is not connected. """ def __init__(self, common, meek=None, onion=None): """ Set up the CensorshipCircumvention object to hold common and meek objects. """ self.common = common self.common.log("CensorshipCircumvention", "__init__") self.api_proxies = {} if meek: self.meek = meek self.common.log( "CensorshipCircumvention", "__init__", "Using Meek with CensorshipCircumvention API", ) self.api_proxies = self.meek.meek_proxies if onion: self.onion = onion if not self.onion.is_authenticated: return False else: self.common.log( "CensorshipCircumvention", "__init__", "Using Tor with CensorshipCircumvention API", ) (socks_address, socks_port) = self.onion.get_tor_socks_port() self.api_proxies = { "http": f"socks5h://{socks_address}:{socks_port}", "https": f"socks5h://{socks_address}:{socks_port}", } def request_map(self, country=False): """ Retrieves the Circumvention map from Tor Project and store it locally for further look-ups if required. Optionally pass a country code in order to get recommended settings just for that country. Note that this API endpoint doesn't return actual bridges, it just returns the recommended bridge type countries. """ self.common.log("CensorshipCircumvention", "request_map", f"country={country}") if not self.api_proxies: return False endpoint = "https://bridges.torproject.org/moat/circumvention/map" data = {} if country: data = {"country": country} try: r = requests.post( endpoint, json=data, headers={"Content-Type": "application/vnd.api+json"}, proxies=self.api_proxies, ) if r.status_code != 200: self.common.log( "CensorshipCircumvention", "request_map", f"status_code={r.status_code}", ) return False result = r.json() if "errors" in result: self.common.log( "CensorshipCircumvention", "request_map", f"errors={result['errors']}", ) return False return result except requests.exceptions.RequestException as e: raise CensorshipCircumventionError(e) def request_settings(self, country=False, transports=False): """ Retrieves the Circumvention Settings from Tor Project, which will return recommended settings based on the country code of the requesting IP. Optionally, a country code can be specified in order to override the IP detection. Optionally, a list of transports can be specified in order to return recommended settings for just that transport type. """ self.common.log( "CensorshipCircumvention", "request_settings", f"country={country}, transports={transports}", ) if not self.api_proxies: return False endpoint = "https://bridges.torproject.org/moat/circumvention/settings" data = {} if country: self.common.log( "CensorshipCircumvention", "request_settings", f"Trying to obtain bridges for country={country}", ) data = {"country": country} if transports: data.append({"transports": transports}) try: r = requests.post( endpoint, json=data, headers={"Content-Type": "application/vnd.api+json"}, proxies=self.api_proxies, ) if r.status_code != 200: self.common.log( "CensorshipCircumvention", "request_settings", f"status_code={r.status_code}", ) return False result = r.json() self.common.log( "CensorshipCircumvention", "request_settings", f"result={result}", ) if "errors" in result: self.common.log( "CensorshipCircumvention", "request_settings", f"errors={result['errors']}", ) return False # There are no settings - perhaps this country doesn't require censorship circumvention? # This is not really an error, so we can just check if False and assume direct Tor # connection will work. if not "settings" in result or result["settings"] is None: self.common.log( "CensorshipCircumvention", "request_settings", "No settings found for this country", ) return False return result except requests.exceptions.RequestException as e: raise CensorshipCircumventionError(e) def request_builtin_bridges(self): """ Retrieves the list of built-in bridges from the Tor Project. """ if not self.api_proxies: return False endpoint = "https://bridges.torproject.org/moat/circumvention/builtin" try: r = requests.post( endpoint, headers={"Content-Type": "application/vnd.api+json"}, proxies=self.api_proxies, ) if r.status_code != 200: self.common.log( "CensorshipCircumvention", "request_builtin_bridges", f"status_code={r.status_code}", ) return False result = r.json() if "errors" in result: self.common.log( "CensorshipCircumvention", "request_builtin_bridges", f"errors={result['errors']}", ) return False return result except requests.exceptions.RequestException as e: raise CensorshipCircumventionError(e) def save_settings(self, settings, bridge_settings): """ Checks the bridges and saves them in settings. """ self.common.log( "CensorshipCircumvention", "save_settings", f"bridge_settings: {bridge_settings}", ) bridges_ok = False self.settings = settings # We iterate over each group of bridges returned in settings. # The first set of valid bridges are the ones we use. if bridge_settings.get("settings", False): for returned_bridge_settings in bridge_settings["settings"]: if returned_bridge_settings.get("bridges", False): bridges = returned_bridge_settings["bridges"] bridge_strings = bridges["bridge_strings"] self.settings.set("bridges_type", "custom") # Sanity check the bridges provided from the Tor API before saving bridges_checked = self.common.check_bridges_valid(bridge_strings) if bridges_checked: self.settings.set("bridges_custom", "\n".join(bridges_checked)) bridges_ok = True break # If we got any good bridges, save them to settings and return. if bridges_ok: self.common.log( "CensorshipCircumvention", "save_settings", "Saving settings with automatically-obtained bridges", ) self.settings.set("bridges_enabled", True) self.settings.save() return True else: self.common.log( "CensorshipCircumvention", "save_settings", "Could not use any of the obtained bridges.", ) return False def request_default_bridges(self): """ Retrieves the list of default fall-back bridges from the Tor Project. These are intended for when no censorship settings were found for a specific country, but maybe there was some connection issue anyway. """ if not self.api_proxies: return False endpoint = "https://bridges.torproject.org/moat/circumvention/defaults" try: r = requests.get( endpoint, headers={"Content-Type": "application/vnd.api+json"}, proxies=self.api_proxies, ) if r.status_code != 200: self.common.log( "CensorshipCircumvention", "request_default_bridges", f"status_code={r.status_code}", ) return False result = r.json() if "errors" in result: self.common.log( "CensorshipCircumvention", "request_default_bridges", f"errors={result['errors']}", ) return False return result except requests.exceptions.RequestException as e: raise CensorshipCircumventionError(e) onionshare-onionshare-26fcdc5/cli/onionshare_cli/common.py000066400000000000000000000563501521174352300241410ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import base64 import hashlib import importlib.resources as importlib_resources import os import platform import random import requests import socket import sys import threading import time import shutil import re import colorama from colorama import Fore, Back, Style from .settings import Settings class CannotFindTor(Exception): """ OnionShare can't find a tor binary """ class Common: """ The Common object is shared amongst all parts of OnionShare. """ def __init__(self, verbose=False): self.verbose = verbose colorama.init(autoreset=True) # The platform OnionShare is running on self.platform = platform.system() if self.platform.endswith("BSD") or self.platform == "DragonFly": self.platform = "BSD" # The current version of OnionShare with open(self.get_resource_path("version.txt")) as f: self.version = f.read().strip() def display_banner(self): """ Raw ASCII art example: ╭───────────────────────────────────────────╮ │ * ▄▄█████▄▄ * │ │ ▄████▀▀▀████▄ * │ │ ▀▀█▀ ▀██▄ │ │ * ▄█▄ ▀██▄ │ │ ▄█████▄ ███ -+- │ │ ███ ▀█████▀ │ │ ▀██▄ ▀█▀ │ │ * ▀██▄ ▄█▄▄ * │ │ * ▀████▄▄▄████▀ │ │ ▀▀█████▀▀ │ │ -+- * │ │ ▄▀▄ ▄▀▀ █ │ │ █ █ ▀ ▀▄ █ │ │ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │ │ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │ │ │ │ v2.3.1 │ │ │ │ https://onionshare.org/ │ ╰───────────────────────────────────────────╯ """ try: print( Back.MAGENTA + Fore.WHITE + "╭───────────────────────────────────────────╮" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.LIGHTMAGENTA_EX + " * " + Fore.WHITE + "▄▄█████▄▄" + Fore.LIGHTMAGENTA_EX + " * " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " ▄████▀▀▀████▄" + Fore.LIGHTMAGENTA_EX + " * " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " ▀▀█▀ ▀██▄ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.LIGHTMAGENTA_EX + " * " + Fore.WHITE + "▄█▄ ▀██▄ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " ▄█████▄ ███" + Fore.LIGHTMAGENTA_EX + " -+- " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " ███ ▀█████▀ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " ▀██▄ ▀█▀ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.LIGHTMAGENTA_EX + " * " + Fore.WHITE + "▀██▄ ▄█▄▄" + Fore.LIGHTMAGENTA_EX + " * " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.LIGHTMAGENTA_EX + " * " + Fore.WHITE + "▀████▄▄▄████▀ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " ▀▀█████▀▀ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.LIGHTMAGENTA_EX + " -+- * " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " ▄▀▄ ▄▀▀ █ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " █ █ ▀ ▀▄ █ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│ │" ) left_spaces = (43 - len(self.version) - 1) // 2 right_spaces = left_spaces if left_spaces + len(self.version) + 1 + right_spaces < 43: right_spaces += 1 print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + f"{' '*left_spaces}v{self.version}{' '*right_spaces}" + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "│ │" ) print( Back.MAGENTA + Fore.WHITE + "│" + Fore.WHITE + " https://onionshare.org/ " + Fore.WHITE + "│" ) print( Back.MAGENTA + Fore.WHITE + "╰───────────────────────────────────────────╯" ) print() except: # If anything fails, print a boring banner print(f"OnionShare v{self.version}") print("https://onionshare.org/") print() def load_settings(self, config=None): """ Loading settings, optionally from a custom config json file. """ self.settings = Settings(self, config) self.settings.load() def log(self, module, func, msg=None): """ If verbose mode is on, log error messages to stdout """ if self.verbose: timestamp = time.strftime("%b %d %Y %X") final_msg = f"{Fore.LIGHTBLACK_EX + Style.DIM}[{timestamp}]{Style.RESET_ALL} {Fore.WHITE + Style.DIM}{module}.{func}{Style.RESET_ALL}" if msg: final_msg = ( f"{final_msg}{Fore.WHITE + Style.DIM}: {msg}{Style.RESET_ALL}" ) print(final_msg) def get_resource_path(self, filename): """ Returns the absolute path of a resource """ ref = importlib_resources.files("onionshare_cli.resources") / filename with importlib_resources.as_file(ref) as path: self.log("Common", "get_resource_path", f"filename={filename}, path={str(path)}") return str(path) def get_tor_paths(self): if self.platform == "Linux": tor_path = shutil.which("tor") if not tor_path: raise CannotFindTor() obfs4proxy_file_path = shutil.which("obfs4proxy") snowflake_file_path = shutil.which("snowflake-client") meek_client_file_path = shutil.which("meek-client") prefix = os.path.dirname(os.path.dirname(tor_path)) tor_geo_ip_file_path = os.path.join(prefix, "share/tor/geoip") tor_geo_ipv6_file_path = os.path.join(prefix, "share/tor/geoip6") elif self.platform == "Windows": # In Windows, the Tor binaries are in the onionshare package, not the onionshare_cli package base_path = self.get_resource_path("tor") base_path = base_path.replace("onionshare_cli", "onionshare") tor_path = os.path.join(base_path, "tor.exe") # If tor.exe isn't there, mayber we're running from the source tree if not os.path.exists(tor_path): self.log( "Common", "get_tor_paths", f"Cannot find tor.exe at {tor_path}" ) base_path = os.path.join(os.getcwd(), "onionshare", "resources", "tor") tor_path = os.path.join(base_path, "tor.exe") if not os.path.exists(tor_path): self.log( "Common", "get_tor_paths", f"Cannot find tor.exe at {tor_path}" ) raise CannotFindTor() obfs4proxy_file_path = os.path.join(base_path, "obfs4proxy.exe") snowflake_file_path = os.path.join(base_path, "snowflake-client.exe") meek_client_file_path = os.path.join(base_path, "meek-client.exe") tor_geo_ip_file_path = os.path.join(base_path, "geoip") tor_geo_ipv6_file_path = os.path.join(base_path, "geoip6") elif self.platform == "Darwin": # Let's see if we have tor binaries in the onionshare GUI package base_path = self.get_resource_path("tor") base_path = base_path.replace("onionshare_cli", "onionshare") tor_path = os.path.join(base_path, "tor") if os.path.exists(tor_path): obfs4proxy_file_path = os.path.join(base_path, "obfs4proxy") snowflake_file_path = os.path.join(base_path, "snowflake-client") meek_client_file_path = os.path.join(base_path, "meek-client") tor_geo_ip_file_path = os.path.join(base_path, "geoip") tor_geo_ipv6_file_path = os.path.join(base_path, "geoip6") else: # Fallback to looking in the path tor_path = shutil.which("tor") if not os.path.exists(tor_path): raise CannotFindTor() obfs4proxy_file_path = shutil.which("obfs4proxy") snowflake_file_path = shutil.which("snowflake-client") meek_client_file_path = shutil.which("meek-client") prefix = os.path.dirname(os.path.dirname(tor_path)) tor_geo_ip_file_path = os.path.join(prefix, "share/tor/geoip") tor_geo_ipv6_file_path = os.path.join(prefix, "share/tor/geoip6") elif self.platform == "BSD": tor_path = "/usr/local/bin/tor" tor_geo_ip_file_path = "/usr/local/share/tor/geoip" tor_geo_ipv6_file_path = "/usr/local/share/tor/geoip6" obfs4proxy_file_path = "/usr/local/bin/obfs4proxy" snowflake_file_path = "/usr/local/bin/snowflake-client" meek_client_file_path = "/usr/local/bin/meek-client" return ( tor_path, tor_geo_ip_file_path, tor_geo_ipv6_file_path, obfs4proxy_file_path, snowflake_file_path, meek_client_file_path, ) def build_data_dir(self): """ Returns the path of the OnionShare data directory. """ if self.platform == "Windows": try: appdata = os.environ["APPDATA"] onionshare_data_dir = f"{appdata}\\OnionShare" except Exception: # If for some reason we don't have the 'APPDATA' environment variable # (like running tests in Linux while pretending to be in Windows) try: xdg_config_home = os.environ["XDG_CONFIG_HOME"] onionshare_data_dir = f"{xdg_config_home}/onionshare" except Exception: onionshare_data_dir = os.path.expanduser("~/.config/onionshare") elif self.platform == "Darwin": onionshare_data_dir = os.path.expanduser( "~/Library/Application Support/OnionShare" ) else: try: xdg_config_home = os.environ["XDG_CONFIG_HOME"] onionshare_data_dir = f"{xdg_config_home}/onionshare" except Exception: onionshare_data_dir = os.path.expanduser("~/.config/onionshare") # Modify the data dir if running tests if getattr(sys, "onionshare_test_mode", False): onionshare_data_dir += "-testdata" os.makedirs(onionshare_data_dir, 0o700, True) return onionshare_data_dir def build_tmp_dir(self): """ Returns path to a folder that can hold temporary files """ tmp_dir = os.path.join(self.build_data_dir(), "tmp") os.makedirs(tmp_dir, 0o700, True) return tmp_dir def build_persistent_dir(self): """ Returns the path to the folder that holds persistent files """ persistent_dir = os.path.join(self.build_data_dir(), "persistent") os.makedirs(persistent_dir, 0o700, True) return persistent_dir def build_tor_dir(self): """ Returns path to the tor data directory """ tor_dir = os.path.join(self.build_data_dir(), "tor_data") os.makedirs(tor_dir, 0o700, True) return tor_dir def build_password(self, word_count=2): """ Returns a random string made of words from the wordlist, such as "deter-trig". """ with open(self.get_resource_path("wordlist.txt")) as f: wordlist = f.read().split() r = random.SystemRandom() return "-".join(r.choice(wordlist) for _ in range(word_count)) def build_username(self, word_count=2): """ Returns a random string made of words from the wordlist, such as "deter-trig". """ with open(self.get_resource_path("wordlist.txt")) as f: wordlist = f.read().split() r = random.SystemRandom() return "-".join(r.choice(wordlist) for _ in range(word_count)) def check_bridges_valid(self, bridges): """ Does a regex check against a supplied list of bridges, to make sure they are valid strings depending on the bridge type. """ valid_bridges = [] self.log("Common", "check_bridges_valid", "Checking bridge syntax") for bridge in bridges: if bridge != "": # Check the syntax of the custom bridge to make sure it looks legitimate ipv4_pattern = re.compile( r"(obfs4\s+)?(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):([0-9]+)(\s+)([A-Z0-9]+)(.+)$" ) ipv6_pattern = re.compile( r"(obfs4\s+)?\[(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\]:[0-9]+\s+[A-Z0-9]+(.+)$" ) meek_lite_pattern = re.compile( r"(meek_lite)(\s)+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+)(\s)+([0-9A-Z]+)(\s)+url=(.+)(\s)+front=(.+)" ) snowflake_pattern = re.compile( r"(snowflake)(\s)+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+)(\s)+([0-9A-Z]+)" ) if ( ipv4_pattern.match(bridge) or ipv6_pattern.match(bridge) or meek_lite_pattern.match(bridge) or snowflake_pattern.match(bridge) ): valid_bridges.append(bridge) if valid_bridges: return valid_bridges else: return False def is_flatpak(self): """ Returns True if OnionShare is running in a Flatpak sandbox """ return os.environ.get("FLATPAK_ID") == "org.onionshare.OnionShare" def is_snapcraft(self): """ Returns True if OnionShare is running in a Snapcraft sandbox """ return os.environ.get("SNAP_INSTANCE_NAME") == "onionshare" @staticmethod def random_string(num_bytes, output_len=None): """ Returns a random string with a specified number of bytes. """ b = os.urandom(num_bytes) h = hashlib.sha256(b).digest()[:16] s = base64.b32encode(h).lower().replace(b"=", b"").decode("utf-8") if not output_len: return s return s[:output_len] @staticmethod def human_readable_filesize(b): """ Returns filesize in a human readable format. """ thresh = 1024.0 if b < thresh: return "{:.1f} B".format(b) units = ("KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB") u = 0 b /= thresh while b >= thresh: b /= thresh u += 1 return "{:.1f} {}".format(b, units[u]) @staticmethod def format_seconds(seconds): """Return a human-readable string of the format 1d2h3m4s""" days, seconds = divmod(seconds, 86400) hours, seconds = divmod(seconds, 3600) minutes, seconds = divmod(seconds, 60) human_readable = [] if days: human_readable.append("{:.0f}d".format(days)) if hours: human_readable.append("{:.0f}h".format(hours)) if minutes: human_readable.append("{:.0f}m".format(minutes)) if seconds or not human_readable: human_readable.append("{:.0f}s".format(seconds)) return "".join(human_readable) @staticmethod def estimated_time_remaining(bytes_downloaded, total_bytes, started): now = time.time() time_elapsed = now - started # in seconds download_rate = bytes_downloaded / time_elapsed remaining_bytes = total_bytes - bytes_downloaded eta = remaining_bytes / download_rate return Common.format_seconds(eta) @staticmethod def get_available_port(min_port, max_port): """ Find a random available port within the given range. """ with socket.socket() as tmpsock: while True: try: tmpsock.bind(("127.0.0.1", random.randint(min_port, max_port))) break except OSError: pass _, port = tmpsock.getsockname() return port @staticmethod def dir_size(start_path): """ Calculates the total size, in bytes, of all of the files in a directory. """ total_size = 0 for dirpath, dirnames, filenames in os.walk(start_path): for f in filenames: fp = os.path.join(dirpath, f) if not os.path.islink(fp): total_size += os.path.getsize(fp) return total_size class AutoStopTimer(threading.Thread): """ Background thread sleeps t hours and returns. """ def __init__(self, common, time): threading.Thread.__init__(self) self.common = common self.daemon = True self.time = time def run(self): self.common.log( "AutoStopTimer", f"Server will shut down after {self.time} seconds" ) time.sleep(self.time) return 1 onionshare-onionshare-26fcdc5/cli/onionshare_cli/meek.py000066400000000000000000000150511521174352300235630ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os import subprocess import time class Meek(object): """ The Meek object starts the meek-client as a subprocess. This process is used to do domain-fronting to connect to the Tor APIs for censorship circumvention and retrieving bridges, before connecting to Tor. """ def __init__(self, common, get_tor_paths=None): """ Set up the Meek object """ self.common = common self.common.log("Meek", "__init__") # Set the path of the meek binary if not get_tor_paths: get_tor_paths = self.common.get_tor_paths ( self.tor_path, self.tor_geo_ip_file_path, self.tor_geo_ipv6_file_path, self.obfs4proxy_file_path, self.snowflake_file_path, self.meek_client_file_path, ) = get_tor_paths() self.meek_proxies = {} self.meek_url = "https://1723079976.rsc.cdn77.org/" self.meek_front = "www.phpmyadmin.net" self.meek_env = { "TOR_PT_MANAGED_TRANSPORT_VER": "1", "TOR_PT_CLIENT_TRANSPORTS": "meek", } self.meek_host = "127.0.0.1" self.meek_port = None def start(self): """ Start the Meek Client and populate the SOCKS proxies dict for use with requests to the Tor Moat API. """ # Abort early if we can't find the Meek client if self.meek_client_file_path is None or not os.path.exists( self.meek_client_file_path ): raise MeekNotFound(self.common) # Start the Meek Client as a subprocess. self.common.log("Meek", "start", "Starting meek client") if self.common.platform == "Windows": env = os.environ.copy() for key in self.meek_env: env[key] = self.meek_env[key] # In Windows, hide console window when opening meek-client.exe subprocess startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW self.meek_proc = subprocess.Popen( [ self.meek_client_file_path, "--url", self.meek_url, "--front", self.meek_front, ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, startupinfo=startupinfo, bufsize=1, env=env, text=True, ) else: self.meek_proc = subprocess.Popen( [ self.meek_client_file_path, "--url", self.meek_url, "--front", self.meek_front, ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=1, env=self.meek_env, # Using universal_newlines instead of text because the snap package using python < 3.7 universal_newlines=True, ) # Obtain the host and port that meek is running on for line in iter(self.meek_proc.stdout.readline, b""): if "CMETHOD meek socks5" in line: self.meek_host = line.split(" ")[3].split(":")[0] self.meek_port = line.split(" ")[3].split(":")[1] self.common.log( "Meek", "start", f"Meek running on {self.meek_host}:{self.meek_port}", ) break if "CMETHOD-ERROR" in line: self.cleanup() raise MeekNotRunning(self.common, line) break if self.meek_port: self.meek_proxies = { "http": f"socks5h://{self.meek_host}:{self.meek_port}", "https": f"socks5h://{self.meek_host}:{self.meek_port}", } else: self.cleanup() raise MeekNotRunning(self.common, "Could not obtain the meek port") def cleanup(self): """ Kill any meek subprocesses. """ self.common.log("Meek", "cleanup") if self.meek_proc: self.meek_proc.terminate() time.sleep(0.2) if self.meek_proc.poll() is None: self.common.log( "Meek", "cleanup", "Tried to terminate meek-client process but it's still running", ) try: self.meek_proc.kill() time.sleep(0.2) if self.meek_proc.poll() is None: self.common.log( "Meek", "cleanup", "Tried to kill meek-client process but it's still running", ) except Exception: self.common.log( "Meek", "cleanup", "Exception while killing meek-client process" ) self.meek_proc = None # Reset other Meek settings self.meek_proxies = {} self.meek_port = None class MeekNotRunning(Exception): """ We were unable to start Meek or obtain the port number it started on, in order to do domain fronting. """ def __init__(self, common, info=None): self.common = common msg = "Meek experienced an error starting up" if info: msg = msg + f": {info}" self.common.log("MeekNotRunning", "__init__", msg) class MeekNotFound(Exception): """ We were unable to find the Meek Client binary. """ def __init__(self, common): self.common = common self.common.log("MeekNotFound", "__init__", "Could not find the meek binary") onionshare-onionshare-26fcdc5/cli/onionshare_cli/mode_settings.py000066400000000000000000000126661521174352300255170ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os import json import platform if platform.system() == "Darwin": import pwd class ModeSettings: """ This stores the settings for a single instance of an OnionShare mode. In CLI there is only one ModeSettings, and in the GUI there is a separate ModeSettings for each tab """ def __init__(self, common, filename=None, id=None): self.common = common self.default_settings = { "onion": { "private_key": None, "client_auth_priv_key": None, "client_auth_pub_key": None, }, "persistent": { "mode": None, "enabled": False, "autostart_on_launch": False }, "general": { "title": None, "public": False, "autostart_timer": False, "autostop_timer": False, "service_id": None, "qr": False }, "share": { "autostop_sharing": True, "filenames": [], "log_filenames": False, }, "receive": { "data_dir": self.build_default_receive_data_dir(), "webhook_url": None, "disable_text": False, "disable_files": False, }, "website": { "disable_csp": False, "custom_csp": None, "log_filenames": False, "filenames": [] }, "chat": {}, } self._settings = {} self.just_created = False if id: self.id = id else: self.id = self.common.build_password(3) self.load(filename) def fill_in_defaults(self): """ If there are any missing settings from self._settings, replace them with their default values. """ for key in self.default_settings: if key in self._settings: for inner_key in self.default_settings[key]: if inner_key not in self._settings[key]: self._settings[key][inner_key] = self.default_settings[key][ inner_key ] else: self._settings[key] = self.default_settings[key] def get(self, group, key): return self._settings[group][key] def set(self, group, key, val): self._settings[group][key] = val self.common.log( "ModeSettings", "set", f"updating {self.id}: {group}.{key} = {val}" ) self.save() def build_default_receive_data_dir(self): """ Returns the path of the default Downloads directory for receive mode. """ if self.common.platform == "Darwin": # We can't use os.path.expanduser() in macOS because in the sandbox it # returns the path to the sandboxed homedir real_homedir = pwd.getpwuid(os.getuid()).pw_dir return os.path.join(real_homedir, "OnionShare") elif self.common.platform == "Windows": # On Windows, os.path.expanduser() needs to use backslash, or else it # retains the forward slash, which breaks opening the folder in explorer. return os.path.expanduser("~\\OnionShare") else: # All other OSes return os.path.expanduser("~/OnionShare") def load(self, filename=None): # Load persistent settings from disk. If the file doesn't exist, create it if filename: self.filename = filename else: self.filename = os.path.join( self.common.build_persistent_dir(), f"{self.id}.json" ) if os.path.exists(self.filename): try: with open(self.filename, "r") as f: self._settings = json.load(f) self.fill_in_defaults() self.common.log("ModeSettings", "load", f"loaded {self.filename}") return except Exception: pass # If loading settings didn't work, create the settings file self.common.log("ModeSettings", "load", f"creating {self.filename}") self.fill_in_defaults() self.just_created = True def save(self): # Save persistent setting to disk if not self.get("persistent", "enabled"): return if self.filename: with open(self.filename, "w") as file: file.write(json.dumps(self._settings, indent=2)) def delete(self): # Delete the file from disk if os.path.exists(self.filename): os.remove(self.filename) onionshare-onionshare-26fcdc5/cli/onionshare_cli/onion.py000066400000000000000000001136601521174352300237710ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from .censorship import CensorshipCircumvention from .meek import Meek from stem.control import Controller from stem import ProtocolError, SocketClosed from stem.connection import MissingPassword, UnreadableCookieFile, AuthenticationFailure import base64 import nacl.public import os import psutil import re import shlex import subprocess import tempfile import time import traceback from packaging.version import Version class TorErrorAutomatic(Exception): """ OnionShare is failing to connect and authenticate to the Tor controller, using automatic settings that should work with Tor Browser. """ class TorErrorInvalidSetting(Exception): """ This exception is raised if the settings just don't make sense. """ class TorErrorSocketPort(Exception): """ OnionShare can't connect to the Tor controller using the supplied address and port. """ class TorErrorSocketFile(Exception): """ OnionShare can't connect to the Tor controller using the supplied socket file. """ class TorErrorMissingPassword(Exception): """ OnionShare connected to the Tor controller, but it requires a password. """ class TorErrorUnreadableCookieFile(Exception): """ OnionShare connected to the Tor controller, but your user does not have permission to access the cookie file. """ class TorErrorAuthError(Exception): """ OnionShare connected to the address and port, but can't authenticate. It's possible that a Tor controller isn't listening on this port. """ class TorErrorProtocolError(Exception): """ This exception is raised if onionshare connects to the Tor controller, but it isn't acting like a Tor controller (such as in Whonix). """ class TorTooOldEphemeral(Exception): """ This exception is raised if the version of tor doesn't support ephemeral onion services """ class TorTooOldStealth(Exception): """ This exception is raised if the version of tor doesn't support stealth onion services """ class BundledTorTimeout(Exception): """ This exception is raised if onionshare is set to use the bundled Tor binary, but Tor doesn't finish connecting promptly. """ class BundledTorCanceled(Exception): """ This exception is raised if onionshare is set to use the bundled Tor binary, and the user cancels connecting to Tor """ class BundledTorBroken(Exception): """ This exception is raised if onionshare is set to use the bundled Tor binary, but the process seems to fail to run. """ class PortNotAvailable(Exception): """ There are no available ports for OnionShare to use, which really shouldn't ever happen """ class Onion(object): """ Onion is an abstraction layer for connecting to the Tor control port and creating onion services. OnionShare supports creating onion services by connecting to the Tor controller and using ADD_ONION, DEL_ONION. stealth: Should the onion service be stealth? settings: A Settings object. If it's not passed in, load from disk. bundled_connection_func: If the tor connection type is bundled, optionally call this function and pass in a status string while connecting to tor. This is necessary for status updates to reach the GUI. """ def __init__(self, common, use_tmp_dir=False, get_tor_paths=None): self.common = common self.common.log("Onion", "__init__") self.use_tmp_dir = use_tmp_dir # Set the path of the tor binary, for bundled tor if not get_tor_paths: get_tor_paths = self.common.get_tor_paths ( self.tor_path, self.tor_geo_ip_file_path, self.tor_geo_ipv6_file_path, self.obfs4proxy_file_path, self.snowflake_file_path, self.meek_client_file_path, ) = get_tor_paths() # The tor process self.tor_proc = None # The Tor controller self.c = None # Start out not connected to Tor self.connected_to_tor = False # Assigned later if we are using stealth mode self.auth_string = None # Keep track of onions where it's important to gracefully close to prevent truncated downloads self.graceful_close_onions = [] def key_str(self, key): """ Returns a base32 decoded string of a key. """ # bytes to base 32 key_bytes = bytes(key) key_b32 = base64.b32encode(key_bytes) # strip trailing ==== assert key_b32[-4:] == b"====" key_b32 = key_b32[:-4] # change from b'ASDF' to ASDF s = key_b32.decode("utf-8") return s def connect( self, custom_settings=None, config=None, tor_status_update_func=None, connect_timeout=120, local_only=False, ): if local_only: self.common.log( "Onion", "connect", "--local-only, so skip trying to connect" ) return # Either use settings that are passed in, or use them from common if custom_settings: self.settings = custom_settings elif config: self.common.load_settings(config) self.settings = self.common.settings else: self.common.load_settings() self.settings = self.common.settings self.common.log( "Onion", "connect", f"connection_type={self.settings.get('connection_type')}", ) # The Tor controller self.c = None if self.settings.get("connection_type") == "bundled": # Create a torrc for this session if self.use_tmp_dir: self.tor_data_directory = tempfile.TemporaryDirectory( dir=self.common.build_tmp_dir() ) self.tor_data_directory_name = self.tor_data_directory.name else: self.tor_data_directory_name = self.common.build_tor_dir() self.common.log( "Onion", "connect", f"tor_data_directory_name={self.tor_data_directory_name}", ) # Create the torrc with open(self.common.get_resource_path("torrc_template")) as f: torrc_template = f.read() self.tor_cookie_auth_file = os.path.join( self.tor_data_directory_name, "cookie" ) try: self.tor_socks_port = self.common.get_available_port(1000, 65535) except Exception: print("OnionShare port not available") raise PortNotAvailable() self.tor_torrc = os.path.join(self.tor_data_directory_name, "torrc") # If there is an existing OnionShare tor process, kill it for proc in psutil.process_iter(["pid", "name", "username"]): try: cmdline = proc.cmdline() if ( cmdline[0] == self.tor_path and cmdline[1] == "-f" and cmdline[2] == self.tor_torrc ): self.common.log( "Onion", "connect", "found a stale tor process, killing it" ) proc.terminate() proc.wait() break except Exception: pass if self.common.platform == "Windows" or self.common.platform == "Darwin": # Windows doesn't support unix sockets, so it must use a network port. # macOS can't use unix sockets either because socket filenames are limited to # 100 chars, and the macOS sandbox forces us to put the socket file in a place # with a really long path. torrc_template += "ControlPort {{control_port}}\n" try: self.tor_control_port = self.common.get_available_port(1000, 65535) except Exception: print("OnionShare port not available") raise PortNotAvailable() self.tor_control_socket = None else: # Linux and BSD can use unix sockets torrc_template += "ControlSocket {{control_socket}}\n" self.tor_control_port = None self.tor_control_socket = os.path.join( self.tor_data_directory_name, "control_socket" ) torrc_template = torrc_template.replace( "{{data_directory}}", self.tor_data_directory_name ) torrc_template = torrc_template.replace( "{{control_port}}", str(self.tor_control_port) ) torrc_template = torrc_template.replace( "{{control_socket}}", str(self.tor_control_socket) ) torrc_template = torrc_template.replace( "{{cookie_auth_file}}", self.tor_cookie_auth_file ) torrc_template = torrc_template.replace( "{{geo_ip_file}}", self.tor_geo_ip_file_path ) torrc_template = torrc_template.replace( "{{geo_ipv6_file}}", self.tor_geo_ipv6_file_path ) torrc_template = torrc_template.replace( "{{socks_port}}", str(self.tor_socks_port) ) torrc_template = torrc_template.replace( "{{obfs4proxy_path}}", str(self.obfs4proxy_file_path) ) torrc_template = torrc_template.replace( "{{snowflake_path}}", str(self.snowflake_file_path) ) with open(self.tor_torrc, "w") as f: self.common.log("Onion", "connect", "Writing torrc template file") f.write(torrc_template) # Bridge support if self.settings.get("bridges_enabled"): f.write("\nUseBridges 1\n") if self.settings.get("bridges_type") == "built-in": use_torrc_bridge_templates = False builtin_bridge_type = self.settings.get("bridges_builtin_pt") # Use built-inbridges stored in settings, if they are there already. # They are probably newer than that of our hardcoded copies. if self.settings.get("bridges_builtin"): try: for line in self.settings.get("bridges_builtin")[ builtin_bridge_type ]: if line.strip() != "": f.write(f"Bridge {line}\n") self.common.log( "Onion", "connect", "Wrote in the built-in bridges from OnionShare settings", ) except KeyError: # Somehow we had built-in bridges in our settings, but # not for this bridge type. Fall back to using the hard- # coded templates. use_torrc_bridge_templates = True else: use_torrc_bridge_templates = True if use_torrc_bridge_templates: if builtin_bridge_type == "obfs4": with open( self.common.get_resource_path( "torrc_template-obfs4" ) ) as o: f.write(o.read()) elif builtin_bridge_type == "meek-azure": with open( self.common.get_resource_path( "torrc_template-meek_lite_azure" ) ) as o: f.write(o.read()) elif builtin_bridge_type == "snowflake": with open( self.common.get_resource_path( "torrc_template-snowflake" ) ) as o: f.write(o.read()) self.common.log( "Onion", "connect", "Wrote in the built-in bridges from torrc templates", ) elif self.settings.get("bridges_type") == "moat": for line in self.settings.get("bridges_moat").split("\n"): if line.strip() != "": f.write(f"Bridge {line}\n") elif self.settings.get("bridges_type") == "custom": for line in self.settings.get("bridges_custom").split("\n"): if line.strip() != "": f.write(f"Bridge {line}\n") # Execute a tor subprocess self.common.log("Onion", "connect", f"starting {self.tor_path} subprocess") start_ts = time.time() if self.common.platform == "Windows": # In Windows, hide console window when opening tor.exe subprocess startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW self.tor_proc = subprocess.Popen( [self.tor_path, "-f", self.tor_torrc], stdout=subprocess.PIPE, stderr=subprocess.PIPE, startupinfo=startupinfo, ) else: if self.common.is_snapcraft(): env = None else: env = {"LD_LIBRARY_PATH": os.path.dirname(self.tor_path)} self.tor_proc = subprocess.Popen( [self.tor_path, "-f", self.tor_torrc], stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env, ) # Wait for the tor controller to start self.common.log("Onion", "connect", f"tor pid: {self.tor_proc.pid}") time.sleep(2) return_code = self.tor_proc.poll() if return_code != None: self.common.log("Onion", "connect", f"tor process has terminated early: {return_code}") # Connect to the controller self.common.log("Onion", "connect", "authenticating to tor controller") try: if ( self.common.platform == "Windows" or self.common.platform == "Darwin" ): self.c = Controller.from_port(port=self.tor_control_port) self.c.authenticate() else: self.c = Controller.from_socket_file(path=self.tor_control_socket) self.c.authenticate() except Exception as e: print("OnionShare could not connect to Tor:\n{}".format(e.args[0])) print(traceback.format_exc()) raise BundledTorBroken(e.args[0]) while True: try: res = self.c.get_info("status/bootstrap-phase") except SocketClosed: raise BundledTorCanceled() res_parts = shlex.split(res) progress = res_parts[2].split("=")[1] summary = res_parts[4].split("=")[1] # "\033[K" clears the rest of the line print( f"\rConnecting to the Tor network: {progress}% - {summary}\033[K", end="", ) if callable(tor_status_update_func): if not tor_status_update_func(progress, summary): # If the dialog was canceled, stop connecting to Tor self.common.log( "Onion", "connect", "tor_status_update_func returned false, canceling connecting to Tor", ) print() return False if summary == "Done": print("") break time.sleep(0.2) # If using bridges, it might take a bit longer to connect to Tor if self.settings.get("bridges_enabled"): # Only override timeout if a custom timeout has not been passed in if connect_timeout == 120: connect_timeout = 150 if time.time() - start_ts > connect_timeout: print("") try: self.tor_proc.terminate() print( "Taking too long to connect to Tor. Maybe you aren't connected to the Internet, or have an inaccurate system clock?" ) raise BundledTorTimeout() except FileNotFoundError: pass elif self.settings.get("connection_type") == "automatic": # Automatically try to guess the right way to connect to Tor Browser automatic_error = "Could not connect to the Tor controller. Is Tor Browser (available from torproject.org) running in the background?" # Try connecting to control port found_tor = False # If the TOR_CONTROL_PORT environment variable is set, use that env_port = os.environ.get("TOR_CONTROL_PORT") if env_port: try: self.c = Controller.from_port(port=int(env_port)) found_tor = True except Exception: pass else: # Otherwise, try default ports for Tor Browser, Tor Messenger, and system tor try: ports = [9151, 9153, 9051] for port in ports: self.c = Controller.from_port(port=port) found_tor = True except Exception: pass # If this still didn't work, try guessing the default socket file path socket_file_path = "" if not found_tor: try: if self.common.platform == "Darwin": socket_file_path = os.path.expanduser( "~/Library/Application Support/TorBrowser-Data/Tor/control.socket" ) self.c = Controller.from_socket_file(path=socket_file_path) found_tor = True except Exception: pass # If connecting to default control ports failed, so let's try # guessing the socket file name next if not found_tor: try: if self.common.platform == "Linux" or self.common.platform == "BSD": socket_file_path = ( f"/run/user/{os.geteuid()}/Tor/control.socket" ) elif self.common.platform == "Darwin": socket_file_path = ( f"/run/user/{os.geteuid()}/Tor/control.socket" ) elif self.common.platform == "Windows": # Windows doesn't support unix sockets print(automatic_error) raise TorErrorAutomatic() self.c = Controller.from_socket_file(path=socket_file_path) except Exception: print(automatic_error) raise TorErrorAutomatic() # Try authenticating try: self.c.authenticate() except Exception: print(automatic_error) raise TorErrorAutomatic() else: # Use specific settings to connect to tor invalid_settings_error = "Can't connect to Tor controller because your settings don't make sense." # Try connecting try: if self.settings.get("connection_type") == "control_port": self.c = Controller.from_port( address=self.settings.get("control_port_address"), port=self.settings.get("control_port_port"), ) elif self.settings.get("connection_type") == "socket_file": self.c = Controller.from_socket_file( path=self.settings.get("socket_file_path") ) else: print(invalid_settings_error) raise TorErrorInvalidSetting() except Exception: if self.settings.get("connection_type") == "control_port": print( "Can't connect to the Tor controller at {}:{}.".format( self.settings.get("control_port_address"), self.settings.get("control_port_port"), ) ) raise TorErrorSocketPort( self.settings.get("control_port_address"), self.settings.get("control_port_port"), ) print( "Can't connect to the Tor controller using socket file {}.".format( self.settings.get("socket_file_path") ) ) raise TorErrorSocketFile(self.settings.get("socket_file_path")) # Try authenticating try: if self.settings.get("auth_type") == "no_auth": self.c.authenticate() elif self.settings.get("auth_type") == "password": self.c.authenticate(self.settings.get("auth_password")) else: print(invalid_settings_error) raise TorErrorInvalidSetting() except MissingPassword: print( "Connected to Tor controller, but it requires a password to authenticate." ) raise TorErrorMissingPassword() except UnreadableCookieFile: print( "Connected to the Tor controller, but password may be wrong, or your user is not permitted to read the cookie file." ) raise TorErrorUnreadableCookieFile() except AuthenticationFailure: print( "Connected to {}:{}, but can't authenticate. Maybe this isn't a Tor controller?".format( self.settings.get("control_port_address"), self.settings.get("control_port_port"), ) ) raise TorErrorAuthError( self.settings.get("control_port_address"), self.settings.get("control_port_port"), ) # If we made it this far, we should be connected to Tor self.connected_to_tor = True # Get the tor version self.tor_version = self.c.get_version().version_str self.common.log("Onion", "connect", f"Connected to tor {self.tor_version}") # Do the versions of stem and tor that I'm using support ephemeral onion services? list_ephemeral_hidden_services = getattr( self.c, "list_ephemeral_hidden_services", None ) self.supports_ephemeral = ( callable(list_ephemeral_hidden_services) and self.tor_version >= "0.2.7.1" ) # Do the versions of stem and tor that I'm using support v3 stealth onion services? try: res = self.c.create_ephemeral_hidden_service( {1: 1}, basic_auth=None, await_publication=False, key_type="NEW", key_content="ED25519-V3", client_auth_v3="E2GOT5LTUTP3OAMRCRXO4GSH6VKJEUOXZQUC336SRKAHTTT5OVSA", ) tmp_service_id = res.service_id self.c.remove_ephemeral_hidden_service(tmp_service_id) self.supports_stealth = True except Exception: # ephemeral stealth onion services are not supported self.supports_stealth = False # Does this version of Tor support next-gen ('v3') onions? # Note, this is the version of Tor where this bug was fixed: # https://trac.torproject.org/projects/tor/ticket/28619 cleaned_tor_version = re.sub(r"\s*\(.*\)", "", self.tor_version) self.supports_v3_onions = Version(cleaned_tor_version) >= Version("0.3.5.7") # Now that we are connected to Tor, if we are using built-in bridges, # update them with the latest copy available from the Tor API if ( self.settings.get("bridges_enabled") and self.settings.get("bridges_type") == "built-in" ): self.update_builtin_bridges() def is_authenticated(self): """ Returns True if the Tor connection is still working, or False otherwise. """ if self.c is not None: return self.c.is_authenticated() else: return False def start_onion_service(self, mode, mode_settings, port, await_publication): """ Start a onion service on port 80, pointing to the given port, and return the onion hostname. """ self.common.log("Onion", "start_onion_service", f"port={port}") if not self.supports_ephemeral: print( "Your version of Tor is too old, ephemeral onion services are not supported" ) raise TorTooOldEphemeral() if mode_settings.get("onion", "private_key"): key_content = mode_settings.get("onion", "private_key") key_type = "ED25519-V3" else: key_content = "ED25519-V3" key_type = "NEW" debug_message = f"key_type={key_type}" if key_type == "NEW": debug_message += f", key_content={key_content}" self.common.log("Onion", "start_onion_service", debug_message) if mode_settings.get("general", "public"): client_auth_priv_key = None client_auth_pub_key = None else: if not self.supports_stealth: print( "Your version of Tor is too old, stealth onion services are not supported" ) raise TorTooOldStealth() else: if key_type == "NEW" or not mode_settings.get( "onion", "client_auth_priv_key" ): # Generate a new key pair for Client Auth on new onions, or if # it's a persistent onion but for some reason we don't them client_auth_priv_key_raw = nacl.public.PrivateKey.generate() client_auth_priv_key = self.key_str(client_auth_priv_key_raw) client_auth_pub_key = self.key_str( client_auth_priv_key_raw.public_key ) else: # These should have been saved in settings from the previous run of a persistent onion client_auth_priv_key = mode_settings.get( "onion", "client_auth_priv_key" ) client_auth_pub_key = mode_settings.get( "onion", "client_auth_pub_key" ) try: if not self.supports_stealth: res = self.c.create_ephemeral_hidden_service( {80: port}, await_publication=await_publication, basic_auth=None, key_type=key_type, key_content=key_content, ) else: res = self.c.create_ephemeral_hidden_service( {80: port}, await_publication=await_publication, basic_auth=None, key_type=key_type, key_content=key_content, client_auth_v3=client_auth_pub_key, ) except ProtocolError as e: print("Tor error: {}".format(e.args[0])) raise TorErrorProtocolError(e.args[0]) onion_host = res.service_id + ".onion" # Gracefully close share mode rendezvous circuits if mode == "share": self.graceful_close_onions.append(res.service_id) # Save the service_id mode_settings.set("general", "service_id", res.service_id) # Save the private key and hidservauth string if not mode_settings.get("onion", "private_key"): mode_settings.set("onion", "private_key", res.private_key) # If using V3 onions and Client Auth, save both the private and public key # because we need to send the public key to ADD_ONION (if we restart this # same share at a later date), and the private key to the other user for # their Tor Browser. if not mode_settings.get("general", "public"): mode_settings.set("onion", "client_auth_priv_key", client_auth_priv_key) mode_settings.set("onion", "client_auth_pub_key", client_auth_pub_key) # If we were pasting the client auth directly into the filesystem behind a Tor client, # it would need to be in the format below. However, let's just set the private key # by itself, as this can be pasted directly into Tor Browser, which is likely to # be the most common use case. # self.auth_string = f"{onion_host}:x25519:{client_auth_priv_key}" self.auth_string = client_auth_priv_key return onion_host def stop_onion_service(self, mode_settings): """ Stop a specific onion service """ onion_host = mode_settings.get("general", "service_id") if onion_host: self.common.log("Onion", "stop_onion_service", f"onion host: {onion_host}") try: self.c.remove_ephemeral_hidden_service( mode_settings.get("general", "service_id") ) except Exception: self.common.log( "Onion", "stop_onion_service", f"failed to remove {onion_host}" ) def cleanup(self, stop_tor=True, wait=True): """ Stop onion services that were created earlier. If there's a tor subprocess running, kill it. """ self.common.log("Onion", "cleanup") # Cleanup the ephemeral onion services, if we have any try: onions = self.c.list_ephemeral_hidden_services() for service_id in onions: onion_host = f"{service_id}.onion" try: self.common.log( "Onion", "cleanup", f"trying to remove onion {onion_host}" ) self.c.remove_ephemeral_hidden_service(service_id) except Exception: self.common.log( "Onion", "cleanup", f"failed to remove onion {onion_host}" ) pass except Exception: pass if stop_tor: # Stop tor process if self.tor_proc: if wait: # Wait for Tor rendezvous circuits to close # Catch exceptions to prevent crash on Ctrl-C try: rendezvous_circuit_ids = [] for c in self.c.get_circuits(): if ( c.purpose == "HS_SERVICE_REND" and c.rend_query in self.graceful_close_onions ): rendezvous_circuit_ids.append(c.id) symbols = list("\\|/-") symbols_i = 0 while True: num_rend_circuits = 0 for c in self.c.get_circuits(): if c.id in rendezvous_circuit_ids: num_rend_circuits += 1 if num_rend_circuits == 0: print( "\rTor rendezvous circuits have closed" + " " * 20 ) break if num_rend_circuits == 1: circuits = "circuit" else: circuits = "circuits" print( f"\rWaiting for {num_rend_circuits} Tor rendezvous {circuits} to close {symbols[symbols_i]} ", end="", ) symbols_i = (symbols_i + 1) % len(symbols) time.sleep(1) except Exception: pass self.tor_proc.terminate() time.sleep(0.2) if self.tor_proc.poll() is None: self.common.log( "Onion", "cleanup", "Tried to terminate tor process but it's still running", ) try: self.tor_proc.kill() time.sleep(0.2) if self.tor_proc.poll() is None: self.common.log( "Onion", "cleanup", "Tried to kill tor process but it's still running", ) except Exception: self.common.log( "Onion", "cleanup", "Exception while killing tor process" ) self.tor_proc = None # Reset other Onion settings self.connected_to_tor = False try: # Delete the temporary tor data directory if self.use_tmp_dir: self.tor_data_directory.cleanup() except Exception: pass def get_tor_socks_port(self): """ Returns a (address, port) tuple for the Tor SOCKS port """ self.common.log("Onion", "get_tor_socks_port") if self.settings.get("connection_type") == "bundled": return ("127.0.0.1", self.tor_socks_port) elif self.settings.get("connection_type") == "automatic": return ("127.0.0.1", 9150) else: return (self.settings.get("socks_address"), self.settings.get("socks_port")) def update_builtin_bridges(self): """ Use the CensorshipCircumvention API to fetch the latest built-in bridges and update them in settings. """ builtin_bridges = False meek = None # Try obtaining bridges over Tor, if we're connected to it. if self.is_authenticated: self.common.log( "Onion", "update_builtin_bridges", "Updating the built-in bridges. Trying over Tor first", ) self.censorship_circumvention = CensorshipCircumvention( self.common, None, self ) builtin_bridges = self.censorship_circumvention.request_builtin_bridges() if not builtin_bridges: # Tor was not running or it failed to hit the Tor API. # Fall back to using Meek (domain-fronting). self.common.log( "Onion", "update_builtin_bridges", "Updating the built-in bridges. Trying via Meek (no Tor)", ) meek = Meek(self.common) meek.start() self.censorship_circumvention = CensorshipCircumvention( self.common, meek, None ) builtin_bridges = self.censorship_circumvention.request_builtin_bridges() meek.cleanup() if builtin_bridges: # If we got to this point, we have bridges self.common.log( "Onion", "update_builtin_bridges", f"Obtained bridges: {builtin_bridges}", ) # Save the new settings self.settings.set("bridges_builtin", builtin_bridges) self.settings.save() else: self.common.log( "Onion", "update_builtin_bridges", "Error getting built-in bridges" ) return False onionshare-onionshare-26fcdc5/cli/onionshare_cli/onionshare.py000066400000000000000000000054461521174352300250160ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os from .common import AutoStopTimer class OnionShare(object): """ OnionShare is the main application class. Pass in options and run start_onion_service and it will do the magic. """ def __init__(self, common, onion, local_only=False, autostop_timer=0): self.common = common self.common.log("OnionShare", "__init__") # The Onion object self.onion = onion self.hidserv_dir = None self.onion_host = None self.port = None # do not use tor -- for development self.local_only = local_only # optionally shut down after N hours self.autostop_timer = autostop_timer # init auto-stop timer thread self.autostop_timer_thread = None def choose_port(self): """ Choose a random port. """ try: self.port = self.common.get_available_port(17600, 17650) except Exception: raise OSError("Cannot find an available OnionShare port") def start_onion_service(self, mode, mode_settings, await_publication=True): """ Start the onionshare onion service. """ self.common.log("OnionShare", "start_onion_service") if not self.port: self.choose_port() if self.autostop_timer > 0: self.autostop_timer_thread = AutoStopTimer(self.common, self.autostop_timer) if self.local_only: self.onion_host = f"127.0.0.1:{self.port}" if not mode_settings.get("general", "public"): self.auth_string = ( "E2GOT5LTUTP3OAMRCRXO4GSH6VKJEUOXZQUC336SRKAHTTT5OVSA" ) return self.onion_host = self.onion.start_onion_service( mode, mode_settings, self.port, await_publication ) if not mode_settings.get("general", "public"): self.auth_string = self.onion.auth_string def stop_onion_service(self, mode_settings): """ Stop the onion service """ self.onion.stop_onion_service(mode_settings) onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/000077500000000000000000000000001521174352300243005ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/000077500000000000000000000000001521174352300255675ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/css/000077500000000000000000000000001521174352300263575ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/css/style.css000066400000000000000000000153651521174352300302430ustar00rootroot00000000000000.clearfix:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; } body { margin: 0; font-family: Helvetica, sans-serif; background-color: #fafafa; } .d-flex { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; } header { border-bottom: 1px solid rgba(0, 0, 0, 0.1); background: #fff; padding: 1rem; } header .logo { vertical-align: middle; width: 3rem; height: 3rem; } header h1 { display: inline-block; margin: 0 0 0 0.5rem; vertical-align: middle; font-weight: normal; font-size: 1.375rem; color: #333; position: relative; top: .125rem; } header .information { font-size: .875rem; } .button { color: #ffffff; background-color: #4e064f; padding: .875rem 1rem; border: 0; border-radius: .25rem; text-decoration: none; margin-left: 1rem; cursor: pointer; font-weight: bold; } a.button:visited { color: #ffffff; } .close-button { color: #ffffff; background-color: #c90c0c; padding: 10px; border: 0; border-radius: 5px; text-decoration: none; margin-left: 1rem; cursor: pointer; position: absolute; right: 10px; bottom: 10px; } ul.breadcrumbs { display: block; list-style: none; margin: 10px 0; padding: 0; } ul.breadcrumbs li { display: inline-block; list-style: none; margin: 0; padding: 5px; color: #999999; } ul.breadcrumbs li span.sep { padding-left: 5px; } ul.breadcrumbs li a:link, ul.breadcrumbs li a:visited { color: #666666; border-bottom: 1px solid #666666; } .file-list { width: 100%; margin: 0 auto; border-collapse: collapse; font-size: .875rem; color: #333; background-color: #fff; } .file-list .heading { text-align: left; text-transform: uppercase; font-weight: normal; color: #666666; padding: 0.75rem; font-size: .75rem; letter-spacing: .0625rem; } .file-list div.d-flex { border-bottom: 1px solid #e0e0e0; justify-content: flex-start; } .file-list div.d-flex div { white-space: nowrap; padding: .625rem .75rem; } .file-list div.d-flex div img { vertical-align: middle; margin-right: 0.5rem; width: 1.25rem; height: 1.25rem; } .file-list div.d-flex div:last-child { padding-right: 0.75rem; flex-basis: 0; flex-grow: 1; } .file-list div.d-flex div:first-child { flex-basis: 0; flex-grow: 2; } @media (max-width: 950px) { .file-list div.d-flex div:last-child { flex-basis: auto; flex-grow: 0; } } @media (max-width: 655px) { .header { padding: 0 1rem; } .file-list { font-size: .9375rem; } .file-list div.d-flex { display: block; } .file-list div.d-flex span { max-width: 100%; word-break: break-all; white-space: normal; vertical-align: top; } .file-list div.d-flex #size-header { display: none; } .file-list div.d-flex div:last-child { padding-left: 3.75rem; font-size: 0.75rem; padding-top: 0; margin-top: -.5rem; color: #666; } .d-flex .row div:first-of-type { padding-bottom: 0; } } @media (max-width: 500px) { header .information { width: 100%; align-items: end; } .file-list div.d-flex div { white-space: nowrap; padding: .625rem 1rem; } } .chat-container { display: flex; font-family: monospace; } .chat-users { width: 20%; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 2px; overflow: auto; background: #f2f2f2; margin: 1rem 0 1rem 1rem; } .chat-users .editable-username { display: flex; padding: 1rem; flex-direction: column; } .chat-users .editable-username input { font-family: monospace; font-size: 1em; } .chat-users .editable-username #username-error { color: #c90c0c; margin: 0.5rem; } .chat-users #user-list li { margin-bottom: 1em; } .chat-wrapper { display: flex; flex-direction: column; flex: 1; margin: 1rem 1rem 0 1rem; height: calc(100vh - (65px + 2em)); } .chat-wrapper #chat { border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 2px; flex: 1; overflow: auto; background: #f2f2f2; padding: 0 1rem; } .chat-wrapper .status { font-style: italic; font-size: 0.8em; color: #666666; } .chat-wrapper .username { font-weight: bold; display: block; } .chat-wrapper .message { word-break: break-word; font-weight: normal; display: block; margin-bottom: 0.3em; } .chat-wrapper .chat-form { display: block; margin: 0.2rem 1rem 1rem 0; padding: -0.5em; } .chat-wrapper input#new-message { height: 100%; width: 100%; font-family: monospace; font-size: 1em; } @media (max-width: 992px) { .chat-users .editable-username { display: block; } .chat-users input#username { width: 90%; } } .no-js { display: none; } .upload-wrapper { align-items: center; justify-content: center; min-height: 400px; text-align: center; } .upload-wrapper img.logo { width: 120px; height: 120px; } .upload-wrapper .upload-header { font-size: 30px; font-weight: normal; color: #666666; margin: 0 0 10px 0; } .upload-wrapper .upload-description { color: #666666; margin: 0 0 20px 0; } .upload-wrapper textarea { max-width: 95%; width: 600px; height: 150px; padding: 10px; } div#uploads { width: 800px; max-width: 90%; margin: 0 auto; } div#uploads .upload { border: 1px solid #DDDDDD; margin: 20px 0; padding: 10px; text-align: left; } div#uploads .upload .upload-filename { font-weight: bold; font-family: monospace; font-size: 1.1em; margin-bottom: 5px; } div#uploads .upload .upload-status { color: #999999; font-size: 0.9em; margin-bottom: 5px; } div#uploads .upload input.cancel { color: #d0011b; border: 0; background: none; box-shadow: none; border-radius: 0px; cursor: pointer; font-family: sans-serif; font-size: 12px; text-decoration: none; display: inline-block; float:right; } div#uploads .upload progress { width: 100%; height: 20px; } div#uploads .upload .upload-warning { color: #c97000; font-size: 0.85em; font-weight: bold; margin-top: 4px; } div#uploads .upload .upload-warning.hidden { display: none; } ul.flashes { list-style: none; margin: 0; padding: 0; width: 800px; max-width: 100%; margin: 0 auto; } ul.flashes li { margin: 0 0 5px 0; padding: 5px; list-style: none; text-align: center; word-break: break-word; } li.error { color: #d0011b; } li.info { color: #5fa416; } .closed-wrapper { display: flex; align-items: center; justify-content: center; min-height: 400px; } .info { text-align: center; } .info img { width: 120px; height: 120px; } .info .info-header { font-size: 30px; font-weight: normal; color: #666666; margin: 0 0 10px 0; } .info .info-description { color: #666666; margin: 0 0 20px 0; } a { text-decoration: none; color: #1c1ca0; } a:visited { color: #601ca0; } onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/img/000077500000000000000000000000001521174352300263435ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/img/ajax.gif000066400000000000000000000015171521174352300277610ustar00rootroot00000000000000GIF89aNOtnI0$K7 H,-t*E-``1@C7h/1f\)&!;onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/img/favicon.ico000066400000000000000000000360561521174352300304760ustar00rootroot00000000000000 h6  (00 h&(  H H1M MM MM MM MM MM MJ J088 L LM MN NN NN NN NN NN NM ML L88 88 M MN NN NOOuCulin:nN NN NN NM M88 L LN NN NxGxj4jN NN NL LJ J0M MN N~O~OON NM MN N1M MN NUUg/gN NN Nr?rj4jN NN NN NM MM MRRjh0hN NN NN NN NN NN NPPN NN NM MM McN NN NN NN NN N̹SSN NL LM MN NkOON NN NN NN N̹SSM MM MN NN NvEvOON NN NN NN NYYd+dM MK KN NN NN NQQmQQN NN NWWνSSN NM MH H1M MN NOOƱYN NM MJ J0L LN NN N|aN NN NL L88 M MN NN Nc*c~t[ [N NN NM M88 88 L LM MN NN NN NN NN NN NM ML L88 J J0M MM MM ML LM MM MN N1( @ FFM MYM MM MN NL LL LN NM MM ML LZKKLL(K KM MN NN NN NN NN NN NN NN NN NN NM ML LGG'EE M MM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NM ML LEE KK%L LM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM ML LKK%L L2M MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM ML L2KK%M MN NN NN NN NN NN NTTY˹vDvOON NN NN NN NN NN NM MKK%EE L LN NN NN NN NN NSS|UN NN NN NN NN NN NL LEE L LM MN NN NN NN Nf/fTTN NN NN NN NM MM MGG'M MN NN NN NN Nk5kͼQQN NN NN NN NM MLL(L LN NN NN NN N[[ϽOON NN NN NN NN NM MKKM MN NN NN NN NZZN NN NN NN Ni2iűPPN NN NN NN NN NN NM MFFL LZN NN NN NN Nl7lzJzN NN NN NN NN NN NN NOOPPN NN NN NN NN NN NN NN NM MYM MN NN NN NN NeN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM MM MN NPP\!\^$^f-f^#^N NN NN NN NN NN NN NN NN NN NN NOOWWN NN NN NN NN NN NM MM MN Nm8mN NN NN NN NN NN NN NN NN NN NOOd,dN NN NN NN NN NM ML LN NN NUȴSSN NN NN NN NN NN NN NN NN NOOd,dN NN NN NN NL LL LN NN NN NUȴSSN NN NN NN NN NN NN NN NN NOOd,dN NN NN NL LN NN NN NN NN NUȴSSN NN NN NN NN NN NN NN NN NOOd,dN NN NN NM MN NN NN NN NN NUSSN NN NN NN NN NN NN NN NN NN N|L|N NN NM MM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NayN NN NN NN NM MJ JYN NN NN NN NN NN NN NN NN NWWQQN NN NN NN NN NN NN NN Ne-eb)bN NN NN NN NL LZFFM MN NN NN NN NN NN NN N]"]˸]!]N NN NN NN NN NN NsAsN NN NN NN NM MKKK KN NN NN NN NN NN N]"]yHyc*cg/gX^#^N NN NN NN NL LLL(M MN NN NN NN NSS|L|N NN NN NN NM MGG'M MM MN NN NN NNNSN NN NN NN NM ML LEE L LN NN NN NN NN N\k5kN NN NN NN NN NL LEE KK%M MN NN NN NN NN NVVvʸWOON NN NN NN NN NM MKK%L L2M MN NN NN NN NN NN NN N]"]xGxZWr>rVVN NN NN NN NN NN NN NM ML L2KK%L LM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM ML LKK%EE L LM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NM MM MEE GG'L LM MN NN NN NN NN NN NN NN NN NN NM MM MLL(KKL LZM MM MN NL LL LM MM MM MM MYFF(0` FFLL(J JOL LM ML LL LL LL LL LM ML LM MJ JRJJ)LL33H H1L LtL LM MM MM MN NN NN NN NN NN NN NN NM MM MM ML LK KvH H5**HH#K KM MM MM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NM MM ML LL LII&EELLuM MM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM MM MJ J{K KII;K KM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM ML LJJAK KeM MM MM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM MM MM MM MmHHK KfL LN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM ML Lx88 L LhM MM MN NN NN NN NN NN NN NN NN NN NRRd+dvDvU\[Po;o[ [OON NN NN NN NN NN NN NN NN NN NM MM MK KoK KeM MM MN NN NN NN NN NN NN NN NN N`&`xŰWQQN NN NN NN NN NN NN NN NN NM MM MM MmJJ:L LN NN NN NN NN NN NN NN NQQh2hi\!\N NN NN NN NN NN NN NN NN NM MJ JHFFL LM MN NN NN NN NN NN NN NZZwȴ~O~QQN NN NN NN NN NN NN NM MK KGGL LrM MM MN NN NN NN NN NN N[[{RRN NN NN NN NN NN NM MM MJ J{HH#M MN NN NN NN NN NN NN Nb)bϾpPPN NN NN NN NN NN NN NL LJJ)33L LM MN NN NN NN NN NN Na(aɶVVN NN NN NN NN NN NN NM ML LHHHH.L LN NN NN NN NN NN NSSmV]|̻{K{NNN NN NN NN NN NN NN NN NL LJJ:K KiM MN NN NN NN NN NN N{K{pWWN NN NN NN NN NNNe-ecOON NN NN NN NN NN NN NN NN NM MK K:: L LM MN NN NN NN NN NWWg0gN NN NN NN NN NN NN NN NN NRRT`QQN NN NN NN NN NN NN NN NN NN NM ML LCCFFM MN NN NN NN NN NN NpVVN NN NN NN NN NN NN NN NN NN NN NN Nd,dxGxOON NN NN NN NN NN NN NN NN NN NN NN NN NJJ)HHFM MN NN NN NN NN NVVͼZZN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NL LJ JRK KM MN NN NN NN NN Ns@sm8mN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM ML LM MN NN NNN\ \i2ij4j~ŰvDvvDvb)bN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NQQh2hN NN NN NN NN NN NN NN NN NN NL LM MN NN NXXdzN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NYYgQQN NN NN NN NN NN NN NN NM MM MN NN NOO}N}̻f.fN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NWW`NNN NN NN NN NN NN NN NL LL LN NN NN NOOr@rd+dN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NQQiNNN NN NN NN NN NN NL LL LN NN NN NN NN Nr@r]#]N NN NN NN NN NN NN NN NN NN NN NN NN NN NN NYYgQQN NN NN NN NN NL LL LN NN NN NN NN NOO}O}̻f/fN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NWW`NNN NN NN NN NL LL LN NN NN NN NN NN NOOr@rd+dN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NQQiNNN NN NN NM ML LN NN NN NN NN NN NN NN Nr@rϾ]#]N NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN N{k5kN NN NN NM MK KM MN NN NN NN NN NN NN NOOm7m`&`N NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN Nn:n_]`SzIzVVN NN NM ML LIIBM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NTTƱîOON NN NN NN NN NM MI IPH HL LN NN NN NN NN NN NN NN NN NN NN NN NN NNNSSN NN NN NN NN NN NN NN NN NN NN NN NN NPPfTN NN NN NN NN NN NM MFF(:: L LM MN NN NN NN NN NN NN NN NN NN NN NN NvDvf/fN NN NN NN NN NN NN NN NN NN NN NOO[SSN NN NN NN NN NM MK KCCL LgM MN NN NN NN NN NN NN NN NN NN NN NzJzzJzNNN NN NN NN NN NN NN NN NWW~O~N NN NN NN NN NN NM MK KMM+L LN NN NN NN NN NN NN NN NN NOOxHxuDu`&`YYUUVV[[e-eZWWN NN NN NN NN NN NL LH H833L LM MN NN NN NN NN NN NN NN NxGxíɶr?rN NN NN NN NN NN NM ML L**EE!M MN NN NN NN NN NN NN N^#^q>qNNN NN NN NN NN NN NM MGG K KlM MM MN NN NN NN NN NOOxHxN NN NN NN NN NN NM ML LLLuFFM MM MN NN NN NN NN NN NUUs}N}PPN NN NN NN NN NN NM ML LGGH H5M MN NN NN NN NN NN NN NQQl7lʶ|ZZNNN NN NN NN NN NN NN NM MIIBKK^M MM MN NN NN NN NN NN NN NRRZn9nNNN NN NN NN NN NN NN NM MM MK KeL LgM MM MN NN NN NN NN NN NN NN NWWzIzx̺ưgi3iPPN NN NN NN NN NN NN NN NM MM MK Kp33K K_M MN NN NN NN NN NN NN NN NN NN NNNSSWWZZ\ \\ \YYUUQQN NN NN NN NN NN NN NN NN NN NN NM MK KpHHKK^M MM MM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM MM ML LK KeII;L LM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM MM MJJA??K KlM MM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM MM MLLrCCFFK KM MM MM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NM MM ML LL LII&33G G2K KsL LM MM MM MN NN NN NN NN NN NN NN NM MM MM ML LM MwI I4HH?? H HHHCK K}L LM MM ML LL LL LM MK KL LIIEFF:: onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/img/logo.png000066400000000000000000000061421521174352300300140ustar00rootroot00000000000000PNG  IHDR``w8 pHYs%%IR$sRGBgAMA a IDATxMlG_ HQbΚH+,-h'"b3K8U%& c;R#h >8H9\#c3y磧I@=^իW2DazFmI3fQo۰WaO* 2(av$3>Ɏ-X"ĠO&QޟYxr=ĠVElh(6S PT[=mn VFQ]p+?г&.=L` pZ;.Eqn(sE'Z8p*)WXu[|>|W/ `sSo'Ql7f^?is7ڨrhCvq̽҈Aֲln1oҜJ iiQL FB:LIDkmVҺꭥ |wRDIܡq/uR&a}Fxz5<8?7LHs>p-54WRCk~iڕ}SS4?>fG J`2)X0;r|ڰm50O2Woaz! Gr.7)@ mvZ6ΏvR˦i ]x´繂gjn޵Y%(`O 뽺07jw}Ӂ"8=">\e jj-%,|`SXjѫ+X RN A (TU( R)@UTtxV.WJ%|X=캅o*A T_w߿Y@,Tw(% |El4|+(מDh9u>?MOJX S`P8L|}!p ̏q9:5`e2h=Gw-в ˩O@ K,R,¤giօ]% t} _6ڛ!2WԒ5q(̍^S0m/Nԟ1ܘeAK.Q)Pw=Orݐ7;,Zc~P)z{?lzf|R[7~kSU*VU;ij8a+_O)`yzʏtq*:kCg-͐掦#OA)w~ :_ƳӁ2+I6ymʀo"ꌦ )h-^a밷S V=AKrw`[vTGH36;6ܼy6l-%YSTyxP4))C֕EvHz!n&~;P O8i*bh[-= Tz,l{tkɺ bz*%tDAgԖ4m.[×âĚ-J_BaBl"-G*.pH<_gZMw7IENDB`onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/img/logo_large.png000066400000000000000000000140021521174352300311600ustar00rootroot00000000000000PNG  IHDRRl pHYs,K,K=sRGBgAMA aIDATx_lUU{o x@bi b2b,w1D`ô$h8#<̃zʽ P7F$ Գٝݞ{c>ߟoT"iJ\ Jd$ XɞJd' H:c 1Y,dp58s!'ޛl+CuIgYԌA5t+ז7ǙqFY3a}ǮpFz4P|.K1C?FVO32dM3QNgH ZE'jM;v2O0A0/5°4i@Q1SP8,lKC ; ic K2w3o>,+פ:vHHơᑾB ,T:D:( qH;e ߶.6w+%ü1mF9W'w0DU %= M߉"!K`tqбcSO0hu,'Xh?G ȗ3?R~V}P5:,r@䜏/=EiP5,R*bN w0Ƚ -̄EK&EPH#=*y=@{C;-7DUPH̓ҦFU 4'{CR.RS2洹UƐ$hm #EҮ/pvIT9&إVgqj}z3v$AHS^~l"/*mG%V$ǧ` $!F~tY3Cִ'},t˜5sI0jH)Tg#axZ۲VYo/__'NJvݸ~&~0ܓJME-hc5x_bx"]FPáPo'[hӳ5ry&]ÜXJK}M>5Ǩ}m) =G;ƚ=~vKc[;wiq6h64hMPx>i#+:EV"Mu,_BOKB# !̼KB©sʞ-k&I#Z`!M\m*Ep\?P4~\ƛl 16 ǠCݥ_VYcA#gFx+CLaDt [ligtDT [û15d[9Dm(31y_R60bc0DЉOZq ڧ_S ,*:<,FP"{˿e,c8'z~*PS}) ӱwUaR-M~u-x{F/ifAZj YyjzydF* UV.83r{("2Y69o&D7M{!zq"t`uF}NwI% ,abƏ=ۙOxz\.rȉ^z<F*|} 2x.4)k xzR`Oׄb^3\g>;oTQ ! $y̯8}aFwtj5<"p$Xt8 'GI+׿\`R `R./" ,%W[+ɯ4@'i" 'DA ,Z<дI>ٚtS \ag=Q\ SbC ^ɩm.H$~J>P\ wDo '0I 0O"@;a84'@~c+ib ,,Huʬ6eaBn7Q ?m(I~6" f볃}aib ]?Xa֖< _Hk"%rL5`2.r;hQ9;׆=Vʑĸ'>mb:DmŦ OtRϹ|qF2Rh;bc7p& TLocƭEMT[ƣۅP 2Y(IQQkx5lWr4Y0$I֘1~⽯&vɐjZި.j/"FUiW!mZި&窪NUUD&c8I@FE"L SYE, Qjx#D?#a B1jx#?H6B-oD@sB,ƧE(6~d3:-o ƦEMX"A`ȴ Z2?RRŸ J?#`_Qix$4~5R՘K?3ՍHZE Ii}j$*ƣEM"]jNf4ZT*% $7>y#rsiRT0~ @.C5ՑRj"(%U0bOpj@;a0񽘣Ę[/pќt(kfm}V< }}bCeI0~Q0螨Yi(dH8PX˂Vݰem۵-gv:-O3T̅_oQ#/n8a8ƜP*\| !\k¾ `ëqV3V J/41,HC_" ѻ9hZ֔eSdnS li斣. \D?տݴi$"Xײ4}gbcg^_ ۰y\?}H'JW)w_F:'`ϼJU>:^#AUn[o);"B=O?Q iOs@> j#Qa\"1XƾS*$BWy!"p5pqōK  D/!Ѭzz'4t;jEMY ܃G=U '[H\o* #Au}vv@~f/WP%Bx!\GSi_.Qf}=zI1U WU ,mXʀ~С"0 2^KH /2e]qr#$Ϩw@-*ڻ xwO]\&}(x,TBhv{lmYG`Y&VߛJYEYNΙ0m/P䔪6! |?\W S!,:E:a$c< ߻k,*A"K.WƯ,ѸBblNSR2D]`"d]"w"ca>?ZuegfI6Pr1r^WYdkC]/0n{\I5-GDi/ă?S\X.efID[,r8 @;NQnRAd5q_O@"$O}JSr" 696$=D {nZY_/* fd{I2 tGJ,cB ,-mZn6d\́zе_KkҤ~@FRT_j{eJ Y:9 L:H5+N| $uwA16뼠2x_&a&ҷfFGω Q B+6˰^vC!QjϪGP@,CW.7t3|Cf>7VLƜ6ZYc, / ~vlh f@m> BK趻~U' _2] L$ݽs73#PD>i&!n{q >*eaS27]|7&s.C\)q,XRrU Րc)#(*!Gd˖(|XdkT=I~0(DVy8;pc|&Ά/X($_+s>=2'' a4?GTLK!:PJE\c燋D 5-&0$L$B x\=FxK3]FT3g[LV{ʐ_k,[?zEL8ݍ7Rd܎RS霊45mf70hhʅ0FGyi(T4c/+wVBML4d]rd[.nHxO8*v4ê~]lȲ̄1,DYe~jIENDB`onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/js/000077500000000000000000000000001521174352300262035ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/js/chat.js000066400000000000000000000161011521174352300274570ustar00rootroot00000000000000$(function () { const chatContainerEls = document.getElementsByClassName("chat-container"); for (const chatContainerEl of chatContainerEls) { chatContainerEl.classList.remove("no-js"); } const socket = io(`${location.origin}/chat`, { transports: ["websocket"] }); // Store current username received from app context /** @type {HTMLInputElement} */ const usernameEl = document.getElementById("username"); var current_username = usernameEl.value.trim(); // Triggered on any status change by any user, such as some // user joined, or changed username, or left, etc. socket.on("status", function (data) { addMessageToPanel(data, current_username, "status"); console.log(data, current_username); }); // Triggered when message is received from a user. Even when sent // by self, it get triggered after the server sends back the emit. socket.on("chat_message", function (data) { addMessageToPanel(data, current_username, "chat"); console.log(data, current_username); }); // Triggered when disconnected either by server stop or timeout socket.on("disconnect", function (_reason, _details) { addMessageToPanel( { msg: "The chat server is disconnected." }, current_username, "status", ); }); socket.on("connect_error", function (error) { console.error(error); }); // Trigger new message on enter or click of send message button. document .getElementById("new-message") .addEventListener("keypress", function (e) { if (e.key === "Enter") { emitMessage(socket); } }); // Keep buttons disabled unless changed or not empty usernameEl.addEventListener("keyup", function (event) { const username = event.currentTarget.value; if (username !== "" && username !== current_username) { if (event.key === "Enter") { this.blur(); current_username = updateUsername(socket) || current_username; } } }); // Show warning of losing data window.addEventListener("beforeunload", function (e) { e.preventDefault(); }); }); const addMessageToPanel = function (data, current_username, messageType) { const scrollDiff = getScrollDiffBefore(); if (messageType === "status") { addStatusMessage(data.msg); if (data.connected_users) { addUserList(data.connected_users, current_username); } } else if (messageType === "chat") { addChatMessage(data.username, data.msg); } scrollBottomMaybe(scrollDiff); }; const emitMessage = function (socket) { const newMessageEl = document.getElementById("new-message"); const newMessage = newMessageEl.value; newMessageEl.value = ""; const chatEl = document.getElementById("chat"); // $(chatEl).scrollTop(chatEl.scrollHeight); chatEl.scrollTo({ top: chatEl.scrollHeight }); socket.emit("text", { msg: newMessage }); }; const updateUsername = function (socket) { const username = document.getElementById("username").value; if ( !checkUsernameExists(username) && !checkUsernameTooLong(username) && !checkUsernameAscii(username) ) { fetch(`${location.origin}/update-session-username`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ username: username }), }) .then(function (response) { console.log(response); return response.json(); }) .then(function (response) { console.log(response); if (response.success && response.username == username) { socket.emit("update_username", { username: username }); } else { throw new Error("Failed to update username."); } }) .catch(function () { addStatusMessage("Failed to update username."); }); return username; } return false; }; /************************************/ /********* Util Functions ***********/ /************************************/ /** * @param username {string} * @returns {boolean} */ const checkUsernameAscii = function (username) { // ASCII characters have code points in the range U+0000-U+007F. const usernameErrorEl = document.getElementById("username-error"); usernameErrorEl.textContent = ""; if (!/^[\u0000-\u007f]*$/.test(username)) { usernameErrorEl.textContent = "Non-ASCII usernames are not supported."; return true; } return false; }; /** * @param username {string} * @returns {boolean} */ const checkUsernameExists = function (username) { const usernameErrorEl = document.getElementById("username-error"); usernameErrorEl.textContent = ""; const userEls = document.querySelectorAll("#user-list li"); const userMatches = Array.from(userEls).some(function (el) { return el.textContent === username; }); if (userMatches) { usernameErrorEl.textContent = "User with that username exists!"; } return userMatches; }; /** * @param username {string} * @returns {boolean} */ const checkUsernameTooLong = function (username) { const usernameErrorEl = document.getElementById("username-error"); usernameErrorEl.textContent = ""; if (username.length > 128) { usernameErrorEl.textContent = "Please choose a shorter username."; return true; } return false; }; /** * @returns {number} */ const getScrollDiffBefore = function () { const chatEl = document.getElementById("chat"); return chatEl.scrollTop - (chatEl.scrollHeight - chatEl.offsetHeight); }; /** * @param scrollDiff {number} */ const scrollBottomMaybe = function (scrollDiff) { // Scrolls to bottom if the user is scrolled at bottom // if the user has scrolled up, it won't scroll at bottom. // Note: when a user themselves send a message, it will still // scroll to the bottom even if they had scrolled up before. const chatEl = document.getElementById("chat"); if (scrollDiff > 0) { // $(chatEl).scrollTop(chatEl.scrollHeight); chatEl.scrollTo({ top: chatEl.scrollHeight }); } }; /** * @param message {string} */ const addStatusMessage = function (message) { const messageEl = document.createElement("p"); messageEl.classList.add("status"); messageEl.textContent = message; document.getElementById("chat").appendChild(messageEl); }; /** * @param username {string} * @param message {string} */ const addChatMessage = function (username, message) { const messageEl = document.createElement("p"); messageEl.innerHTML = ``; messageEl.getElementsByClassName("username")[0].textContent = username; messageEl.getElementsByClassName("message")[0].textContent = message; document.getElementById("chat").appendChild(messageEl); }; /** * @param connected_users {string[]} * @param current_username {string} */ const addUserList = function (connected_users, current_username) { connected_users.sort(); const liList = connected_users .filter(function (username) { return username !== current_username; }) .map(function (username) { const li = document.createElement("p"); li.textContent = username; return li; }); const userListEl = document.getElementById("user-list"); userListEl.replaceChildren(...liList); }; onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/js/jquery-3.7.1.slim.min.js000066400000000000000000002111701521174352300322530ustar00rootroot00000000000000/*! jQuery v3.7.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween | (c) OpenJS Foundation and other contributors | jquery.org/license */ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},m=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||m).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),b=new RegExp(ge+"|>"),A=new RegExp(g),D=new RegExp("^"+t+"$"),N={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+d),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},L=/^(?:input|select|textarea|button)$/i,j=/^h\d$/i,O=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,P=/[+~]/,H=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),q=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=K(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{E.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){E={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(V(e),e=e||C,T)){if(11!==d&&(u=O.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return E.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return E.call(n,a),n}else{if(u[2])return E.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return E.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||p&&p.test(t))){if(c=t,f=e,1===d&&(b.test(t)||m.test(t))){(f=P.test(t)&&X(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=k)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+G(l[o]);c=l.join(",")}try{return E.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function B(e){return e[k]=!0,e}function F(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function $(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return B(function(o){return o=+o,B(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function X(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=C&&9===n.nodeType&&n.documentElement&&(r=(C=n).documentElement,T=!ce.isXMLDoc(C),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=C&&(t=C.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=F(function(e){return r.appendChild(e).id=ce.expando,!C.getElementsByName||!C.getElementsByName(ce.expando).length}),le.disconnectedMatch=F(function(e){return i.call(e,"*")}),le.scope=F(function(){return C.querySelectorAll(":scope")}),le.cssHas=F(function(){try{return C.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(x.filter.ID=function(e){var t=e.replace(H,q);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&T){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(H,q);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&T){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},x.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&T)return t.getElementsByClassName(e)},p=[],F(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||p.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+k+"-]").length||p.push("~="),e.querySelectorAll("a#"+k+"+*").length||p.push(".#.+[+~]"),e.querySelectorAll(":checked").length||p.push(":checked"),(t=C.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&p.push(":enabled",":disabled"),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||p.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||p.push(":has"),p=p.length&&new RegExp(p.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===C||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),C}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),T&&!h[t+" "]&&(!p||!p.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(H,q),e[3]=(e[3]||e[4]||e[5]||"").replace(H,q),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return N.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&A.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(H,q).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||E,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:k.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:m,!0)),C.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=m.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,E=ce(m);var S=/^(?:parents|prev(?:Until|All))/,A={children:!0,contents:!0,next:!0,prev:!0};function D(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;re=m.createDocumentFragment().appendChild(m.createElement("div")),(be=m.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),re.appendChild(be),le.checkClone=re.cloneNode(!0).cloneNode(!0).lastChild.checked,re.innerHTML="",le.noCloneChecked=!!re.cloneNode(!0).lastChild.defaultValue,re.innerHTML="",le.option=!!re.lastChild;var Te={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Ee(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function ke(e,t){for(var n=0,r=e.length;n",""]);var Se=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Me(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Ie(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function We(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n
",2===yt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=m.implementation.createHTMLDocument("")).createElement("base")).href=m.location.href,t.head.appendChild(r)):t=m),o=!n&&[],(i=C.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||K})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Qe(le.pixelPosition,function(e,t){if(t)return t=Ve(e,n),$e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0 ' + "Sending — waiting for data to traverse the Tor network …"; ajax.uploadDivEl.querySelector(".upload-warning").classList.remove("hidden"); } }, false, ); ajax.addEventListener( "load", function (_event) { // Remove the upload div ajax.uploadDivEl.remove(); // Parse response try { const response = JSON.parse(ajax.response); // The 'new_body' response replaces the whole HTML document and ends if ("new_body" in response) { document.body.innerHTML = response["new_body"]; return; } // Show error flashes const errors = response["error_flashes"] || []; for (const error of errors) { flash("error", error); } // Show info flashes const infos = response["info_flashes"] || []; for (const info of infos) { flash("info", info); } } catch (e) { flash("error", "Invalid response from server: " + data); } }, false, ); ajax.addEventListener( "error", function (_event) { flash("error", "Error uploading: " + filenames.join(", ")); // Remove the upload div ajax.uploadDivEl.remove(); }, false, ); ajax.addEventListener( "abort", function (_event) { flash("error", "Upload aborted: " + filenames.join(", ")); }, false, ); // Make the upload div /* The DOM for an upload looks something like this:
educational-video.mp4, secret-plans.pdf
Sending data to initial Tor node ...
Once all bytes reach the first Tor node, 'value' is removed from (making it indeterminate), the warning div is shown, and the cancel button is removed. */ // Warning shown only once data has cleared the first hop and is traversing the circuit. // Hidden by default; revealed in the progress handler above. const uploadDivEl = document.createElement("div"); uploadDivEl.classList.add("upload"); uploadDivEl.innerHTML = `
Sending data to initial Tor node ...
`; uploadDivEl.querySelector("div.upload-filename").textContent = filenames.join(", "); uploadDivEl .querySelector("input.cancel") .addEventListener("click", function () { // Abort the upload, and remove the upload div ajax.abort(); uploadDivEl.remove(); }); document.getElementById("uploads").append(uploadDivEl); ajax.uploadDivEl = uploadDivEl; // Send the request ajax.open("POST", "/upload-ajax", true); ajax.send(formData); }); }); onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/js/send.js000066400000000000000000000054531521174352300275010ustar00rootroot00000000000000/** * Function to convert human-readable sizes back to bytes, for sorting * @param text {string} * @returns {string} */ function unhumanize(text) { var powers = {'b': 0, 'k': 1, 'm': 2, 'g': 3, 't': 4}; var regex = /(\d+(?:\.\d+)?)\s?(B|K|M|G|T)?/i; var res = regex.exec(text); if (res[2] === undefined) { // Account for alphabetical words (file/dir names) return text; } else { return res[1] * Math.pow(1024, powers[res[2].toLowerCase()]); } } /** * @param n {number} */ function sortTable(n) { var i = 0; var shouldSwitch = false; var switchcount = 0; const table = document.getElementById("file-list"); var switching = true; // Set the sorting direction to ascending: var dir = "asc"; /* Make a loop that will continue until no switching has been done: */ while (switching) { // Start by saying: no switching is done: switching = false; const rows = table.getElementsByClassName("row"); /* Loop through all table rows (except the first, which contains table headers): */ for (i = 1; i < (rows.length - 1); i++) { // Start by saying there should be no switching: shouldSwitch = false; /* Get the two elements you want to compare, one from current row and one from the next: */ let x = rows[i].getElementsByClassName("cell-data")[n]; let y = rows[i + 1].getElementsByClassName("cell-data")[n]; let valX = x.classList.contains("size") ? unhumanize(x.innerHTML.toLowerCase()) : x.innerHTML; let valY = y.classList.contains("size") ? unhumanize(y.innerHTML.toLowerCase()) : y.innerHTML; /* Check if the two rows should switch place, based on the direction, asc or desc: */ if (dir === "asc") { if (valX > valY) { // If so, mark as a switch and break the loop: shouldSwitch = true; break; } } else if (dir === "desc") { if (valX < valY) { // If so, mark as a switch and break the loop: shouldSwitch = true; break; } } } if (shouldSwitch) { /* If a switch has been marked, make the switch and mark that a switch has been done: */ rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; // Each time a switch is done, increase this count by 1: switchcount++; } else { /* If no switching has been done AND the direction is "asc", set the direction to "desc" and run the while loop again. */ if (switchcount === 0 && dir === "asc") { dir = "desc"; switching = true; } } } } // Set click handlers document.getElementById("filename-header").addEventListener("click", function(){ sortTable(0); }); document.getElementById("size-header").addEventListener("click", function(){ sortTable(1); }); onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/static/js/socket.io.min.js000066400000000000000000001333461521174352300312330ustar00rootroot00000000000000/*! * Socket.IO v4.8.3 * (c) 2014-2025 Guillermo Rauch * Released under the MIT License. */ !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t="undefined"!=typeof globalThis?globalThis:t||self).io=n()}(this,(function(){"use strict";function t(t,n){(null==n||n>t.length)&&(n=t.length);for(var i=0,r=Array(n);i=n.length?{done:!0}:{done:!1,value:n[e++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,u=!0,h=!1;return{s:function(){r=r.call(n)},n:function(){var t=r.next();return u=t.done,t},e:function(t){h=!0,s=t},f:function(){try{u||null==r.return||r.return()}finally{if(h)throw s}}}}function e(){return e=Object.assign?Object.assign.bind():function(t){for(var n=1;n1?{type:l[i],data:t.substring(1)}:{type:l[i]}:d},N=function(t,n){if(B){var i=function(t){var n,i,r,e,o,s=.75*t.length,u=t.length,h=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var f=new ArrayBuffer(s),c=new Uint8Array(f);for(n=0;n>4,c[h++]=(15&r)<<4|e>>2,c[h++]=(3&e)<<6|63&o;return f}(t);return C(i,n)}return{base64:!0,data:t}},C=function(t,n){return"blob"===n?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer},T=String.fromCharCode(30);function U(){return new TransformStream({transform:function(t,n){!function(t,n){y&&t.data instanceof Blob?t.data.arrayBuffer().then(k).then(n):b&&(t.data instanceof ArrayBuffer||w(t.data))?n(k(t.data)):g(t,!1,(function(t){p||(p=new TextEncoder),n(p.encode(t))}))}(t,(function(i){var r,e=i.length;if(e<126)r=new Uint8Array(1),new DataView(r.buffer).setUint8(0,e);else if(e<65536){r=new Uint8Array(3);var o=new DataView(r.buffer);o.setUint8(0,126),o.setUint16(1,e)}else{r=new Uint8Array(9);var s=new DataView(r.buffer);s.setUint8(0,127),s.setBigUint64(1,BigInt(e))}t.data&&"string"!=typeof t.data&&(r[0]|=128),n.enqueue(r),n.enqueue(i)}))}})}function M(t){return t.reduce((function(t,n){return t+n.length}),0)}function x(t,n){if(t[0].length===n)return t.shift();for(var i=new Uint8Array(n),r=0,e=0;e1?n-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};return t+"://"+this.i()+this.o()+this.opts.path+this.u(n)},i.i=function(){var t=this.opts.hostname;return-1===t.indexOf(":")?t:"["+t+"]"},i.o=function(){return this.opts.port&&(this.opts.secure&&443!==Number(this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""},i.u=function(t){var n=function(t){var n="";for(var i in t)t.hasOwnProperty(i)&&(n.length&&(n+="&"),n+=encodeURIComponent(i)+"="+encodeURIComponent(t[i]));return n}(t);return n.length?"?"+n:""},n}(I),X=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).h=!1,n}s(n,t);var r=n.prototype;return r.doOpen=function(){this.v()},r.pause=function(t){var n=this;this.readyState="pausing";var i=function(){n.readyState="paused",t()};if(this.h||!this.writable){var r=0;this.h&&(r++,this.once("pollComplete",(function(){--r||i()}))),this.writable||(r++,this.once("drain",(function(){--r||i()})))}else i()},r.v=function(){this.h=!0,this.doPoll(),this.emitReserved("poll")},r.onData=function(t){var n=this;(function(t,n){for(var i=t.split(T),r=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:{};return e(t,{xd:this.xd},this.opts),new Y(tt,this.uri(),t)},n}(K);function tt(t){var n=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!n||z))return new XMLHttpRequest}catch(t){}if(!n)try{return new(L[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}var nt="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),it=function(t){function n(){return t.apply(this,arguments)||this}s(n,t);var r=n.prototype;return r.doOpen=function(){var t=this.uri(),n=this.opts.protocols,i=nt?{}:_(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(i.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,n,i)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()},r.addEventListeners=function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws.C.unref(),t.onOpen()},this.ws.onclose=function(n){return t.onClose({description:"websocket connection closed",context:n})},this.ws.onmessage=function(n){return t.onData(n.data)},this.ws.onerror=function(n){return t.onError("websocket error",n)}},r.write=function(t){var n=this;this.writable=!1;for(var i=function(){var i=t[r],e=r===t.length-1;g(i,n.supportsBinary,(function(t){try{n.doWrite(i,t)}catch(t){}e&&R((function(){n.writable=!0,n.emitReserved("drain")}),n.setTimeoutFn)}))},r=0;rMath.pow(2,21)-1){u.enqueue(d);break}e=v*Math.pow(2,32)+a.getUint32(4),r=3}else{if(M(i)t){u.enqueue(d);break}}}})}(Number.MAX_SAFE_INTEGER,t.socket.binaryType),r=n.readable.pipeThrough(i).getReader(),e=U();e.readable.pipeTo(n.writable),t.U=e.writable.getWriter();!function n(){r.read().then((function(i){var r=i.done,e=i.value;r||(t.onPacket(e),n())})).catch((function(t){}))}();var o={type:"open"};t.query.sid&&(o.data='{"sid":"'.concat(t.query.sid,'"}')),t.U.write(o).then((function(){return t.onOpen()}))}))}))},r.write=function(t){var n=this;this.writable=!1;for(var i=function(){var i=t[r],e=r===t.length-1;n.U.write(i).then((function(){e&&R((function(){n.writable=!0,n.emitReserved("drain")}),n.setTimeoutFn)}))},r=0;r8e3)throw"URI too long";var n=t,i=t.indexOf("["),r=t.indexOf("]");-1!=i&&-1!=r&&(t=t.substring(0,i)+t.substring(i,r).replace(/:/g,";")+t.substring(r,t.length));for(var e,o,s=ut.exec(t||""),u={},h=14;h--;)u[ht[h]]=s[h]||"";return-1!=i&&-1!=r&&(u.source=n,u.host=u.host.substring(1,u.host.length-1).replace(/;/g,":"),u.authority=u.authority.replace("[","").replace("]","").replace(/;/g,":"),u.ipv6uri=!0),u.pathNames=function(t,n){var i=/\/{2,9}/g,r=n.replace(i,"/").split("/");"/"!=n.slice(0,1)&&0!==n.length||r.splice(0,1);"/"==n.slice(-1)&&r.splice(r.length-1,1);return r}(0,u.path),u.queryKey=(e=u.query,o={},e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,n,i){n&&(o[n]=i)})),o),u}var ct="function"==typeof addEventListener&&"function"==typeof removeEventListener,at=[];ct&&addEventListener("offline",(function(){at.forEach((function(t){return t()}))}),!1);var vt=function(t){function n(n,i){var r;if((r=t.call(this)||this).binaryType="arraybuffer",r.writeBuffer=[],r.M=0,r.I=-1,r.R=-1,r.L=-1,r._=1/0,n&&"object"===c(n)&&(i=n,n=null),n){var o=ft(n);i.hostname=o.host,i.secure="https"===o.protocol||"wss"===o.protocol,i.port=o.port,o.query&&(i.query=o.query)}else i.host&&(i.hostname=ft(i.host).host);return $(r,i),r.secure=null!=i.secure?i.secure:"undefined"!=typeof location&&"https:"===location.protocol,i.hostname&&!i.port&&(i.port=r.secure?"443":"80"),r.hostname=i.hostname||("undefined"!=typeof location?location.hostname:"localhost"),r.port=i.port||("undefined"!=typeof location&&location.port?location.port:r.secure?"443":"80"),r.transports=[],r.D={},i.transports.forEach((function(t){var n=t.prototype.name;r.transports.push(n),r.D[n]=t})),r.opts=e({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},i),r.opts.path=r.opts.path.replace(/\/$/,"")+(r.opts.addTrailingSlash?"/":""),"string"==typeof r.opts.query&&(r.opts.query=function(t){for(var n={},i=t.split("&"),r=0,e=i.length;r1))return this.writeBuffer;for(var t,n=1,i=0;i=57344?i+=3:(r++,i+=4);return i}(t):Math.ceil(1.33*(t.byteLength||t.size))),i>0&&n>this.L)return this.writeBuffer.slice(0,i);n+=2}return this.writeBuffer},i.W=function(){var t=this;if(!this._)return!0;var n=Date.now()>this._;return n&&(this._=0,R((function(){t.F("ping timeout")}),this.setTimeoutFn)),n},i.write=function(t,n,i){return this.J("message",t,n,i),this},i.send=function(t,n,i){return this.J("message",t,n,i),this},i.J=function(t,n,i,r){if("function"==typeof n&&(r=n,n=void 0),"function"==typeof i&&(r=i,i=null),"closing"!==this.readyState&&"closed"!==this.readyState){(i=i||{}).compress=!1!==i.compress;var e={type:t,data:n,options:i};this.emitReserved("packetCreate",e),this.writeBuffer.push(e),r&&this.once("flush",r),this.flush()}},i.close=function(){var t=this,n=function(){t.F("forced close"),t.transport.close()},i=function i(){t.off("upgrade",i),t.off("upgradeError",i),n()},r=function(){t.once("upgrade",i),t.once("upgradeError",i)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?r():n()})):this.upgrading?r():n()),this},i.B=function(t){if(n.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return this.transports.shift(),this.q();this.emitReserved("error",t),this.F("transport error",t)},i.F=function(t,n){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(this.clearTimeoutFn(this.Y),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),ct&&(this.P&&removeEventListener("beforeunload",this.P,!1),this.$)){var i=at.indexOf(this.$);-1!==i&&at.splice(i,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this.M=0}},n}(I);vt.protocol=4;var lt=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).Z=[],n}s(n,t);var i=n.prototype;return i.onOpen=function(){if(t.prototype.onOpen.call(this),"open"===this.readyState&&this.opts.upgrade)for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r="object"===c(n)?n:i;return(!r.transports||r.transports&&"string"==typeof r.transports[0])&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map((function(t){return st[t]})).filter((function(t){return!!t}))),t.call(this,n,r)||this}return s(n,t),n}(lt);pt.protocol;var dt="function"==typeof ArrayBuffer,yt=function(t){return"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer},bt=Object.prototype.toString,wt="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===bt.call(Blob),gt="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===bt.call(File);function mt(t){return dt&&(t instanceof ArrayBuffer||yt(t))||wt&&t instanceof Blob||gt&&t instanceof File}function kt(t,n){if(!t||"object"!==c(t))return!1;if(Array.isArray(t)){for(var i=0,r=t.length;i=0&&t.num1?e-1:0),s=1;s1?i-1:0),e=1;ei.l.retries&&(i.it.shift(),n&&n(t));else if(i.it.shift(),n){for(var e=arguments.length,o=new Array(e>1?e-1:0),s=1;s0&&void 0!==arguments[0]&&arguments[0];if(this.connected&&0!==this.it.length){var n=this.it[0];n.pending&&!t||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}},o.packet=function(t){t.nsp=this.nsp,this.io.ct(t)},o.onopen=function(){var t=this;"function"==typeof this.auth?this.auth((function(n){t.vt(n)})):this.vt(this.auth)},o.vt=function(t){this.packet({type:Bt.CONNECT,data:this.lt?e({pid:this.lt,offset:this.dt},t):t})},o.onerror=function(t){this.connected||this.emitReserved("connect_error",t)},o.onclose=function(t,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,n),this.yt()},o.yt=function(){var t=this;Object.keys(this.acks).forEach((function(n){if(!t.sendBuffer.some((function(t){return String(t.id)===n}))){var i=t.acks[n];delete t.acks[n],i.withError&&i.call(t,new Error("socket has been disconnected"))}}))},o.onpacket=function(t){if(t.nsp===this.nsp)switch(t.type){case Bt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Bt.EVENT:case Bt.BINARY_EVENT:this.onevent(t);break;case Bt.ACK:case Bt.BINARY_ACK:this.onack(t);break;case Bt.DISCONNECT:this.ondisconnect();break;case Bt.CONNECT_ERROR:this.destroy();var n=new Error(t.data.message);n.data=t.data.data,this.emitReserved("connect_error",n)}},o.onevent=function(t){var n=t.data||[];null!=t.id&&n.push(this.ack(t.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))},o.emitEvent=function(n){if(this.bt&&this.bt.length){var i,e=r(this.bt.slice());try{for(e.s();!(i=e.n()).done;){i.value.apply(this,n)}}catch(t){e.e(t)}finally{e.f()}}t.prototype.emit.apply(this,n),this.lt&&n.length&&"string"==typeof n[n.length-1]&&(this.dt=n[n.length-1])},o.ack=function(t){var n=this,i=!1;return function(){if(!i){i=!0;for(var r=arguments.length,e=new Array(r),o=0;o0&&t.jitter<=1?t.jitter:0,this.attempts=0}_t.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var n=Math.random(),i=Math.floor(n*this.jitter*t);t=1&Math.floor(10*n)?t+i:t-i}return 0|Math.min(t,this.max)},_t.prototype.reset=function(){this.attempts=0},_t.prototype.setMin=function(t){this.ms=t},_t.prototype.setMax=function(t){this.max=t},_t.prototype.setJitter=function(t){this.jitter=t};var Dt=function(t){function n(n,i){var r,e;(r=t.call(this)||this).nsps={},r.subs=[],n&&"object"===c(n)&&(i=n,n=void 0),(i=i||{}).path=i.path||"/socket.io",r.opts=i,$(r,i),r.reconnection(!1!==i.reconnection),r.reconnectionAttempts(i.reconnectionAttempts||1/0),r.reconnectionDelay(i.reconnectionDelay||1e3),r.reconnectionDelayMax(i.reconnectionDelayMax||5e3),r.randomizationFactor(null!==(e=i.randomizationFactor)&&void 0!==e?e:.5),r.backoff=new _t({min:r.reconnectionDelay(),max:r.reconnectionDelayMax(),jitter:r.randomizationFactor()}),r.timeout(null==i.timeout?2e4:i.timeout),r.st="closed",r.uri=n;var o=i.parser||xt;return r.encoder=new o.Encoder,r.decoder=new o.Decoder,r.et=!1!==i.autoConnect,r.et&&r.open(),r}s(n,t);var i=n.prototype;return i.reconnection=function(t){return arguments.length?(this.kt=!!t,t||(this.skipReconnect=!0),this):this.kt},i.reconnectionAttempts=function(t){return void 0===t?this.At:(this.At=t,this)},i.reconnectionDelay=function(t){var n;return void 0===t?this.jt:(this.jt=t,null===(n=this.backoff)||void 0===n||n.setMin(t),this)},i.randomizationFactor=function(t){var n;return void 0===t?this.Et:(this.Et=t,null===(n=this.backoff)||void 0===n||n.setJitter(t),this)},i.reconnectionDelayMax=function(t){var n;return void 0===t?this.Ot:(this.Ot=t,null===(n=this.backoff)||void 0===n||n.setMax(t),this)},i.timeout=function(t){return arguments.length?(this.Bt=t,this):this.Bt},i.maybeReconnectOnOpen=function(){!this.ot&&this.kt&&0===this.backoff.attempts&&this.reconnect()},i.open=function(t){var n=this;if(~this.st.indexOf("open"))return this;this.engine=new pt(this.uri,this.opts);var i=this.engine,r=this;this.st="opening",this.skipReconnect=!1;var e=It(i,"open",(function(){r.onopen(),t&&t()})),o=function(i){n.cleanup(),n.st="closed",n.emitReserved("error",i),t?t(i):n.maybeReconnectOnOpen()},s=It(i,"error",o);if(!1!==this.Bt){var u=this.Bt,h=this.setTimeoutFn((function(){e(),o(new Error("timeout")),i.close()}),u);this.opts.autoUnref&&h.unref(),this.subs.push((function(){n.clearTimeoutFn(h)}))}return this.subs.push(e),this.subs.push(s),this},i.connect=function(t){return this.open(t)},i.onopen=function(){this.cleanup(),this.st="open",this.emitReserved("open");var t=this.engine;this.subs.push(It(t,"ping",this.onping.bind(this)),It(t,"data",this.ondata.bind(this)),It(t,"error",this.onerror.bind(this)),It(t,"close",this.onclose.bind(this)),It(this.decoder,"decoded",this.ondecoded.bind(this)))},i.onping=function(){this.emitReserved("ping")},i.ondata=function(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}},i.ondecoded=function(t){var n=this;R((function(){n.emitReserved("packet",t)}),this.setTimeoutFn)},i.onerror=function(t){this.emitReserved("error",t)},i.socket=function(t,n){var i=this.nsps[t];return i?this.et&&!i.active&&i.connect():(i=new Lt(this,t,n),this.nsps[t]=i),i},i.wt=function(t){for(var n=0,i=Object.keys(this.nsps);n=this.At)this.backoff.reset(),this.emitReserved("reconnect_failed"),this.ot=!1;else{var i=this.backoff.duration();this.ot=!0;var r=this.setTimeoutFn((function(){n.skipReconnect||(t.emitReserved("reconnect_attempt",n.backoff.attempts),n.skipReconnect||n.open((function(i){i?(n.ot=!1,n.reconnect(),t.emitReserved("reconnect_error",i)):n.onreconnect()})))}),i);this.opts.autoUnref&&r.unref(),this.subs.push((function(){t.clearTimeoutFn(r)}))}},i.onreconnect=function(){var t=this.backoff.attempts;this.ot=!1,this.backoff.reset(),this.emitReserved("reconnect",t)},n}(I),Pt={};function $t(t,n){"object"===c(t)&&(n=t,t=void 0);var i,r=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,r=t;i=i||"undefined"!=typeof location&&location,null==t&&(t=i.protocol+"//"+i.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?i.protocol+t:i.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==i?i.protocol+"//"+t:"https://"+t),r=ft(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var e=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+e+":"+r.port+n,r.href=r.protocol+"://"+e+(i&&i.port===r.port?"":":"+r.port),r}(t,(n=n||{}).path||"/socket.io"),e=r.source,o=r.id,s=r.path,u=Pt[o]&&s in Pt[o].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||u?i=new Dt(e,n):(Pt[o]||(Pt[o]=new Dt(e,n)),i=Pt[o]),r.query&&!n.query&&(n.query=r.queryKey),i.socket(r.path,n)}return e($t,{Manager:Dt,Socket:Lt,io:$t,connect:$t}),$t})); //# sourceMappingURL=socket.io.min.js.map onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/000077500000000000000000000000001521174352300262765ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/403.html000066400000000000000000000012331521174352300274710ustar00rootroot00000000000000 OnionShare: 403 Forbidden

You are not allowed to perform that action at this time.

onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/404.html000066400000000000000000000011561521174352300274760ustar00rootroot00000000000000 OnionShare: 404 Not Found

404 Not Found

onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/405.html000066400000000000000000000012001521174352300274650ustar00rootroot00000000000000 OnionShare: 405 Method Not Allowed

405 Method Not Allowed

onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/500.html000066400000000000000000000012701521174352300274700ustar00rootroot00000000000000 OnionShare: An error occurred

Sorry, an unexpected error seems to have occurred, and your request didn't succeed.

onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/chat.html000066400000000000000000000026711521174352300301110ustar00rootroot00000000000000 {% if title %}{{ title }}{% else %}OnionShare Chat{% endif %}

{% if title %}{{ title }}{% else %}OnionShare Chat{% endif %}

onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/denied.html000066400000000000000000000003461521174352300304170ustar00rootroot00000000000000 OnionShare

OnionShare download in progress

onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/listing.html000066400000000000000000000033301521174352300306340ustar00rootroot00000000000000 {% if title %}{{ title }}{% else %}OnionShare{% endif %}

{% if title %}{{ title }}{% else %}OnionShare{% endif %}

{% if breadcrumbs %} {% endif %}
Filename
Size
{% for info in dirs %} {% endfor %} {% for info in files %}
{{ info.size_human }}
{% endfor %}
onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/receive.html000066400000000000000000000051501521174352300306070ustar00rootroot00000000000000 {% if title %}{{ title }}{% else %}OnionShare Dropbox{% endif %}

{% if title %}{{ title }}{% else %}OnionShare Dropbox{% endif %}

{% if not disable_text and not disable_files %}

Submit Files or Messages

You can submit files, a message, or both.

Remember, you are accessing this service anonymously! Provide contact info if you want a response to the message.

{% endif %} {% if not disable_text and disable_files %}

Submit Messages

You can submit a message.

Remember, you are accessing this service anonymously! Provide contact info if you want a response to the message.

{% endif %} {% if disable_text and not disable_files %}

Submit Files

You can submit files

{% endif %}
    {% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %}
  • {{ message }}
  • {% endfor %} {% endif %} {% endwith %}
{% if not disable_files %}

{% endif %} {% if not disable_text %}

{% endif %}

onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/send.html000066400000000000000000000046161521174352300301240ustar00rootroot00000000000000 {% if title %}{{ title }}{% else %}OnionShare{% endif %}

{% if title %}{{ title }}{% else %}OnionShare{% endif %}

Total size: {{ filesize_human }} {% if is_zipped %} (compressed){% endif %}
Download Files
{% if breadcrumbs %} {% endif %}
Filename
Size
{% for info in dirs %} {% endfor %} {% for info in files %}
{% if download_individual_files %} {{ info.basename }} {% else %} {{ info.basename }} {% endif %}
{{ info.size_human }}
{% endfor %}
onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/templates/thankyou.html000066400000000000000000000016001521174352300310230ustar00rootroot00000000000000 OnionShare is closed

{% if title %}{{ title }}{% else %}OnionShare{% endif %}

Thank you for using OnionShare

You may now close this window.

onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/torrc_template000066400000000000000000000014771521174352300272600ustar00rootroot00000000000000DataDirectory {{data_directory}} SocksPort {{socks_port}} CookieAuthentication 1 CookieAuthFile {{cookie_auth_file}} AvoidDiskWrites 1 Log notice stdout GeoIPFile {{geo_ip_file}} GeoIPv6File {{geo_ipv6_file}} # Bridge configurations ClientTransportPlugin meek_lite,obfs2,obfs3,obfs4,scramblesuit exec {{obfs4proxy_path}} ClientTransportPlugin snowflake exec {{snowflake_path}} -url https://snowflake-broker.torproject.net.global.prod.fastly.net/ -front cdn.sstatic.net -ice stun:stun.l.google.com:19302,stun:stun.voip.blackberry.com:3478,stun:stun.altar.com.pl:3478,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.sonetel.net:3478,stun:stun.stunprotocol.org:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478 onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/torrc_template-meek_lite_azure000066400000000000000000000002321521174352300324060ustar00rootroot00000000000000# Enable built-in meek-azure bridge Bridge meek_lite 192.0.2.20:80 url=https://1314488750.rsc.cdn77.org front=www.phpmyadmin.net utls=HelloRandomizedALPN onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/torrc_template-obfs4000066400000000000000000000033741521174352300302710ustar00rootroot00000000000000# Enable built-in obfs4 bridge Bridge obfs4 146.57.248.225:22 10A6CD36A537FCE513A322361547444B393989F0 cert=K1gDtDAIcUfeLqbstggjIw2rtgIKqdIhUlHp82XRqNSq/mtAjp1BIC9vHKJ2FAEpGssTPw iat-mode=0 Bridge obfs4 192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=1 Bridge obfs4 193.11.166.194:27015 2D82C2E354D531A68469ADF7F878FA6060C6BACA cert=4TLQPJrTSaDffMK7Nbao6LC7G9OW/NHkUwIdjLSS3KYf0Nv4/nQiiI8dY2TcsQx01NniOg iat-mode=0 Bridge obfs4 193.11.166.194:27020 86AC7B8D430DAC4117E9F42C9EAED18133863AAF cert=0LDeJH4JzMDtkJJrFphJCiPqKx7loozKN7VNfuukMGfHO0Z8OGdzHVkhVAOfo1mUdv9cMg iat-mode=0 Bridge obfs4 193.11.166.194:27025 1AE2C08904527FEA90C4C4F8C1083EA59FBC6FAF cert=ItvYZzW5tn6v3G4UnQa6Qz04Npro6e81AP70YujmK/KXwDFPTs3aHXcHp4n8Vt6w/bv8cA iat-mode=0 Bridge obfs4 209.148.46.65:443 74FAD13168806246602538555B5521A0383A1875 cert=ssH+9rP8dG2NLDN2XuFw63hIO/9MNNinLmxQDpVa+7kTOa9/m+tGWT1SmSYpQ9uTBGa6Hw iat-mode=0 Bridge obfs4 37.218.245.14:38224 D9A82D2F9C2F65A18407B1D2B764F130847F8B5D cert=bjRaMrr1BRiAW8IE9U5z27fQaYgOhX1UCmOpg2pFpoMvo6ZgQMzLsaTzzQNTlm7hNcb+Sg iat-mode=0 Bridge obfs4 45.145.95.6:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0 Bridge obfs4 51.222.13.177:80 5EDAC3B810E12B01F6FD8050D2FD3E277B289A08 cert=2uplIpLQ0q9+0qMFrK5pkaYRDOe460LL9WHBvatgkuRr/SL31wBOEupaMMJ6koRE6Ld0ew iat-mode=0 Bridge obfs4 85.31.186.26:443 91A6354697E6B02A386312F68D82CF86824D3606 cert=PBwr+S8JTVZo6MPdHnkTwXJPILWADLqfMGoVvhZClMq/Urndyd42BwX9YFJHZnBB3H0XCw iat-mode=0 Bridge obfs4 85.31.186.98:443 011F2599C0E9B27EE74B353155E244813763C3E5 cert=ayq0XzCwhpdysn5o0EyDUbmSOx3X/oTEbzDMvczHOdBJKlvIdHHLJGkZARtT4dcBFArPPg iat-mode=0 onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/torrc_template-snowflake000066400000000000000000000016631521174352300312440ustar00rootroot00000000000000# Enable built-in snowflake bridge Bridge snowflake 192.0.2.3:80 2B280B23E1107BB62ABFC40DDCC8824814F80A72 fingerprint=2B280B23E1107BB62ABFC40DDCC8824814F80A72 url=https://1098762253.rsc.cdn77.org/ fronts=www.cdn77.com,www.phpmyadmin.net ice=stun:stun.antisip.com:3478,stun:stun.epygi.com:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.mixvoip.com:3478,stun:stun.nextcloud.com:3478,stun:stun.bethesda.net:3478,stun:stun.nextcloud.com:443 utls-imitate=hellorandomizedalpn Bridge snowflake 192.0.2.4:80 8838024498816A039FCBBAB14E6F40A0843051FA fingerprint=8838024498816A039FCBBAB14E6F40A0843051FA url=https://1098762253.rsc.cdn77.org/ fronts=www.cdn77.com,www.phpmyadmin.net ice=stun:stun.antisip.com:3478,stun:stun.epygi.com:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.mixvoip.com:3478,stun:stun.nextcloud.com:3478,stun:stun.bethesda.net:3478,stun:stun.nextcloud.com:443 utls-imitate=hellorandomizedalpn onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/version.txt000066400000000000000000000000061521174352300265220ustar00rootroot000000000000002.6.4 onionshare-onionshare-26fcdc5/cli/onionshare_cli/resources/wordlist.txt000066400000000000000000001713001521174352300267120ustar00rootroot00000000000000abacus abdomen abdominal abide abiding ability ablaze able abnormal abrasion abrasive abreast abridge abroad abruptly absence absentee absently absinthe absolute absolve abstain abstract absurd accent acclaim acclimate accompany account accuracy accurate accustom acetone achiness aching acid acorn acquaint acquire acre acrobat acronym acting action activate activator active activism activist activity actress acts acutely acuteness aeration aerobics aerosol aerospace afar affair affected affecting affection affidavit affiliate affirm affix afflicted affluent afford affront aflame afloat aflutter afoot afraid afterglow afterlife aftermath aftermost afternoon aged ageless agency agenda agent aggregate aghast agile agility aging agnostic agonize agonizing agony agreeable agreeably agreed agreeing agreement aground ahead ahoy aide aids aim ajar alabaster alarm albatross album alfalfa algebra algorithm alias alibi alienable alienate aliens alike alive alkaline alkalize almanac almighty almost aloe aloft aloha alone alongside aloof alphabet alright although altitude alto aluminum alumni always amaretto amaze amazingly amber ambiance ambiguity ambiguous ambition ambitious ambulance ambush amendable amendment amends amenity amiable amicably amid amigo amino amiss ammonia ammonium amnesty amniotic among amount amperage ample amplifier amplify amply amuck amulet amusable amused amusement amuser amusing anaconda anaerobic anagram anatomist anatomy anchor anchovy ancient android anemia anemic aneurism anew angelfish angelic anger angled angler angles angling angrily angriness anguished angular animal animate animating animation animator anime animosity ankle annex annotate announcer annoying annually annuity anointer another answering antacid antarctic anteater antelope antennae anthem anthill anthology antibody antics antidote antihero antiquely antiques antiquity antirust antitoxic antitrust antiviral antivirus antler antonym antsy anvil anybody anyhow anymore anyone anyplace anything anytime anyway anywhere aorta apache apostle appealing appear appease appeasing appendage appendix appetite appetizer applaud applause apple appliance applicant applied apply appointee appraisal appraiser apprehend approach approval approve apricot april apron aptitude aptly aqua aqueduct arbitrary arbitrate ardently area arena arguable arguably argue arise armadillo armband armchair armed armful armhole arming armless armoire armored armory armrest army aroma arose around arousal arrange array arrest arrival arrive arrogance arrogant arson art ascend ascension ascent ascertain ashamed ashen ashes ashy aside askew asleep asparagus aspect aspirate aspire aspirin astonish astound astride astrology astronaut astronomy astute atlantic atlas atom atonable atop atrium atrocious atrophy attach attain attempt attendant attendee attention attentive attest attic attire attitude attractor attribute atypical auction audacious audacity audible audibly audience audio audition augmented august authentic author autism autistic autograph automaker automated automatic autopilot available avalanche avatar avenge avenging avenue average aversion avert aviation aviator avid avoid await awaken award aware awhile awkward awning awoke awry axis babble babbling babied baboon backache backboard backboned backdrop backed backer backfield backfire backhand backing backlands backlash backless backlight backlit backlog backpack backpedal backrest backroom backshift backside backslid backspace backspin backstab backstage backtalk backtrack backup backward backwash backwater backyard bacon bacteria bacterium badass badge badland badly badness baffle baffling bagel bagful baggage bagged baggie bagginess bagging baggy bagpipe baguette baked bakery bakeshop baking balance balancing balcony balmy balsamic bamboo banana banish banister banjo bankable bankbook banked banker banking banknote bankroll banner bannister banshee banter barbecue barbed barbell barber barcode barge bargraph barista baritone barley barmaid barman barn barometer barrack barracuda barrel barrette barricade barrier barstool bartender barterer bash basically basics basil basin basis basket batboy batch bath baton bats battalion battered battering battery batting battle bauble bazooka blabber bladder blade blah blame blaming blanching blandness blank blaspheme blasphemy blast blatancy blatantly blazer blazing bleach bleak bleep blemish blend bless blighted blimp bling blinked blinker blinking blinks blip blissful blitz blizzard bloated bloating blob blog bloomers blooming blooper blot blouse blubber bluff bluish blunderer blunt blurb blurred blurry blurt blush blustery boaster boastful boasting boat bobbed bobbing bobble bobcat bobsled bobtail bodacious body bogged boggle bogus boil bok bolster bolt bonanza bonded bonding bondless boned bonehead boneless bonelike boney bonfire bonnet bonsai bonus bony boogeyman boogieman book boondocks booted booth bootie booting bootlace bootleg boots boozy borax boring borough borrower borrowing boss botanical botanist botany botch both bottle bottling bottom bounce bouncing bouncy bounding boundless bountiful bovine boxcar boxer boxing boxlike boxy breach breath breeches breeching breeder breeding breeze breezy brethren brewery brewing briar bribe brick bride bridged brigade bright brilliant brim bring brink brisket briskly briskness bristle brittle broadband broadcast broaden broadly broadness broadside broadways broiler broiling broken broker bronchial bronco bronze bronzing brook broom brought browbeat brownnose browse browsing bruising brunch brunette brunt brush brussels brute brutishly bubble bubbling bubbly buccaneer bucked bucket buckle buckshot buckskin bucktooth buckwheat buddhism buddhist budding buddy budget buffalo buffed buffer buffing buffoon buggy bulb bulge bulginess bulgur bulk bulldog bulldozer bullfight bullfrog bullhorn bullion bullish bullpen bullring bullseye bullwhip bully bunch bundle bungee bunion bunkbed bunkhouse bunkmate bunny bunt busboy bush busily busload bust busybody buzz cabana cabbage cabbie cabdriver cable caboose cache cackle cacti cactus caddie caddy cadet cadillac cadmium cage cahoots cake calamari calamity calcium calculate calculus caliber calibrate calm caloric calorie calzone camcorder cameo camera camisole camper campfire camping campsite campus canal canary cancel candied candle candy cane canine canister cannabis canned canning cannon cannot canola canon canopener canopy canteen canyon capable capably capacity cape capillary capital capitol capped capricorn capsize capsule caption captivate captive captivity capture caramel carat caravan carbon cardboard carded cardiac cardigan cardinal cardstock carefully caregiver careless caress caretaker cargo caring carless carload carmaker carnage carnation carnival carnivore carol carpenter carpentry carpool carport carried carrot carrousel carry cartel cartload carton cartoon cartridge cartwheel carve carving carwash cascade case cash casing casino casket cassette casually casualty catacomb catalog catalyst catalyze catapult cataract catatonic catcall catchable catcher catching catchy caterer catering catfight catfish cathedral cathouse catlike catnap catnip catsup cattail cattishly cattle catty catwalk caucasian caucus causal causation cause causing cauterize caution cautious cavalier cavalry caviar cavity cedar celery celestial celibacy celibate celtic cement census ceramics ceremony certainly certainty certified certify cesarean cesspool chafe chaffing chain chair chalice challenge chamber chamomile champion chance change channel chant chaos chaperone chaplain chapped chaps chapter character charbroil charcoal charger charging chariot charity charm charred charter charting chase chasing chaste chastise chastity chatroom chatter chatting chatty cheating cheddar cheek cheer cheese cheesy chef chemicals chemist chemo cherisher cherub chess chest chevron chevy chewable chewer chewing chewy chief chihuahua childcare childhood childish childless childlike chili chill chimp chip chirping chirpy chitchat chivalry chive chloride chlorine choice chokehold choking chomp chooser choosing choosy chop chosen chowder chowtime chrome chubby chuck chug chummy chump chunk churn chute cider cilantro cinch cinema cinnamon circle circling circular circulate circus citable citadel citation citizen citric citrus city civic civil clad claim clambake clammy clamor clamp clamshell clang clanking clapped clapper clapping clarify clarinet clarity clash clasp class clatter clause clavicle claw clay clean clear cleat cleaver cleft clench clergyman clerical clerk clever clicker client climate climatic cling clinic clinking clip clique cloak clobber clock clone cloning closable closure clothes clothing cloud clover clubbed clubbing clubhouse clump clumsily clumsy clunky clustered clutch clutter coach coagulant coastal coaster coasting coastland coastline coat coauthor cobalt cobbler cobweb cocoa coconut cod coeditor coerce coexist coffee cofounder cognition cognitive cogwheel coherence coherent cohesive coil coke cola cold coleslaw coliseum collage collapse collar collected collector collide collie collision colonial colonist colonize colony colossal colt coma come comfort comfy comic coming comma commence commend comment commerce commode commodity commodore common commotion commute commuting compacted compacter compactly compactor companion company compare compel compile comply component composed composer composite compost composure compound compress comprised computer computing comrade concave conceal conceded concept concerned concert conch concierge concise conclude concrete concur condense condiment condition condone conducive conductor conduit cone confess confetti confidant confident confider confiding configure confined confining confirm conflict conform confound confront confused confusing confusion congenial congested congrats congress conical conjoined conjure conjuror connected connector consensus consent console consoling consonant constable constant constrain constrict construct consult consumer consuming contact container contempt contend contented contently contents contest context contort contour contrite control contusion convene convent copartner cope copied copier copilot coping copious copper copy coral cork cornball cornbread corncob cornea corned corner cornfield cornflake cornhusk cornmeal cornstalk corny coronary coroner corporal corporate corral correct corridor corrode corroding corrosive corsage corset cortex cosigner cosmetics cosmic cosmos cosponsor cost cottage cotton couch cough could countable countdown counting countless country county courier covenant cover coveted coveting coyness cozily coziness cozy crabbing crabgrass crablike crabmeat cradle cradling crafter craftily craftsman craftwork crafty cramp cranberry crane cranial cranium crank crate crave craving crawfish crawlers crawling crayfish crayon crazed crazily craziness crazy creamed creamer creamlike crease creasing creatable create creation creative creature credible credibly credit creed creme creole crepe crept crescent crested cresting crestless crevice crewless crewman crewmate crib cricket cried crier crimp crimson cringe cringing crinkle crinkly crisped crisping crisply crispness crispy criteria critter croak crock crook croon crop cross crouch crouton crowbar crowd crown crucial crudely crudeness cruelly cruelness cruelty crumb crummiest crummy crumpet crumpled cruncher crunching crunchy crusader crushable crushed crusher crushing crust crux crying cryptic crystal cubbyhole cube cubical cubicle cucumber cuddle cuddly cufflink culinary culminate culpable culprit cultivate cultural culture cupbearer cupcake cupid cupped cupping curable curator curdle cure curfew curing curled curler curliness curling curly curry curse cursive cursor curtain curtly curtsy curvature curve curvy cushy cusp cussed custard custodian custody customary customer customize customs cut cycle cyclic cycling cyclist cylinder cymbal cytoplasm cytoplast dab dad daffodil dagger daily daintily dainty dairy daisy dallying dance dancing dandelion dander dandruff dandy danger dangle dangling daredevil dares daringly darkened darkening darkish darkness darkroom darling darn dart darwinism dash dastardly data datebook dating daughter daunting dawdler dawn daybed daybreak daycare daydream daylight daylong dayroom daytime dazzler dazzling deacon deafening deafness dealer dealing dealmaker dealt dean debatable debate debating debit debrief debtless debtor debug debunk decade decaf decal decathlon decay deceased deceit deceiver deceiving december decency decent deception deceptive decibel decidable decimal decimeter decipher deck declared decline decode decompose decorated decorator decoy decrease decree dedicate dedicator deduce deduct deed deem deepen deeply deepness deface defacing defame default defeat defection defective defendant defender defense defensive deferral deferred defiance defiant defile defiling define definite deflate deflation deflator deflected deflector defog deforest defraud defrost deftly defuse defy degraded degrading degrease degree dehydrate deity dejected delay delegate delegator delete deletion delicacy delicate delicious delighted delirious delirium deliverer delivery delouse delta deluge delusion deluxe demanding demeaning demeanor demise democracy democrat demote demotion demystify denatured deniable denial denim denote dense density dental dentist denture deny deodorant deodorize departed departure depict deplete depletion deplored deploy deport depose depraved depravity deprecate depress deprive depth deputize deputy derail deranged derby derived desecrate deserve deserving designate designed designer designing deskbound desktop deskwork desolate despair despise despite destiny destitute destruct detached detail detection detective detector detention detergent detest detonate detonator detoxify detract deuce devalue deviancy deviant deviate deviation deviator device devious devotedly devotee devotion devourer devouring devoutly dexterity dexterous diabetes diabetic diabolic diagnoses diagnosis diagram dial diameter diaper diaphragm diary dice dicing dictate dictation dictator difficult diffused diffuser diffusion diffusive dig dilation diligence diligent dill dilute dime diminish dimly dimmed dimmer dimness dimple diner dingbat dinghy dinginess dingo dingy dining dinner diocese dioxide diploma dipped dipper dipping directed direction directive directly directory direness dirtiness disabled disagree disallow disarm disarray disaster disband disbelief disburse discard discern discharge disclose discolor discount discourse discover discuss disdain disengage disfigure disgrace dish disinfect disjoin disk dislike disliking dislocate dislodge disloyal dismantle dismay dismiss dismount disobey disorder disown disparate disparity dispatch dispense dispersal dispersed disperser displace display displease disposal dispose disprove dispute disregard disrupt dissuade distance distant distaste distill distinct distort distract distress district distrust ditch ditto ditzy dividable divided dividend dividers dividing divinely diving divinity divisible divisibly division divisive divorcee dizziness dizzy doable docile dock doctrine document dodge dodgy doily doing dole dollar dollhouse dollop dolly dolphin domain domelike domestic dominion dominoes donated donation donator donor donut doodle doorbell doorframe doorknob doorman doormat doornail doorpost doorstep doorstop doorway doozy dork dormitory dorsal dosage dose dotted doubling douche dove down dowry doze drab dragging dragonfly dragonish dragster drainable drainage drained drainer drainpipe dramatic dramatize drank drapery drastic draw dreaded dreadful dreadlock dreamboat dreamily dreamland dreamless dreamlike dreamt dreamy drearily dreary drench dress drew dribble dried drier drift driller drilling drinkable drinking dripping drippy drivable driven driver driveway driving drizzle drizzly drone drool droop drop-down dropbox dropkick droplet dropout dropper drove drown drowsily drudge drum dry dubbed dubiously duchess duckbill ducking duckling ducktail ducky duct dude duffel dugout duh duke duller dullness duly dumping dumpling dumpster duo dupe duplex duplicate duplicity durable durably duration duress during dusk dust dutiful duty duvet dwarf dweeb dwelled dweller dwelling dwindle dwindling dynamic dynamite dynasty dyslexia dyslexic each eagle earache eardrum earflap earful earlobe early earmark earmuff earphone earpiece earplugs earring earshot earthen earthlike earthling earthly earthworm earthy earwig easeful easel easiest easily easiness easing eastbound eastcoast easter eastward eatable eaten eatery eating eats ebay ebony ebook ecard eccentric echo eclair eclipse ecologist ecology economic economist economy ecosphere ecosystem edge edginess edging edgy edition editor educated education educator eel effective effects efficient effort eggbeater egging eggnog eggplant eggshell egomaniac egotism egotistic either eject elaborate elastic elated elbow eldercare elderly eldest electable election elective elephant elevate elevating elevation elevator eleven elf eligible eligibly eliminate elite elitism elixir elk ellipse elliptic elm elongated elope eloquence eloquent elsewhere elude elusive elves email embargo embark embassy embattled embellish ember embezzle emblaze emblem embody embolism emboss embroider emcee emerald emergency emission emit emote emoticon emotion empathic empathy emperor emphases emphasis emphasize emphatic empirical employed employee employer emporium empower emptier emptiness empty emu enable enactment enamel enchanted enchilada encircle enclose enclosure encode encore encounter encourage encroach encrust encrypt endanger endeared endearing ended ending endless endnote endocrine endorphin endorse endowment endpoint endurable endurance enduring energetic energize energy enforced enforcer engaged engaging engine engorge engraved engraver engraving engross engulf enhance enigmatic enjoyable enjoyably enjoyer enjoying enjoyment enlarged enlarging enlighten enlisted enquirer enrage enrich enroll enslave ensnare ensure entail entangled entering entertain enticing entire entitle entity entomb entourage entrap entree entrench entrust entryway entwine enunciate envelope enviable enviably envious envision envoy envy enzyme epic epidemic epidermal epidermis epidural epilepsy epileptic epilogue epiphany episode equal equate equation equator equinox equipment equity equivocal eradicate erasable erased eraser erasure ergonomic errand errant erratic error erupt escalate escalator escapable escapade escapist escargot eskimo esophagus espionage espresso esquire essay essence essential establish estate esteemed estimate estimator estranged estrogen etching eternal eternity ethanol ether ethically ethics euphemism evacuate evacuee evade evaluate evaluator evaporate evasion evasive even everglade evergreen everybody everyday everyone evict evidence evident evil evoke evolution evolve exact exalted example excavate excavator exceeding exception excess exchange excitable exciting exclaim exclude excluding exclusion exclusive excretion excretory excursion excusable excusably excuse exemplary exemplify exemption exerciser exert exes exfoliate exhale exhaust exhume exile existing exit exodus exonerate exorcism exorcist expand expanse expansion expansive expectant expedited expediter expel expend expenses expensive expert expire expiring explain expletive explicit explode exploit explore exploring exponent exporter exposable expose exposure express expulsion exquisite extended extending extent extenuate exterior external extinct extortion extradite extras extrovert extrude extruding exuberant fable fabric fabulous facebook facecloth facedown faceless facelift faceplate faceted facial facility facing facsimile faction factoid factor factsheet factual faculty fade fading failing falcon fall false falsify fame familiar family famine famished fanatic fancied fanciness fancy fanfare fang fanning fantasize fantastic fantasy fascism fastball faster fasting fastness faucet favorable favorably favored favoring favorite fax feast federal fedora feeble feed feel feisty feline felt-tip feminine feminism feminist feminize femur fence fencing fender ferment fernlike ferocious ferocity ferret ferris ferry fervor fester festival festive festivity fetal fetch fever fiber fiction fiddle fiddling fidelity fidgeting fidgety fifteen fifth fiftieth fifty figment figure figurine filing filled filler filling film filter filth filtrate finale finalist finalize finally finance financial finch fineness finer finicky finished finisher finishing finite finless finlike fiscally fit five flaccid flagman flagpole flagship flagstick flagstone flail flakily flaky flame flammable flanked flanking flannels flap flaring flashback flashbulb flashcard flashily flashing flashy flask flatbed flatfoot flatly flatness flatten flattered flatterer flattery flattop flatware flatworm flavored flavorful flavoring flaxseed fled fleshed fleshy flick flier flight flinch fling flint flip flirt float flock flogging flop floral florist floss flounder flyable flyaway flyer flying flyover flypaper foam foe fog foil folic folk follicle follow fondling fondly fondness fondue font food fool footage football footbath footboard footer footgear foothill foothold footing footless footman footnote footpad footpath footprint footrest footsie footsore footwear footwork fossil foster founder founding fountain fox foyer fraction fracture fragile fragility fragment fragrance fragrant frail frame framing frantic fraternal frayed fraying frays freckled freckles freebase freebee freebie freedom freefall freehand freeing freeload freely freemason freeness freestyle freeware freeway freewill freezable freezing freight french frenzied frenzy frequency frequent fresh fretful fretted friction friday fridge fried friend frighten frightful frigidity frigidly frill fringe frisbee frisk fritter frivolous frolic from front frostbite frosted frostily frosting frostlike frosty froth frown frozen fructose frugality frugally fruit frustrate frying gab gaffe gag gainfully gaining gains gala gallantly galleria gallery galley gallon gallows gallstone galore galvanize gambling game gaming gamma gander gangly gangrene gangway gap garage garbage garden gargle garland garlic garment garnet garnish garter gas gatherer gathering gating gauging gauntlet gauze gave gawk gazing gear gecko geek geiger gem gender generic generous genetics genre gentile gentleman gently gents geography geologic geologist geology geometric geometry geranium gerbil geriatric germicide germinate germless germproof gestate gestation gesture getaway getting getup giant gibberish giblet giddily giddiness giddy gift gigabyte gigahertz gigantic giggle giggling giggly gigolo gilled gills gimmick girdle giveaway given giver giving gizmo gizzard glacial glacier glade gladiator gladly glamorous glamour glance glancing glandular glare glaring glass glaucoma glazing gleaming gleeful glider gliding glimmer glimpse glisten glitch glitter glitzy gloater gloating gloomily gloomy glorified glorifier glorify glorious glory gloss glove glowing glowworm glucose glue gluten glutinous glutton gnarly gnat goal goatskin goes goggles going goldfish goldmine goldsmith golf goliath gonad gondola gone gong good gooey goofball goofiness goofy google goon gopher gore gorged gorgeous gory gosling gossip gothic gotten gout gown grab graceful graceless gracious gradation graded grader gradient grading gradually graduate graffiti grafted grafting grain granddad grandkid grandly grandma grandpa grandson granite granny granola grant granular grape graph grapple grappling grasp grass gratified gratify grating gratitude gratuity gravel graveness graves graveyard gravitate gravity gravy gray grazing greasily greedily greedless greedy green greeter greeting grew greyhound grid grief grievance grieving grievous grill grimace grimacing grime griminess grimy grinch grinning grip gristle grit groggily groggy groin groom groove grooving groovy grope ground grouped grout grove grower growing growl grub grudge grudging grueling gruffly grumble grumbling grumbly grumpily grunge grunt guacamole guidable guidance guide guiding guileless guise gulf gullible gully gulp gumball gumdrop gumminess gumming gummy gurgle gurgling guru gush gusto gusty gutless guts gutter guy guzzler gyration habitable habitant habitat habitual hacked hacker hacking hacksaw had haggler haiku half halogen halt halved halves hamburger hamlet hammock hamper hamster hamstring handbag handball handbook handbrake handcart handclap handclasp handcraft handcuff handed handful handgrip handgun handheld handiness handiwork handlebar handled handler handling handmade handoff handpick handprint handrail handsaw handset handsfree handshake handstand handwash handwork handwoven handwrite handyman hangnail hangout hangover hangup hankering hankie hanky haphazard happening happier happiest happily happiness happy harbor hardcopy hardcore hardcover harddisk hardened hardener hardening hardhat hardhead hardiness hardly hardness hardship hardware hardwired hardwood hardy harmful harmless harmonica harmonics harmonize harmony harness harpist harsh harvest hash hassle haste hastily hastiness hasty hatbox hatchback hatchery hatchet hatching hatchling hate hatless hatred haunt haven hazard hazelnut hazily haziness hazing hazy headache headband headboard headcount headdress headed header headfirst headgear heading headlamp headless headlock headphone headpiece headrest headroom headscarf headset headsman headstand headstone headway headwear heap heat heave heavily heaviness heaving hedge hedging heftiness hefty helium helmet helper helpful helping helpless helpline hemlock hemstitch hence henchman henna herald herbal herbicide herbs heritage hermit heroics heroism herring herself hertz hesitancy hesitant hesitate hexagon hexagram hubcap huddle huddling huff hug hula hulk hull human humble humbling humbly humid humiliate humility humming hummus humongous humorist humorless humorous humpback humped humvee hunchback hundredth hunger hungrily hungry hunk hunter hunting huntress huntsman hurdle hurled hurler hurling hurray hurricane hurried hurry hurt husband hush husked huskiness hut hybrid hydrant hydrated hydration hydrogen hydroxide hyperlink hypertext hyphen hypnoses hypnosis hypnotic hypnotism hypnotist hypnotize hypocrisy hypocrite ibuprofen ice iciness icing icky icon icy idealism idealist idealize ideally idealness identical identify identity ideology idiocy idiom idly igloo ignition ignore iguana illicitly illusion illusive image imaginary imagines imaging imbecile imitate imitation immature immerse immersion imminent immobile immodest immorally immortal immovable immovably immunity immunize impaired impale impart impatient impeach impeding impending imperfect imperial impish implant implement implicate implicit implode implosion implosive imply impolite important importer impose imposing impotence impotency impotent impound imprecise imprint imprison impromptu improper improve improving improvise imprudent impulse impulsive impure impurity iodine iodize ion ipad iphone ipod irate irk iron irregular irrigate irritable irritably irritant irritate islamic islamist isolated isolating isolation isotope issue issuing italicize italics item itinerary itunes ivory ivy jab jackal jacket jackknife jackpot jailbird jailbreak jailer jailhouse jalapeno jam janitor january jargon jarring jasmine jaundice jaunt java jawed jawless jawline jaws jaybird jaywalker jazz jeep jeeringly jellied jelly jersey jester jet jiffy jigsaw jimmy jingle jingling jinx jitters jittery job jockey jockstrap jogger jogging john joining jokester jokingly jolliness jolly jolt jot jovial joyfully joylessly joyous joyride joystick jubilance jubilant judge judgingly judicial judiciary judo juggle juggling jugular juice juiciness juicy jujitsu jukebox july jumble jumbo jump junction juncture june junior juniper junkie junkman junkyard jurist juror jury justice justifier justify justly justness juvenile kabob kangaroo karaoke karate karma kebab keenly keenness keep keg kelp kennel kept kerchief kerosene kettle kick kiln kilobyte kilogram kilometer kilowatt kilt kimono kindle kindling kindly kindness kindred kinetic kinfolk king kinship kinsman kinswoman kissable kisser kissing kitchen kite kitten kitty kiwi kleenex knapsack knee knelt knickers knoll koala kooky kosher krypton kudos kung labored laborer laboring laborious labrador ladder ladies ladle ladybug ladylike lagged lagging lagoon lair lake lance landed landfall landfill landing landlady landless landline landlord landmark landmass landmine landowner landscape landside landslide language lankiness lanky lantern lapdog lapel lapped lapping laptop lard large lark lash lasso last latch late lather latitude latrine latter latticed launch launder laundry laurel lavender lavish laxative lazily laziness lazy lecturer left legacy legal legend legged leggings legible legibly legislate lego legroom legume legwarmer legwork lemon lend length lens lent leotard lesser letdown lethargic lethargy letter lettuce level leverage levers levitate levitator liability liable liberty librarian library licking licorice lid life lifter lifting liftoff ligament likely likeness likewise liking lilac lilly lily limb limeade limelight limes limit limping limpness line lingo linguini linguist lining linked linoleum linseed lint lion lip liquefy liqueur liquid lisp list litigate litigator litmus litter little livable lived lively liver livestock lividly living lizard lubricant lubricate lucid luckily luckiness luckless lucrative ludicrous lugged lukewarm lullaby lumber luminance luminous lumpiness lumping lumpish lunacy lunar lunchbox luncheon lunchroom lunchtime lung lurch lure luridness lurk lushly lushness luster lustfully lustily lustiness lustrous lusty luxurious luxury lying lyrically lyricism lyricist lyrics macarena macaroni macaw mace machine machinist magazine magenta maggot magical magician magma magnesium magnetic magnetism magnetize magnifier magnify magnitude magnolia mahogany maimed majestic majesty majorette majority makeover maker makeshift making malformed malt mama mammal mammary mammogram manager managing manatee mandarin mandate mandatory mandolin manger mangle mango mangy manhandle manhole manhood manhunt manicotti manicure manifesto manila mankind manlike manliness manly manmade manned mannish manor manpower mantis mantra manual many map marathon marauding marbled marbles marbling march mardi margarine margarita margin marigold marina marine marital maritime marlin marmalade maroon married marrow marry marshland marshy marsupial marvelous marxism mascot masculine mashed mashing massager masses massive mastiff matador matchbook matchbox matcher matching matchless material maternal maternity math mating matriarch matrimony matrix matron matted matter maturely maturing maturity mauve maverick maximize maximum maybe mayday mayflower moaner moaning mobile mobility mobilize mobster mocha mocker mockup modified modify modular modulator module moisten moistness moisture molar molasses mold molecular molecule molehill mollusk mom monastery monday monetary monetize moneybags moneyless moneywise mongoose mongrel monitor monkhood monogamy monogram monologue monopoly monorail monotone monotype monoxide monsieur monsoon monstrous monthly monument moocher moodiness moody mooing moonbeam mooned moonlight moonlike moonlit moonrise moonscape moonshine moonstone moonwalk mop morale morality morally morbidity morbidly morphine morphing morse mortality mortally mortician mortified mortify mortuary mosaic mossy most mothball mothproof motion motivate motivator motive motocross motor motto mountable mountain mounted mounting mourner mournful mouse mousiness moustache mousy mouth movable move movie moving mower mowing much muck mud mug mulberry mulch mule mulled mullets multiple multiply multitask multitude mumble mumbling mumbo mummified mummify mummy mumps munchkin mundane municipal muppet mural murkiness murky murmuring muscular museum mushily mushiness mushroom mushy music musket muskiness musky mustang mustard muster mustiness musty mutable mutate mutation mute mutilated mutilator mutiny mutt mutual muzzle myself myspace mystified mystify myth nacho nag nail name naming nanny nanometer nape napkin napped napping nappy narrow nastily nastiness national native nativity natural nature naturist nautical navigate navigator navy nearby nearest nearly nearness neatly neatness nebula nebulizer nectar negate negation negative neglector negligee negligent negotiate nemeses nemesis neon nephew nerd nervous nervy nest net neurology neuron neurosis neurotic neuter neutron never next nibble nickname nicotine niece nifty nimble nimbly nineteen ninetieth ninja nintendo ninth nuclear nuclei nucleus nugget nullify number numbing numbly numbness numeral numerate numerator numeric numerous nuptials nursery nursing nurture nutcase nutlike nutmeg nutrient nutshell nuttiness nutty nuzzle nylon oaf oak oasis oat obedience obedient obituary object obligate obliged oblivion oblivious oblong obnoxious oboe obscure obscurity observant observer observing obsessed obsession obsessive obsolete obstacle obstinate obstruct obtain obtrusive obtuse obvious occultist occupancy occupant occupier occupy ocean ocelot octagon octane october octopus ogle oil oink ointment okay old olive olympics omega omen ominous omission omit omnivore onboard oncoming ongoing onion online onlooker only onscreen onset onshore onslaught onstage onto onward onyx oops ooze oozy opacity opal open operable operate operating operation operative operator opium opossum opponent oppose opposing opposite oppressed oppressor opt opulently osmosis other otter ouch ought ounce outage outback outbid outboard outbound outbreak outburst outcast outclass outcome outdated outdoors outer outfield outfit outflank outgoing outgrow outhouse outing outlast outlet outline outlook outlying outmatch outmost outnumber outplayed outpost outpour output outrage outrank outreach outright outscore outsell outshine outshoot outsider outskirts outsmart outsource outspoken outtakes outthink outward outweigh outwit oval ovary oven overact overall overarch overbid overbill overbite overblown overboard overbook overbuilt overcast overcoat overcome overcook overcrowd overdraft overdrawn overdress overdrive overdue overeager overeater overexert overfed overfeed overfill overflow overfull overgrown overhand overhang overhaul overhead overhear overheat overhung overjoyed overkill overlabor overlaid overlap overlay overload overlook overlord overlying overnight overpass overpay overplant overplay overpower overprice overrate overreach overreact override overripe overrule overrun overshoot overshot oversight oversized oversleep oversold overspend overstate overstay overstep overstock overstuff oversweet overtake overthrow overtime overtly overtone overture overturn overuse overvalue overview overwrite owl oxford oxidant oxidation oxidize oxidizing oxygen oxymoron oyster ozone paced pacemaker pacific pacifier pacifism pacifist pacify padded padding paddle paddling padlock pagan pager paging pajamas palace palatable palm palpable palpitate paltry pampered pamperer pampers pamphlet panama pancake pancreas panda pandemic pang panhandle panic panning panorama panoramic panther pantomime pantry pants pantyhose paparazzi papaya paper paprika papyrus parabola parachute parade paradox paragraph parakeet paralegal paralyses paralysis paralyze paramedic parameter paramount parasail parasite parasitic parcel parched parchment pardon parish parka parking parkway parlor parmesan parole parrot parsley parsnip partake parted parting partition partly partner partridge party passable passably passage passcode passenger passerby passing passion passive passivism passover passport password pasta pasted pastel pastime pastor pastrami pasture pasty patchwork patchy paternal paternity path patience patient patio patriarch patriot patrol patronage patronize pauper pavement paver pavestone pavilion paving pawing payable payback paycheck payday payee payer paying payment payphone payroll pebble pebbly pecan pectin peculiar peddling pediatric pedicure pedigree pedometer pegboard pelican pellet pelt pelvis penalize penalty pencil pendant pending penholder penknife pennant penniless penny penpal pension pentagon pentagram pep perceive percent perch percolate perennial perfected perfectly perfume periscope perish perjurer perjury perkiness perky perm peroxide perpetual perplexed persecute persevere persuaded persuader pesky peso pessimism pessimist pester pesticide petal petite petition petri petroleum petted petticoat pettiness petty petunia phantom phobia phoenix phonebook phoney phonics phoniness phony phosphate photo phrase phrasing placard placate placidly plank planner plant plasma plaster plastic plated platform plating platinum platonic platter platypus plausible plausibly playable playback player playful playgroup playhouse playing playlist playmaker playmate playoff playpen playroom playset plaything playtime plaza pleading pleat pledge plentiful plenty plethora plexiglas pliable plod plop plot plow ploy pluck plug plunder plunging plural plus plutonium plywood poach pod poem poet pogo pointed pointer pointing pointless pointy poise poison poker poking polar police policy polio polish politely polka polo polyester polygon polygraph polymer poncho pond pony popcorn pope poplar popper poppy popsicle populace popular populate porcupine pork porous porridge portable portal portfolio porthole portion portly portside poser posh posing possible possibly possum postage postal postbox postcard posted poster posting postnasal posture postwar pouch pounce pouncing pound pouring pout powdered powdering powdery power powwow pox praising prance prancing pranker prankish prankster prayer praying preacher preaching preachy preamble precinct precise precision precook precut predator predefine predict preface prefix preflight preformed pregame pregnancy pregnant preheated prelaunch prelaw prelude premiere premises premium prenatal preoccupy preorder prepaid prepay preplan preppy preschool prescribe preseason preset preshow president presoak press presume presuming preteen pretended pretender pretense pretext pretty pretzel prevail prevalent prevent preview previous prewar prewashed prideful pried primal primarily primary primate primer primp princess print prior prism prison prissy pristine privacy private privatize prize proactive probable probably probation probe probing probiotic problem procedure process proclaim procreate procurer prodigal prodigy produce product profane profanity professed professor profile profound profusely progeny prognosis program progress projector prologue prolonged promenade prominent promoter promotion prompter promptly prone prong pronounce pronto proofing proofread proofs propeller properly property proponent proposal propose props prorate protector protegee proton prototype protozoan protract protrude proud provable proved proven provided provider providing province proving provoke provoking provolone prowess prowler prowling proximity proxy prozac prude prudishly prune pruning pry psychic public publisher pucker pueblo pug pull pulmonary pulp pulsate pulse pulverize puma pumice pummel punch punctual punctuate punctured pungent punisher punk pupil puppet puppy purchase pureblood purebred purely pureness purgatory purge purging purifier purify purist puritan purity purple purplish purposely purr purse pursuable pursuant pursuit purveyor pushcart pushchair pusher pushiness pushing pushover pushpin pushup pushy putdown putt puzzle puzzling pyramid pyromania python quack quadrant quail quaintly quake quaking qualified qualifier qualify quality qualm quantum quarrel quarry quartered quarterly quarters quartet quench query quicken quickly quickness quicksand quickstep quiet quill quilt quintet quintuple quirk quit quiver quizzical quotable quotation quote rabid race racing racism rack racoon radar radial radiance radiantly radiated radiation radiator radio radish raffle raft rage ragged raging ragweed raider railcar railing railroad railway raisin rake raking rally ramble rambling ramp ramrod ranch rancidity random ranged ranger ranging ranked ranking ransack ranting rants rare rarity rascal rash rasping ravage raven ravine raving ravioli ravishing reabsorb reach reacquire reaction reactive reactor reaffirm ream reanalyze reappear reapply reappoint reapprove rearrange rearview reason reassign reassure reattach reawake rebalance rebate rebel rebirth reboot reborn rebound rebuff rebuild rebuilt reburial rebuttal recall recant recapture recast recede recent recess recharger recipient recital recite reckless reclaim recliner reclining recluse reclusive recognize recoil recollect recolor reconcile reconfirm reconvene recopy record recount recoup recovery recreate rectal rectangle rectified rectify recycled recycler recycling reemerge reenact reenter reentry reexamine referable referee reference refill refinance refined refinery refining refinish reflected reflector reflex reflux refocus refold reforest reformat reformed reformer reformist refract refrain refreeze refresh refried refueling refund refurbish refurnish refusal refuse refusing refutable refute regain regalia regally reggae regime region register registrar registry regress regretful regroup regular regulate regulator rehab reheat rehire rehydrate reimburse reissue reiterate rejoice rejoicing rejoin rekindle relapse relapsing relatable related relation relative relax relay relearn release relenting reliable reliably reliance reliant relic relieve relieving relight relish relive reload relocate relock reluctant rely remake remark remarry rematch remedial remedy remember reminder remindful remission remix remnant remodeler remold remorse remote removable removal removed remover removing rename renderer rendering rendition renegade renewable renewably renewal renewed renounce renovate renovator rentable rental rented renter reoccupy reoccur reopen reorder repackage repacking repaint repair repave repaying repayment repeal repeated repeater repent rephrase replace replay replica reply reporter repose repossess repost repressed reprimand reprint reprise reproach reprocess reproduce reprogram reps reptile reptilian repugnant repulsion repulsive repurpose reputable reputably request require requisite reroute rerun resale resample rescuer reseal research reselect reseller resemble resend resent reset reshape reshoot reshuffle residence residency resident residual residue resigned resilient resistant resisting resize resolute resolved resonant resonate resort resource respect resubmit result resume resupply resurface resurrect retail retainer retaining retake retaliate retention rethink retinal retired retiree retiring retold retool retorted retouch retrace retract retrain retread retreat retrial retrieval retriever retry return retying retype reunion reunite reusable reuse reveal reveler revenge revenue reverb revered reverence reverend reversal reverse reversing reversion revert revisable revise revision revisit revivable revival reviver reviving revocable revoke revolt revolver revolving reward rewash rewind rewire reword rework rewrap rewrite rhyme ribbon ribcage rice riches richly richness rickety ricotta riddance ridden ride riding rifling rift rigging rigid rigor rimless rimmed rind rink rinse rinsing riot ripcord ripeness ripening ripping ripple rippling riptide rise rising risk risotto ritalin ritzy rival riverbank riverbed riverboat riverside riveter riveting roamer roaming roast robbing robe robin robotics robust rockband rocker rocket rockfish rockiness rocking rocklike rockslide rockstar rocky rogue roman romp rope roping roster rosy rotten rotting rotunda roulette rounding roundish roundness roundup roundworm routine routing rover roving royal rubbed rubber rubbing rubble rubdown ruby ruckus rudder rug ruined rule rumble rumbling rummage rumor runaround rundown runner running runny runt runway rupture rural ruse rush rust rut sabbath sabotage sacrament sacred sacrifice sadden saddlebag saddled saddling sadly sadness safari safeguard safehouse safely safeness saffron saga sage sagging saggy said saint sake salad salami salaried salary saline salon saloon salsa salt salutary salute salvage salvaging salvation same sample sampling sanction sanctity sanctuary sandal sandbag sandbank sandbar sandblast sandbox sanded sandfish sanding sandlot sandpaper sandpit sandstone sandstorm sandworm sandy sanitary sanitizer sank santa sapling sappiness sappy sarcasm sarcastic sardine sash sasquatch sassy satchel satiable satin satirical satisfied satisfy saturate saturday sauciness saucy sauna savage savanna saved savings savior savor saxophone say scabbed scabby scalded scalding scale scaling scallion scallop scalping scam scandal scanner scanning scant scapegoat scarce scarcity scarecrow scared scarf scarily scariness scarring scary scavenger scenic schedule schematic scheme scheming schilling schnapps scholar science scientist scion scoff scolding scone scoop scooter scope scorch scorebook scorecard scored scoreless scorer scoring scorn scorpion scotch scoundrel scoured scouring scouting scouts scowling scrabble scraggly scrambled scrambler scrap scratch scrawny screen scribble scribe scribing scrimmage script scroll scrooge scrounger scrubbed scrubber scruffy scrunch scrutiny scuba scuff sculptor sculpture scurvy scuttle secluded secluding seclusion second secrecy secret sectional sector secular securely security sedan sedate sedation sedative sediment seduce seducing segment seismic seizing seldom selected selection selective selector self seltzer semantic semester semicolon semifinal seminar semisoft semisweet senate senator send senior senorita sensation sensitive sensitize sensually sensuous sepia september septic septum sequel sequence sequester series sermon serotonin serpent serrated serve service serving sesame sessions setback setting settle settling setup sevenfold seventeen seventh seventy severity shabby shack shaded shadily shadiness shading shadow shady shaft shakable shakily shakiness shaking shaky shale shallot shallow shame shampoo shamrock shank shanty shape shaping share sharpener sharper sharpie sharply sharpness shawl sheath shed sheep sheet shelf shell shelter shelve shelving sherry shield shifter shifting shiftless shifty shimmer shimmy shindig shine shingle shininess shining shiny ship shirt shivering shock shone shoplift shopper shopping shoptalk shore shortage shortcake shortcut shorten shorter shorthand shortlist shortly shortness shorts shortwave shorty shout shove showbiz showcase showdown shower showgirl showing showman shown showoff showpiece showplace showroom showy shrank shrapnel shredder shredding shrewdly shriek shrill shrimp shrine shrink shrivel shrouded shrubbery shrubs shrug shrunk shucking shudder shuffle shuffling shun shush shut shy siamese siberian sibling siding sierra siesta sift sighing silenced silencer silent silica silicon silk silliness silly silo silt silver similarly simile simmering simple simplify simply sincere sincerity singer singing single singular sinister sinless sinner sinuous sip siren sister sitcom sitter sitting situated situation sixfold sixteen sixth sixties sixtieth sixtyfold sizable sizably size sizing sizzle sizzling skater skating skedaddle skeletal skeleton skeptic sketch skewed skewer skid skied skier skies skiing skilled skillet skillful skimmed skimmer skimming skimpily skincare skinhead skinless skinning skinny skintight skipper skipping skirmish skirt skittle skydiver skylight skyline skype skyrocket skyward slab slacked slacker slacking slackness slacks slain slam slander slang slapping slapstick slashed slashing slate slather slaw sled sleek sleep sleet sleeve slept sliceable sliced slicer slicing slick slider slideshow sliding slighted slighting slightly slimness slimy slinging slingshot slinky slip slit sliver slobbery slogan sloped sloping sloppily sloppy slot slouching slouchy sludge slug slum slurp slush sly small smartly smartness smasher smashing smashup smell smelting smile smilingly smirk smite smith smitten smock smog smoked smokeless smokiness smoking smoky smolder smooth smother smudge smudgy smuggler smuggling smugly smugness snack snagged snaking snap snare snarl snazzy sneak sneer sneeze sneezing snide sniff snippet snipping snitch snooper snooze snore snoring snorkel snort snout snowbird snowboard snowbound snowcap snowdrift snowdrop snowfall snowfield snowflake snowiness snowless snowman snowplow snowshoe snowstorm snowsuit snowy snub snuff snuggle snugly snugness speak spearfish spearhead spearman spearmint species specimen specked speckled specks spectacle spectator spectrum speculate speech speed spellbind speller spelling spendable spender spending spent spew sphere spherical sphinx spider spied spiffy spill spilt spinach spinal spindle spinner spinning spinout spinster spiny spiral spirited spiritism spirits spiritual splashed splashing splashy splatter spleen splendid splendor splice splicing splinter splotchy splurge spoilage spoiled spoiler spoiling spoils spoken spokesman sponge spongy sponsor spoof spookily spooky spool spoon spore sporting sports sporty spotless spotlight spotted spotter spotting spotty spousal spouse spout sprain sprang sprawl spray spree sprig spring sprinkled sprinkler sprint sprite sprout spruce sprung spry spud spur sputter spyglass squabble squad squall squander squash squatted squatter squatting squeak squealer squealing squeamish squeegee squeeze squeezing squid squiggle squiggly squint squire squirt squishier squishy stability stabilize stable stack stadium staff stage staging stagnant stagnate stainable stained staining stainless stalemate staleness stalling stallion stamina stammer stamp stand stank staple stapling starboard starch stardom stardust starfish stargazer staring stark starless starlet starlight starlit starring starry starship starter starting startle startling startup starved starving stash state static statistic statue stature status statute statutory staunch stays steadfast steadier steadily steadying steam steed steep steerable steering steersman stegosaur stellar stem stench stencil step stereo sterile sterility sterilize sterling sternness sternum stew stick stiffen stiffly stiffness stifle stifling stillness stilt stimulant stimulate stimuli stimulus stinger stingily stinging stingray stingy stinking stinky stipend stipulate stir stitch stock stoic stoke stole stomp stonewall stoneware stonework stoning stony stood stooge stool stoop stoplight stoppable stoppage stopped stopper stopping stopwatch storable storage storeroom storewide storm stout stove stowaway stowing straddle straggler strained strainer straining strangely stranger strangle strategic strategy stratus straw stray streak stream street strength strenuous strep stress stretch strewn stricken strict stride strife strike striking strive striving strobe strode stroller strongbox strongly strongman struck structure strudel struggle strum strung strut stubbed stubble stubbly stubborn stucco stuck student studied studio study stuffed stuffing stuffy stumble stumbling stump stung stunned stunner stunning stunt stupor sturdily sturdy styling stylishly stylist stylized stylus suave subarctic subatomic subdivide subdued subduing subfloor subgroup subheader subject sublease sublet sublevel sublime submarine submerge submersed submitter subpanel subpar subplot subprime subscribe subscript subsector subside subsiding subsidize subsidy subsoil subsonic substance subsystem subtext subtitle subtly subtotal subtract subtype suburb subway subwoofer subzero succulent such suction sudden sudoku suds sufferer suffering suffice suffix suffocate suffrage sugar suggest suing suitable suitably suitcase suitor sulfate sulfide sulfite sulfur sulk sullen sulphate sulphuric sultry superbowl superglue superhero superior superjet superman supermom supernova supervise supper supplier supply support supremacy supreme surcharge surely sureness surface surfacing surfboard surfer surgery surgical surging surname surpass surplus surprise surreal surrender surrogate surround survey survival survive surviving survivor sushi suspect suspend suspense sustained sustainer swab swaddling swagger swampland swan swapping swarm sway swear sweat sweep swell swept swerve swifter swiftly swiftness swimmable swimmer swimming swimsuit swimwear swinger swinging swipe swirl switch swivel swizzle swooned swoop swoosh swore sworn swung sycamore sympathy symphonic symphony symptom synapse syndrome synergy synopses synopsis synthesis synthetic syrup system t-shirt tabasco tabby tableful tables tablet tableware tabloid tackiness tacking tackle tackling tacky taco tactful tactical tactics tactile tactless tadpole taekwondo tag tainted take taking talcum talisman tall talon tamale tameness tamer tamper tank tanned tannery tanning tantrum tapeless tapered tapering tapestry tapioca tapping taps tarantula target tarmac tarnish tarot tartar tartly tartness task tassel taste tastiness tasting tasty tattered tattle tattling tattoo taunt tavern thank that thaw theater theatrics thee theft theme theology theorize thermal thermos thesaurus these thesis thespian thicken thicket thickness thieving thievish thigh thimble thing think thinly thinner thinness thinning thirstily thirsting thirsty thirteen thirty thong thorn those thousand thrash thread threaten threefold thrift thrill thrive thriving throat throbbing throng throttle throwaway throwback thrower throwing thud thumb thumping thursday thus thwarting thyself tiara tibia tidal tidbit tidiness tidings tidy tiger tighten tightly tightness tightrope tightwad tigress tile tiling till tilt timid timing timothy tinderbox tinfoil tingle tingling tingly tinker tinkling tinsel tinsmith tint tinwork tiny tipoff tipped tipper tipping tiptoeing tiptop tiring tissue trace tracing track traction tractor trade trading tradition traffic tragedy trailing trailside train traitor trance tranquil transfer transform translate transpire transport transpose trapdoor trapeze trapezoid trapped trapper trapping traps trash travel traverse travesty tray treachery treading treadmill treason treat treble tree trekker tremble trembling tremor trench trend trespass triage trial triangle tribesman tribunal tribune tributary tribute triceps trickery trickily tricking trickle trickster tricky tricolor tricycle trident tried trifle trifocals trillion trilogy trimester trimmer trimming trimness trinity trio tripod tripping triumph trivial trodden trolling trombone trophy tropical tropics trouble troubling trough trousers trout trowel truce truck truffle trump trunks trustable trustee trustful trusting trustless truth try tubby tubeless tubular tucking tuesday tug tuition tulip tumble tumbling tummy turban turbine turbofan turbojet turbulent turf turkey turmoil turret turtle tusk tutor tutu tux tweak tweed tweet tweezers twelve twentieth twenty twerp twice twiddle twiddling twig twilight twine twins twirl twistable twisted twister twisting twisty twitch twitter tycoon tying tyke udder ultimate ultimatum ultra umbilical umbrella umpire unabashed unable unadorned unadvised unafraid unaired unaligned unaltered unarmored unashamed unaudited unawake unaware unbaked unbalance unbeaten unbend unbent unbiased unbitten unblended unblessed unblock unbolted unbounded unboxed unbraided unbridle unbroken unbuckled unbundle unburned unbutton uncanny uncapped uncaring uncertain unchain unchanged uncharted uncheck uncivil unclad unclaimed unclamped unclasp uncle unclip uncloak unclog unclothed uncoated uncoiled uncolored uncombed uncommon uncooked uncork uncorrupt uncounted uncouple uncouth uncover uncross uncrown uncrushed uncured uncurious uncurled uncut undamaged undated undaunted undead undecided undefined underage underarm undercoat undercook undercut underdog underdone underfed underfeed underfoot undergo undergrad underhand underline underling undermine undermost underpaid underpass underpay underrate undertake undertone undertook undertow underuse underwear underwent underwire undesired undiluted undivided undocked undoing undone undrafted undress undrilled undusted undying unearned unearth unease uneasily uneasy uneatable uneaten unedited unelected unending unengaged unenvied unequal unethical uneven unexpired unexposed unfailing unfair unfasten unfazed unfeeling unfiled unfilled unfitted unfitting unfixable unfixed unflawed unfocused unfold unfounded unframed unfreeze unfrosted unfrozen unfunded unglazed ungloved unglue ungodly ungraded ungreased unguarded unguided unhappily unhappy unharmed unhealthy unheard unhearing unheated unhelpful unhidden unhinge unhitched unholy unhook unicorn unicycle unified unifier uniformed uniformly unify unimpeded uninjured uninstall uninsured uninvited union uniquely unisexual unison unissued unit universal universe unjustly unkempt unkind unknotted unknowing unknown unlaced unlatch unlawful unleaded unlearned unleash unless unleveled unlighted unlikable unlimited unlined unlinked unlisted unlit unlivable unloaded unloader unlocked unlocking unlovable unloved unlovely unloving unluckily unlucky unmade unmanaged unmanned unmapped unmarked unmasked unmasking unmatched unmindful unmixable unmixed unmolded unmoral unmovable unmoved unmoving unnamable unnamed unnatural unneeded unnerve unnerving unnoticed unopened unopposed unpack unpadded unpaid unpainted unpaired unpaved unpeeled unpicked unpiloted unpinned unplanned unplanted unpleased unpledged unplowed unplug unpopular unproven unquote unranked unrated unraveled unreached unread unreal unreeling unrefined unrelated unrented unrest unretired unrevised unrigged unripe unrivaled unroasted unrobed unroll unruffled unruly unrushed unsaddle unsafe unsaid unsalted unsaved unsavory unscathed unscented unscrew unsealed unseated unsecured unseeing unseemly unseen unselect unselfish unsent unsettled unshackle unshaken unshaved unshaven unsheathe unshipped unsightly unsigned unskilled unsliced unsmooth unsnap unsocial unsoiled unsold unsolved unsorted unspoiled unspoken unstable unstaffed unstamped unsteady unsterile unstirred unstitch unstopped unstuck unstuffed unstylish unsubtle unsubtly unsuited unsure unsworn untagged untainted untaken untamed untangled untapped untaxed unthawed unthread untidy untie until untimed untimely untitled untoasted untold untouched untracked untrained untreated untried untrimmed untrue untruth unturned untwist untying unusable unused unusual unvalued unvaried unvarying unveiled unveiling unvented unviable unvisited unvocal unwanted unwarlike unwary unwashed unwatched unweave unwed unwelcome unwell unwieldy unwilling unwind unwired unwitting unwomanly unworldly unworn unworried unworthy unwound unwoven unwrapped unwritten unzip upbeat upchuck upcoming upcountry update upfront upgrade upheaval upheld uphill uphold uplifted uplifting upload upon upper upright uprising upriver uproar uproot upscale upside upstage upstairs upstart upstate upstream upstroke upswing uptake uptight uptown upturned upward upwind uranium urban urchin urethane urgency urgent urging urologist urology usable usage useable used uselessly user usher usual utensil utility utilize utmost utopia utter vacancy vacant vacate vacation vagabond vagrancy vagrantly vaguely vagueness valiant valid valium valley valuables value vanilla vanish vanity vanquish vantage vaporizer variable variably varied variety various varmint varnish varsity varying vascular vaseline vastly vastness veal vegan veggie vehicular velcro velocity velvet vendetta vending vendor veneering vengeful venomous ventricle venture venue venus verbalize verbally verbose verdict verify verse version versus vertebrae vertical vertigo very vessel vest veteran veto vexingly viability viable vibes vice vicinity victory video viewable viewer viewing viewless viewpoint vigorous village villain vindicate vineyard vintage violate violation violator violet violin viper viral virtual virtuous virus visa viscosity viscous viselike visible visibly vision visiting visitor visor vista vitality vitalize vitally vitamins vivacious vividly vividness vixen vocalist vocalize vocally vocation voice voicing void volatile volley voltage volumes voter voting voucher vowed vowel voyage wackiness wad wafer waffle waged wager wages waggle wagon wake waking walk walmart walnut walrus waltz wand wannabe wanted wanting wasabi washable washbasin washboard washbowl washcloth washday washed washer washhouse washing washout washroom washstand washtub wasp wasting watch water waviness waving wavy whacking whacky wham wharf wheat whenever whiff whimsical whinny whiny whisking whoever whole whomever whoopee whooping whoops why wick widely widen widget widow width wieldable wielder wife wifi wikipedia wildcard wildcat wilder wildfire wildfowl wildland wildlife wildly wildness willed willfully willing willow willpower wilt wimp wince wincing wind wing winking winner winnings winter wipe wired wireless wiring wiry wisdom wise wish wisplike wispy wistful wizard wobble wobbling wobbly wok wolf wolverine womanhood womankind womanless womanlike womanly womb woof wooing wool woozy word work worried worrier worrisome worry worsening worshiper worst wound woven wow wrangle wrath wreath wreckage wrecker wrecking wrench wriggle wriggly wrinkle wrinkly wrist writing written wrongdoer wronged wrongful wrongly wrongness wrought xbox xerox yahoo yam yanking yapping yard yarn yeah yearbook yearling yearly yearning yeast yelling yelp yen yesterday yiddish yield yin yippee yo-yo yodel yoga yogurt yonder yoyo yummy zap zealous zebra zen zeppelin zero zestfully zesty zigzagged zipfile zipping zippy zips zit zodiac zombie zone zoning zookeeper zoologist zoology zoom onionshare-onionshare-26fcdc5/cli/onionshare_cli/settings.py000066400000000000000000000173511521174352300245070ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import json import os import locale class Settings(object): """ This class stores all of the settings for OnionShare, specifically for how to connect to Tor. If it can't find the settings file, it uses the default, which is to attempt to connect automatically using default Tor Browser settings. """ def __init__(self, common, config=False): self.common = common self.common.log("Settings", "__init__") # If a readable config file was provided, use that instead if config: if os.path.isfile(config): self.filename = config else: self.common.log( "Settings", "__init__", "Supplied config does not exist or is unreadable. Falling back to default location", ) self.filename = self.build_filename() else: # Default config self.filename = self.build_filename() # Dictionary of available languages in this version of OnionShare, # mapped to the language name, in that language self.available_locales = { "af": "Afrikaans", # Afrikaans "sq": "Shqip", # Albanian "ar": "العربية", # Arabic "be": "Беларуская", # Belarusian "bn": "বাংলা", # Bengali "bg": "Български", #Bulgarian "ca": "Català", # Catalan "zh_Hant": "正體中文 (繁體)", # Traditional Chinese "zh_Hans": "中文 (简体)", # Simplified Chinese "hr": "Hrvatski", # Croatian "cs": "čeština", # Czech "da": "Dansk", # Danish # "nl": "Nederlands", # Dutch "en": "English", # English "fi": "Suomi", # Finnish "fr": "Français", # French "gl": "Galego", # Galician "de": "Deutsch", # German "el": "Ελληνικά", # Greek "is": "Íslenska", # Icelandic "id": "Bahasa Indonesia", # Indonesian "ga": "Gaeilge", # Irish "it": "Italiano", # Italian "ja": "日本語", # Japanese "km": "ខ្មែរ", # Khmer(Central) # "ckb": "Soranî", # Kurdish (Central) "lt": "Lietuvių Kalba", # Lithuanian "nb_NO": "Norsk Bokmål", # Norwegian Bokmål "fa": "فارسی", # Persian "pl": "Polski", # Polish "pt_BR": "Português (Brasil)", # Portuguese Brazil "pt_PT": "Português (Portugal)", # Portuguese Portugal # "ro": "Română", # Romanian "ru": "Русский", # Russian "sn": "chiShona", # Shona # "sr_Latn": "Srpska (latinica)", # Serbian (latin) "sk": "Slovenčina", # Slovak "es": "Español", # Spanish "sw": "Kiswahili", # Swahili "sv": "Svenska", # Swedish "ta": "Tamil", # Tamil # "te": "తెలుగు", # Telugu "tr": "Türkçe", # Turkish "uk": "Українська", # Ukrainian "vi": "Tiếng Việt", # Vietnamese } # These are the default settings. They will get overwritten when loading from disk self.default_settings = { "version": self.common.version, "connection_type": "bundled", "control_port_address": "127.0.0.1", "control_port_port": 9051, "socks_address": "127.0.0.1", "socks_port": 9050, "socket_file_path": "/var/run/tor/control", "auth_type": "no_auth", "auth_password": "", "auto_connect": False, "use_autoupdate": True, "autoupdate_timestamp": None, "bridges_enabled": False, "bridges_type": "built-in", # "built-in", "moat", or "custom" "bridges_builtin_pt": "obfs4", # "obfs4", "meek-azure", or "snowflake" "bridges_moat": "", "bridges_custom": "", "bridges_builtin": {}, "persistent_tabs": [], "locale": None, # this gets defined in fill_in_defaults() "theme": 0, } self._settings = {} self.fill_in_defaults() def fill_in_defaults(self): """ If there are any missing settings from self._settings, replace them with their default values. """ for key in self.default_settings: if key not in self._settings: self._settings[key] = self.default_settings[key] # Choose the default locale based on the OS preference, and fall-back to English if self._settings["locale"] is None: language_code, encoding = locale.getlocale() # Default to English if not language_code: language_code = "en_US" if language_code == "pt_PT" and language_code == "pt_BR": # Portuguese locales include country code default_locale = language_code else: # All other locales cut off the country code default_locale = language_code[:2] if default_locale not in self.available_locales: default_locale = "en" self._settings["locale"] = default_locale def build_filename(self): """ Returns the path of the settings file. """ return os.path.join(self.common.build_data_dir(), "onionshare.json") def load(self): """ Load the settings from file. """ self.common.log("Settings", "load") # If the settings file exists, load it if os.path.exists(self.filename): try: self.common.log("Settings", "load", f"Trying to load {self.filename}") with open(self.filename, "r") as f: self._settings = json.load(f) self.fill_in_defaults() except Exception: pass # Make sure data_dir exists try: os.makedirs(self.get("data_dir"), exist_ok=True) except Exception: pass def save(self): """ Save settings to file. """ self.common.log("Settings", "save") open(self.filename, "w").write(json.dumps(self._settings, indent=2)) self.common.log("Settings", "save", f"Settings saved in {self.filename}") def get(self, key): return self._settings[key] def set(self, key, val): # If typecasting int values fails, fallback to default values if key == "control_port_port" or key == "socks_port": try: val = int(val) except Exception: if key == "control_port_port": val = self.default_settings["control_port_port"] elif key == "socks_port": val = self.default_settings["socks_port"] self._settings[key] = val onionshare-onionshare-26fcdc5/cli/onionshare_cli/web/000077500000000000000000000000001521174352300230435ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/onionshare_cli/web/__init__.py000066400000000000000000000014011521174352300251500ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from .web import Web onionshare-onionshare-26fcdc5/cli/onionshare_cli/web/chat_mode.py000066400000000000000000000206041521174352300253420ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import unicodedata from flask import request, render_template, make_response, jsonify, session from flask_socketio import emit, ConnectionRefusedError class ChatModeWeb: """ All of the web logic for chat mode """ def __init__(self, common, web): self.common = common self.common.log("ChatModeWeb", "__init__") self.web = web # This tracks users in the server self.connected_users = [] # This tracks the history id self.cur_history_id = 0 # Whether or not we can send REQUEST_INDIVIDUAL_FILE_STARTED # and maybe other events when requests come in to this mode # Chat mode has no concept of individual file requests that # turn into history widgets in the GUI, so set it to False self.supports_file_requests = False self.define_routes() def remove_unallowed_characters(self, text): """ Sanitize username to remove unwanted characters. Allowed characters right now are: - all ASCII numbers - all ASCII letters - dash, underscore and single space """ def allowed_character(ch): allowed_unicode_categories = [ 'L', # All letters 'N', # All numbers ] allowed_special_characters = [ '-', # dash '_', # underscore ' ', # single space ] return ( unicodedata.category(ch)[0] in allowed_unicode_categories and ord(ch) < 128 ) or ch in allowed_special_characters return "".join( ch for ch in text if allowed_character(ch) ) def validate_username(self, username): try: username = self.remove_unallowed_characters(username.strip()) return ( username and username not in self.connected_users and len(username) < 128 ) except Exception as e: self.common.log("ChatModeWeb", "validate_username", e) return False def define_routes(self): """ The web app routes for chatting """ @self.web.app.route("/", methods=["GET"], provide_automatic_options=False) def index(): history_id = self.cur_history_id self.cur_history_id += 1 session["name"] = ( session.get("name") if session.get("name") else self.common.build_username() ) self.web.add_request( request.path, {"id": history_id, "status_code": 200}, ) self.web.add_request(self.web.REQUEST_LOAD, request.path) return render_template( "chat.html", static_url_path=self.web.static_url_path, username=session.get("name"), title=self.web.settings.get("general", "title"), ) @self.web.app.route( "/update-session-username", methods=["POST"], provide_automatic_options=False, ) def update_session_username(): history_id = self.cur_history_id data = request.get_json() username = data.get("username", session.get("name")).strip() if self.validate_username(username): session["name"] = username self.web.add_request( request.path, {"id": history_id, "status_code": 200}, ) self.web.add_request(self.web.REQUEST_LOAD, request.path) r = make_response( jsonify( username=session.get("name"), success=True, ) ) else: self.web.add_request( request.path, {"id": history_id, "status_code": 403}, ) r = make_response( jsonify( username=session.get("name"), success=False, ) ) return r @self.web.socketio.on("connect", namespace="/chat") def server_connect(): """Sent by clients when they enter a room. A status message is broadcast to all people in the room.""" if self.validate_username(session.get("name")): self.connected_users.append(session.get("name")) # Store the session id for the user session["socketio_session_id"] = request.sid emit( "status", { "username": session.get("name"), "msg": "{} has joined.".format(session.get("name")), "connected_users": self.connected_users, "user": session.get("name"), }, broadcast=True, ) else: raise ConnectionRefusedError('Invalid session') @self.web.socketio.on("text", namespace="/chat") def text(message): """Sent by a client when the user entered a new message. The message is sent to all people in the server.""" emit( "chat_message", {"username": session.get("name"), "msg": message["msg"]}, broadcast=True, ) @self.web.socketio.on("update_username", namespace="/chat") def update_username(message): """Sent by a client when the user updates their username. The message is sent to all people in the server.""" current_name = session.get("name") new_name = message.get("username", "").strip() if self.validate_username(new_name): session["name"] = new_name self.connected_users[self.connected_users.index(current_name)] = ( session.get("name") ) emit( "status", { "msg": "{} has updated their username to: {}".format( current_name, session.get("name") ), "connected_users": self.connected_users, "old_name": current_name, "new_name": session.get("name"), }, broadcast=True, ) else: emit( "status", {"msg": "Failed to update username."}, ) @self.web.socketio.on("disconnect", namespace="/chat") def disconnect(): """Sent by clients when they disconnect. A status message is broadcast to all people in the server.""" user_already_disconnected = False if session.get("name") in self.connected_users: self.connected_users.remove(session.get("name")) else: user_already_disconnected = True # Forcefully disconnect the user self.web.socketio.server.disconnect( sid=session.get("socketio_session_id"), namespace="/chat" ) if not user_already_disconnected: emit( "status", { "msg": "{} has left the room.".format(session.get("name")), "connected_users": self.connected_users, }, broadcast=True, ) onionshare-onionshare-26fcdc5/cli/onionshare_cli/web/receive_mode.py000066400000000000000000000625571521174352300260620ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os import tempfile import json import requests import io from datetime import datetime from flask import Request, request, render_template, make_response, flash, redirect from werkzeug.utils import secure_filename # Receive mode uses a special flask requests object, ReceiveModeRequest, in # order to keep track of upload progress. Here's what happens when someone # uploads files: # - new ReceiveModeRequest object is created # - ReceiveModeRequest.__init__ # - creates a directory based on the timestamp # - creates empty self.progress = dict, which will map uploaded files to their upload progress # - ReceiveModeRequest._get_file_stream # - called for each file that gets upload # - the first time, send REQUEST_STARTED to GUI, and append to self.web.receive_mode.uploads_in_progress # - updates self.progress[self.filename] for the current file # - uses custom ReceiveModeFile to save file to disk # - ReceiveModeRequest.file_write_func called on each write # - Display progress in CLI, and send REQUEST_PROGRESS to GUI # - ReceiveModeRequest.file_close_func called when each file closes # - self.progress[filename]["complete"] = True # - ReceiveModeRequest.close # - send either REQUEST_UPLOAD_CANCELED or REQUEST_UPLOAD_FINISHED to GUI # - remove from self.web.receive_mode.uploads_in_progress class ReceiveModeWeb: """ All of the web logic for receive mode """ def __init__(self, common, web): self.common = common self.common.log("ReceiveModeWeb", "__init__") self.web = web self.can_upload = True self.uploads_in_progress = [] # This tracks the history id self.cur_history_id = 0 # Whether or not we can send REQUEST_INDIVIDUAL_FILE_STARTED # and maybe other events when requests come in to this mode self.supports_file_requests = True self.define_routes() def define_routes(self): """ The web app routes for receiving files """ @self.web.app.route("/", methods=["GET"], provide_automatic_options=False) def index(): history_id = self.cur_history_id self.cur_history_id += 1 self.web.add_request( self.web.REQUEST_INDIVIDUAL_FILE_STARTED, request.path, {"id": history_id, "status_code": 200}, ) self.web.add_request(self.web.REQUEST_LOAD, request.path) return render_template( "receive.html", static_url_path=self.web.static_url_path, disable_text=self.web.settings.get("receive", "disable_text"), disable_files=self.web.settings.get("receive", "disable_files"), title=self.web.settings.get("general", "title"), ) @self.web.app.route( "/upload", methods=["POST"], provide_automatic_options=False ) def upload(ajax=False): """ Handle the upload files POST request, though at this point, the files have already been uploaded and saved to their correct locations. """ message_received = request.includes_message files_received = 0 if not self.web.settings.get("receive", "disable_files"): files = request.files.getlist("file[]") filenames = [] for f in files: if f.filename != "": filename = secure_filename(f.filename) filenames.append(filename) local_path = os.path.join(request.receive_mode_dir, filename) basename = os.path.basename(local_path) # Tell the GUI the receive mode directory for this file self.web.add_request( self.web.REQUEST_UPLOAD_SET_DIR, request.path, { "id": request.history_id, "filename": basename, "dir": request.receive_mode_dir, }, ) self.common.log( "ReceiveModeWeb", "define_routes", f"/upload, uploaded {f.filename}, saving to {local_path}", ) print(f"Received: {local_path}") files_received = len(filenames) else: # Check if files were submitted when disabled files = request.files.getlist("file[]") if files and any(f.filename != "" for f in files): request.upload_error = True if ajax: return json.dumps( {"error_flashes": ["File uploads are not allowed"]} ) else: flash("File uploads are not allowed", "error") return redirect("/") # Send webhook if configured if ( self.web.settings.get("receive", "webhook_url") is not None and not request.upload_error and (message_received or files_received) ): msg = "" if files_received > 0: if files_received == 1: msg += "1 file" else: msg += f"{files_received} files" if message_received: if msg == "": msg = "A text message" else: msg += " and a text message" self.send_webhook_notification(f"{msg} submitted to OnionShare") if request.upload_error: self.common.log( "ReceiveModeWeb", "define_routes", "/upload, there was an upload error", ) self.web.add_request( self.web.REQUEST_ERROR_DATA_DIR_CANNOT_CREATE, request.path, {"receive_mode_dir": request.receive_mode_dir}, ) print( f"Could not create OnionShare data folder: {request.receive_mode_dir}" ) msg = "Error uploading, please inform the OnionShare user" if ajax: return json.dumps({"error_flashes": [msg]}) else: flash(msg, "error") return redirect("/") if ajax: info_flashes = [] if files_received > 0: files_msg = "" for filename in filenames: files_msg += f"{filename}, " files_msg = files_msg.rstrip(", ") if message_received: if files_received > 0: msg = f"Message submitted, uploaded {files_msg}" else: msg = "Message submitted" else: if files_received > 0: msg = f"Uploaded {files_msg}" else: if not self.web.settings.get("receive", "disable_text"): msg = "Nothing submitted or message was too long (> 524288 characters)" else: msg = "Nothing submitted" if ajax: info_flashes.append(msg) else: flash(msg, "info") if self.can_upload: if ajax: return json.dumps({"info_flashes": info_flashes}) else: return redirect("/") else: if ajax: return json.dumps( { "new_body": render_template( "thankyou.html", static_url_path=self.web.static_url_path, title=self.web.settings.get("general", "title"), ) } ) else: # It was the last upload and the timer ran out return make_response( render_template("thankyou.html"), static_url_path=self.web.static_url_path, title=self.web.settings.get("general", "title"), ) @self.web.app.route( "/upload-ajax", methods=["POST"], provide_automatic_options=False ) def upload_ajax_public(): if not self.can_upload: return self.web.error403() return upload(ajax=True) def send_webhook_notification(self, data): self.common.log("ReceiveModeWeb", "send_webhook_notification", data) try: requests.post( self.web.settings.get("receive", "webhook_url"), data=data, timeout=5, proxies=self.web.proxies, ) except Exception as e: print(f"Webhook notification failed: {e}") class ReceiveModeWSGIMiddleware(object): """ Custom WSGI middleware in order to attach the Web object to environ, so ReceiveModeRequest can access it. """ def __init__(self, app, web): self.app = app self.web = web def __call__(self, environ, start_response): environ["web"] = self.web environ["stop_q"] = self.web.stop_q return self.app(environ, start_response) class ReceiveModeFile(object): """ A custom file object that tells ReceiveModeRequest every time data gets written to it, in order to track the progress of uploads. It starts out with a .part file extension, and when it's complete it removes that extension. """ def __init__(self, request, filename, write_func, close_func): self.onionshare_request = request self.onionshare_filename = filename self.onionshare_write_func = write_func self.onionshare_close_func = close_func self.filename = os.path.join(self.onionshare_request.receive_mode_dir, filename) self.filename_in_progress = f"{self.filename}.part" # Open the file self.upload_error = False try: self.f = open(self.filename_in_progress, "wb+") except Exception: # This will only happen if someone is messing with the data dir while # OnionShare is running, but if it does make sure to throw an error self.upload_error = True self.f = tempfile.TemporaryFile("wb+") # Make all the file-like methods and attributes actually access the # TemporaryFile, except for write attrs = [ "closed", "detach", "fileno", "flush", "isatty", "mode", "name", "peek", "raw", "read", "read1", "readable", "readinto", "readinto1", "readline", "readlines", "seek", "seekable", "tell", "truncate", "writable", "writelines", ] for attr in attrs: setattr(self, attr, getattr(self.f, attr)) def write(self, b): """ Custom write method that calls out to onionshare_write_func """ if self.upload_error or (not self.onionshare_request.stop_q.empty()): self.close() self.onionshare_request.close() return try: bytes_written = self.f.write(b) self.onionshare_write_func(self.onionshare_filename, bytes_written) except Exception: self.upload_error = True def close(self): """ Custom close method that calls out to onionshare_close_func """ try: self.f.close() if not self.upload_error: # Rename the in progress file to the final filename os.rename(self.filename_in_progress, self.filename) except Exception: self.upload_error = True self.onionshare_close_func(self.onionshare_filename, self.upload_error) class ReceiveModeRequest(Request): """ A custom flask Request object that keeps track of how much data has been uploaded for each file, for receive mode. """ def __init__(self, environ, populate_request=True, shallow=False): super(ReceiveModeRequest, self).__init__(environ, populate_request, shallow) self.web = environ["web"] self.stop_q = environ["stop_q"] self.filename = None # Prevent running the close() method more than once self.closed = False # Is this a valid upload request? self.upload_request = False if self.method == "POST": if self.path == "/upload" or self.path == "/upload-ajax": self.upload_request = True if self.upload_request: self.web.common.log("ReceiveModeRequest", "__init__") # No errors yet self.upload_error = False self.file_upload_rejected = False # Don't create directory yet - wait to see if there's actual content self.receive_mode_dir = None self.message_filename = None # A dictionary that maps filenames to the bytes uploaded so far self.progress = {} # Prevent new uploads if we've said so (timer expired) if self.web.receive_mode.can_upload: # Create an history_id, attach it to the request self.history_id = self.web.receive_mode.cur_history_id self.web.receive_mode.cur_history_id += 1 # Figure out the content length try: self.content_length = int(self.headers["Content-Length"]) except Exception: self.content_length = 0 date_str = datetime.now().strftime("%b %d, %I:%M%p") size_str = self.web.common.human_readable_filesize(self.content_length) print(f"{date_str}: Upload of total size {size_str} is starting") # Don't tell the GUI that a request has started until we start receiving files self.told_gui_about_request = False self.previous_file = None # Is there a text message? self.includes_message = False if not self.web.settings.get("receive", "disable_text"): text_message = self.form.get("text") if text_message and len(text_message) <= 524288: if text_message.strip() != "": self.includes_message = True # Create directory only if there's a message self._create_receive_directory() if not self.upload_error: self.message_filename = f"{self.receive_mode_dir}-message.txt" with open(self.message_filename, "w") as f: f.write(text_message) self.web.common.log( "ReceiveModeRequest", "__init__", f"saved message to {self.message_filename}", ) print(f"Received: {self.message_filename}") # Tell the GUI about the message self.tell_gui_request_started() self.web.common.log( "ReceiveModeRequest", "__init__", "sending REQUEST_UPLOAD_INCLUDES_MESSAGE to GUI", ) self.web.add_request( self.web.REQUEST_UPLOAD_INCLUDES_MESSAGE, self.path, { "id": self.history_id, "filename": self.message_filename, }, ) def _create_receive_directory(self): """ Create the receive mode directory. Called only when there's actual content to save. """ if self.receive_mode_dir is not None: return # Already created now = datetime.now() date_dir = now.strftime("%Y-%m-%d") time_dir = now.strftime("%H%M%S%f") self.receive_mode_dir = os.path.join( self.web.settings.get("receive", "data_dir"), date_dir, time_dir ) try: os.makedirs(self.receive_mode_dir, 0o700, exist_ok=False) except OSError: if os.path.exists(self.receive_mode_dir): i = 1 while True: new_receive_mode_dir = f"{self.receive_mode_dir}-{i}" try: os.makedirs(new_receive_mode_dir, 0o700, exist_ok=False) self.receive_mode_dir = new_receive_mode_dir break except OSError: pass i += 1 if i == 100: self.web.common.log( "ReceiveModeRequest", "_create_receive_directory", "Error finding available receive mode directory", ) self.upload_error = True break except PermissionError: self.web.add_request( self.web.REQUEST_ERROR_DATA_DIR_CANNOT_CREATE, request.path, {"receive_mode_dir": self.receive_mode_dir}, ) print( f"Could not create OnionShare data folder: {self.receive_mode_dir}" ) self.web.common.log( "ReceiveModeRequest", "_create_receive_directory", "Permission denied creating receive mode directory", ) self.upload_error = True def tell_gui_request_started(self): # Tell the GUI about the request if not self.told_gui_about_request: # Create directory if not already created (for file uploads) if self.receive_mode_dir is None and not self.upload_error: self._create_receive_directory() self.web.common.log( "ReceiveModeRequest", "tell_gui_request_started", "sending REQUEST_STARTED to GUI", ) self.web.add_request( self.web.REQUEST_STARTED, self.path, { "id": self.history_id, "content_length": self.content_length, }, ) self.web.receive_mode.uploads_in_progress.append(self.history_id) self.told_gui_about_request = True def _get_file_stream( self, total_content_length, content_type, filename=None, content_length=None ): """ This gets called for each file that gets uploaded, and returns an file-like writable stream. """ # Ignore empty file uploads (user didn't select a file) if not filename or filename.strip() == "": return io.BytesIO() if self.upload_request: # Check if file uploads are disabled - reject file streams early if self.web.settings.get("receive", "disable_files"): self.web.common.log( "ReceiveModeRequest", "_get_file_stream", "File upload rejected: disable_files is enabled", ) self.file_upload_rejected = True return io.BytesIO() self.tell_gui_request_started() self.filename = secure_filename(filename) self.progress[self.filename] = {"uploaded_bytes": 0, "complete": False} f = ReceiveModeFile( self, self.filename, self.file_write_func, self.file_close_func ) if f.upload_error: self.web.common.log( "ReceiveModeRequest", "_get_file_stream", "Error creating file" ) self.upload_error = True return f def close(self): """ Closing the request. """ super(ReceiveModeRequest, self).close() # Prevent calling this method more than once per request if self.closed: return self.closed = True if self.upload_request: self.web.common.log("ReceiveModeRequest", "close") if self.told_gui_about_request: history_id = self.history_id if not self.web.stop_q.empty() or ( self.filename in self.progress and not self.progress[self.filename]["complete"] ): # Inform the GUI that the upload has canceled self.web.common.log( "ReceiveModeRequest", "close", "sending REQUEST_UPLOAD_CANCELED to GUI", ) self.web.add_request( self.web.REQUEST_UPLOAD_CANCELED, self.path, {"id": history_id}, ) else: # Inform the GUI that the upload has finished self.web.common.log( "ReceiveModeRequest", "close", "sending REQUEST_UPLOAD_FINISHED to GUI", ) self.web.add_request( self.web.REQUEST_UPLOAD_FINISHED, self.path, {"id": history_id}, ) self.web.receive_mode.uploads_in_progress.remove(history_id) # If no files were written to self.receive_mode_dir, delete it # Also delete if file uploads were rejected due to disable_files setting try: if ( len(os.listdir(self.receive_mode_dir)) == 0 or self.file_upload_rejected ): # Only delete if there are no actual files (messages are valid) files = os.listdir(self.receive_mode_dir) if len(files) == 0: os.rmdir(self.receive_mode_dir) elif ( self.file_upload_rejected and len(files) == 1 and files[0].endswith("-message.txt") ): # File upload was rejected and only a message file exists os.remove(os.path.join(self.receive_mode_dir, files[0])) os.rmdir(self.receive_mode_dir) except Exception: pass def file_write_func(self, filename, length): """ This function gets called when a specific file is written to. """ if self.closed: return if self.upload_request: self.progress[filename]["uploaded_bytes"] += length if self.previous_file != filename: self.previous_file = filename size_str = self.web.common.human_readable_filesize( self.progress[filename]["uploaded_bytes"] ) if self.web.common.verbose: print(f"=> {size_str} {filename}") else: print(f"\r=> {size_str} {filename} ", end="") # Update the GUI on the upload progress if self.told_gui_about_request: self.web.add_request( self.web.REQUEST_PROGRESS, self.path, {"id": self.history_id, "progress": self.progress}, ) def file_close_func(self, filename, upload_error=False): """ This function gets called when a specific file is closed. """ self.progress[filename]["complete"] = True # If the file tells us there was an upload error, let the request know as well if upload_error: self.upload_error = True onionshare-onionshare-26fcdc5/cli/onionshare_cli/web/send_base_mode.py000066400000000000000000000373631521174352300263600ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os import sys import tempfile import mimetypes import gzip from flask import Response, request from unidecode import unidecode from urllib.parse import quote, unquote class SendBaseModeWeb: """ All of the web logic shared between share and website mode (modes where the user sends files) """ def __init__(self, common, web): super(SendBaseModeWeb, self).__init__() self.common = common self.web = web # Information about the file to be shared self.is_zipped = False self.download_filename = None self.download_filesize = None self.zip_writer = None # Create a temporary dir to store gzip files in self.gzip_tmp_dir = tempfile.TemporaryDirectory(dir=self.common.build_tmp_dir()) self.gzip_counter = 0 # If autostop_sharing, only allow one download at a time self.download_in_progress = False # This tracks the history id self.cur_history_id = 0 # Whether or not we can send REQUEST_INDIVIDUAL_FILE_STARTED # and maybe other events when requests come in to this mode self.supports_file_requests = True self.define_routes() self.init() def fix_windows_paths(self, path): """ If on Windows, replace backslashes with slashes """ if self.common.platform == "Windows": return path.replace("\\", "/") return path def set_file_info(self, filenames, processed_size_callback=None): """ Build a data structure that describes the list of files """ # Store canonical paths of selected root directories for containment checking self.selected_roots = [] for filename in filenames: if os.path.isdir(filename): self.selected_roots.append(os.path.realpath(filename)) # If there's just one folder, replace filenames with a list of files inside that folder if len(filenames) == 1 and os.path.isdir(filenames[0]): filenames = [ os.path.join(filenames[0], x) for x in os.listdir(filenames[0]) ] # Re-initialize self.files = {} # Dictionary mapping file paths to filenames on disk self.root_files = ( {} ) # This is only the root files and dirs, as opposed to all of them self.cur_history_id = 0 self.file_info = {"files": [], "dirs": []} self.gzip_individual_files = {} self.init() # Windows paths use backslashes, but website paths use forward slashes. We have to # make sure we're stripping the correct type of slash if self.common.platform == "Windows": slash = "\\" else: slash = "/" # Build the file list for filename in filenames: basename = os.path.basename(filename.rstrip(slash)) # Skip symlinks at the root level if os.path.islink(filename): continue # If it's a filename, add it if os.path.isfile(filename): # Verify the file is within selected roots (for symlink safety) if not self._is_path_contained(filename): continue self.files[self.fix_windows_paths(basename)] = filename self.root_files[self.fix_windows_paths(basename)] = filename # If it's a directory, add it recursively elif os.path.isdir(filename): self.root_files[self.fix_windows_paths(basename)] = filename for root, _, nested_filenames in os.walk(filename, followlinks=False): # Normalize the root path. So if the directory name is "/home/user/Documents/some_folder", # and it has a nested folder foobar, the root is "/home/user/Documents/some_folder/foobar". # The normalized_root should be "some_folder/foobar" normalized_root = os.path.join( basename, root[len(filename) :].lstrip(slash) ).rstrip(slash) # Add the dir itself self.files[self.fix_windows_paths(normalized_root)] = root # Add the files in this dir for nested_filename in nested_filenames: full_path = os.path.join(root, nested_filename) # Skip symlinks if os.path.islink(full_path): continue # Verify the file is within selected roots if not self._is_path_contained(full_path): continue self.files[ self.fix_windows_paths( os.path.join(normalized_root, nested_filename) ) ] = full_path self.set_file_info_custom(filenames, processed_size_callback) def _is_path_contained(self, path): """ Check if the given path is contained within one of the selected root directories. Uses realpath to resolve symlinks and ensure containment. Returns False if the path is outside the selected roots (potential symlink escape). """ if not self.selected_roots: return True resolved_path = os.path.realpath(path) for root in self.selected_roots: if resolved_path.startswith(root + os.sep) or resolved_path == root: return True return False def directory_listing( self, filenames, path="", filesystem_path=None, add_trailing_slash=False ): """ Display the front page of a share or index.html-less website, listing the files/directories. """ # Tell the GUI about the directory listing history_id = self.cur_history_id self.cur_history_id += 1 self.web.add_request( self.web.REQUEST_INDIVIDUAL_FILE_STARTED, f"/{path}", {"id": history_id, "method": request.method, "status_code": 200}, ) breadcrumbs = [("☗", "/")] parts = path.split("/") if parts[-1] == "": parts = parts[:-1] for i in range(len(parts)): breadcrumbs.append((parts[i], f"/{'/'.join(parts[0 : i + 1])}")) breadcrumbs_leaf = breadcrumbs.pop()[0] # If filesystem_path is None, this is the root directory listing files, dirs = self.build_directory_listing( path, filenames, filesystem_path, add_trailing_slash ) # Mark the request as done so we know we can close the share if in auto-stop mode. self.web.done = True # Render and return the response. return self.directory_listing_template( path, files, dirs, breadcrumbs, breadcrumbs_leaf ) def build_directory_listing( self, path, filenames, filesystem_path, add_trailing_slash=False ): files = [] dirs = [] for filename in filenames: if filesystem_path: this_filesystem_path = os.path.join(filesystem_path, filename) else: this_filesystem_path = self.files[filename] # Skip symlinks in directory listings if os.path.islink(this_filesystem_path): continue is_dir = os.path.isdir(this_filesystem_path) if is_dir: if add_trailing_slash: dirs.append( { "link": os.path.join(f"/{path}", quote(filename), ""), "basename": filename, } ) else: dirs.append( { "link": os.path.join(f"/{path}", quote(filename)), "basename": filename, } ) else: size = os.path.getsize(this_filesystem_path) size_human = self.common.human_readable_filesize(size) files.append( { "link": os.path.join(f"/{path}", quote(filename)), "basename": filename, "size_human": size_human, } ) return files, dirs def stream_individual_file(self, filesystem_path): """ Return a flask response that's streaming the download of an individual file, and gzip compressing it if the browser supports it. """ # Verify the path is contained within selected roots (symlink safety check) if not self._is_path_contained(filesystem_path): history_id = self.cur_history_id self.cur_history_id += 1 return self.web.error404(history_id) use_gzip = self.should_use_gzip() # gzip compress the individual file, if it hasn't already been compressed if use_gzip: if filesystem_path not in self.gzip_individual_files: gzip_filename = os.path.join( self.gzip_tmp_dir.name, str(self.gzip_counter) ) self.gzip_counter += 1 self._gzip_compress(filesystem_path, gzip_filename, 6, None) self.gzip_individual_files[filesystem_path] = gzip_filename file_to_download = self.gzip_individual_files[filesystem_path] filesize = os.path.getsize(self.gzip_individual_files[filesystem_path]) else: file_to_download = filesystem_path filesize = os.path.getsize(filesystem_path) path = request.path # Tell GUI the individual file started history_id = self.cur_history_id self.cur_history_id += 1 self.web.add_request( self.web.REQUEST_INDIVIDUAL_FILE_STARTED, path, {"id": history_id, "filesize": filesize}, ) def generate(): chunk_size = 102400 # 100kb fp = open(file_to_download, "rb") self.web.done = False while not self.web.done: chunk = fp.read(chunk_size) if chunk == b"": self.web.done = True else: try: yield chunk # Tell GUI the progress downloaded_bytes = fp.tell() percent = (1.0 * downloaded_bytes / filesize) * 100 if ( not self.web.is_gui or self.common.platform == "Linux" or self.common.platform == "BSD" ): if self.web.settings.get(self.web.mode, "log_filenames"): # Decode and sanitize the path to remove newlines decoded_path = unquote(path) decoded_path = decoded_path.replace("\r", "").replace( "\n", "" ) filename_str = f"{decoded_path} - " else: filename_str = "" sys.stdout.write( "\r{0}{1:s}, {2:.2f}% ".format( filename_str, self.common.human_readable_filesize( downloaded_bytes ), percent, ) ) sys.stdout.flush() self.web.add_request( self.web.REQUEST_INDIVIDUAL_FILE_PROGRESS, path, { "id": history_id, "bytes": downloaded_bytes, "filesize": filesize, }, ) self.web.done = False except Exception: # Looks like the download was canceled self.web.done = True # Tell the GUI the individual file was canceled self.web.add_request( self.web.REQUEST_INDIVIDUAL_FILE_CANCELED, path, {"id": history_id}, ) fp.close() sys.stdout.write("\n") basename = os.path.basename(filesystem_path) r = Response(generate()) if use_gzip: r.headers.set("Content-Encoding", "gzip") r.headers.set("Content-Length", filesize) filename_dict = { "filename": unidecode(basename), "filename*": "UTF-8''%s" % quote(basename), } r.headers.set("Content-Disposition", "inline", **filename_dict) (content_type, _) = mimetypes.guess_type(basename, strict=False) if content_type is not None: r.headers.set("Content-Type", content_type) return r def should_use_gzip(self): """ Should we use gzip for this browser? """ return (not self.is_zipped) and ( "gzip" in request.headers.get("Accept-Encoding", "").lower() ) def _gzip_compress( self, input_filename, output_filename, level, processed_size_callback=None ): """ Compress a file with gzip, without loading the whole thing into memory Thanks: https://stackoverflow.com/questions/27035296/python-how-to-gzip-a-large-text-file-without-memoryerror """ bytes_processed = 0 blocksize = 1 << 16 # 64kB with open(input_filename, "rb") as input_file: output_file = gzip.open(output_filename, "wb", level) while True: if processed_size_callback is not None: processed_size_callback(bytes_processed) block = input_file.read(blocksize) if len(block) == 0: break output_file.write(block) bytes_processed += blocksize output_file.close() def init(self): """ Inherited class will implement this """ pass def define_routes(self): """ Inherited class will implement this """ pass def directory_listing_template(self): """ Inherited class will implement this. It should call render_template and return the response. """ pass def set_file_info_custom(self, filenames, processed_size_callback): """ Inherited class will implement this. """ pass def render_logic(self, path=""): """ Inherited class will implement this. """ pass onionshare-onionshare-26fcdc5/cli/onionshare_cli/web/share_mode.py000066400000000000000000000535261521174352300255360ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import binascii import hashlib import os import sys import tempfile import zipfile import mimetypes from datetime import datetime, timezone from flask import Response, request, render_template, make_response, abort from unidecode import unidecode from werkzeug.http import parse_date, http_date from urllib.parse import quote, unquote from .send_base_mode import SendBaseModeWeb def make_etag(data): hasher = hashlib.sha256() while True: read_bytes = data.read(4096) if read_bytes: hasher.update(read_bytes) else: break hash_value = binascii.hexlify(hasher.digest()).decode("utf-8") return '"sha256:{}"'.format(hash_value) def parse_range_header(range_header: str, target_size: int) -> list: end_index = target_size - 1 if range_header is None: return [(0, end_index)] bytes_ = "bytes=" if not range_header.startswith(bytes_): abort(416) ranges = [] for range_ in range_header[len(bytes_) :].split(","): split = range_.split("-") if len(split) == 1: try: start = int(split[0]) end = end_index except ValueError: abort(416) elif len(split) == 2: start, end = split[0], split[1] if not start: # parse ranges of the form "bytes=-100" (i.e., last 100 bytes) end = end_index try: start = end - int(split[1]) + 1 except ValueError: abort(416) else: # parse ranges of the form "bytes=100-200" try: start = int(start) if not end: end = target_size else: end = int(end) except ValueError: abort(416) if end < start: abort(416) end = min(end, end_index) else: abort(416) ranges.append((start, end)) # merge the ranges merged = [] ranges = sorted(ranges, key=lambda x: x[0]) for range_ in ranges: # initial case if not merged: merged.append(range_) else: # merge ranges that are adjacent or overlapping if range_[0] <= merged[-1][1] + 1: merged[-1] = (merged[-1][0], max(range_[1], merged[-1][1])) else: merged.append(range_) return merged class ShareModeWeb(SendBaseModeWeb): """ All of the web logic for share mode """ def init(self): self.common.log("ShareModeWeb", "init") # Allow downloading individual files if "Stop sharing after files have been sent" is unchecked self.download_individual_files = not self.web.settings.get( "share", "autostop_sharing" ) self.download_etag = None self.gzip_etag = None self.last_modified = datetime.now(tz=timezone.utc) def define_routes(self): """ The web app routes for sharing files """ @self.web.app.route( "/", defaults={"path": ""}, methods=["GET"], provide_automatic_options=False ) @self.web.app.route( "/", methods=["GET"], provide_automatic_options=False ) def index(path): """ Render the template for the onionshare landing page. """ self.web.add_request(self.web.REQUEST_LOAD, request.path) # Deny new downloads if "Stop sharing after files have been sent" is checked and there is # currently a download deny_download = ( self.web.settings.get("share", "autostop_sharing") and self.download_in_progress ) if deny_download: return render_template("denied.html") # If download is allowed to continue, serve download page if self.should_use_gzip(): self.filesize = self.gzip_filesize else: self.filesize = self.download_filesize return self.render_logic(path) @self.web.app.route( "/download", methods=["GET"], provide_automatic_options=False ) def download(): """ Download the zip file. """ # Deny new downloads if "Stop After First Download" is checked and there is # currently a download deny_download = ( self.web.settings.get("share", "autostop_sharing") and self.download_in_progress ) if deny_download: return render_template("denied.html") # Prepare some variables to use inside generate() function below # which is outside of the request context request_path = request.path # If this is a zipped file, then serve as-is. If it's not zipped, then, # if the http client supports gzip compression, gzip the file first # and serve that use_gzip = self.should_use_gzip() if use_gzip: file_to_download = self.gzip_filename self.filesize = self.gzip_filesize etag = self.gzip_etag else: file_to_download = self.download_filename self.filesize = self.download_filesize etag = self.download_etag # for range requests range_, status_code = self.get_range_and_status_code( self.filesize, etag, self.last_modified ) # Tell GUI the download started history_id = self.cur_history_id self.cur_history_id += 1 self.web.add_request( self.web.REQUEST_STARTED, request_path, {"id": history_id, "use_gzip": use_gzip}, ) basename = os.path.basename(self.download_filename) if status_code == 304: r = Response() else: r = Response( self.generate( range_, file_to_download, request_path, history_id, self.filesize, ) ) if use_gzip: r.headers.set("Content-Encoding", "gzip") r.headers.set("Content-Length", range_[1] - range_[0] + 1) filename_dict = { "filename": unidecode(basename), "filename*": "UTF-8''%s" % quote(basename), } r.headers.set("Content-Disposition", "attachment", **filename_dict) # guess content type (content_type, _) = mimetypes.guess_type(basename, strict=False) if content_type is not None: r.headers.set("Content-Type", content_type) r.headers.set("Accept-Ranges", "bytes") r.headers.set("ETag", etag) r.headers.set("Last-Modified", http_date(self.last_modified)) # we need to set this for range requests r.headers.set("Vary", "Accept-Encoding") if status_code == 206: r.headers.set( "Content-Range", "bytes {}-{}/{}".format(range_[0], range_[1], self.filesize), ) r.status_code = status_code return r @classmethod def get_range_and_status_code(cls, dl_size, etag, last_modified): use_default_range = True status_code = 200 range_header = request.headers.get("Range") # range requests are only allowed for get if request.method == "GET": ranges = parse_range_header(range_header, dl_size) if not ( len(ranges) == 1 and ranges[0][0] == 0 and ranges[0][1] == dl_size - 1 ): use_default_range = False status_code = 206 if range_header: if_range = request.headers.get("If-Range") if if_range and if_range != etag: use_default_range = True status_code = 200 if use_default_range: ranges = [(0, dl_size - 1)] if len(ranges) > 1: abort(416) # We don't support multipart range requests yet range_ = ranges[0] etag_header = request.headers.get("ETag") if etag_header is not None and etag_header != etag: abort(412) if_unmod = request.headers.get("If-Unmodified-Since") if if_unmod: if_date = parse_date(if_unmod) if if_date and not if_date.tzinfo: if_date = if_date.replace( tzinfo=timezone.utc ) # Compatible with Flask < 2.0.0 if if_date and if_date > last_modified: abort(412) elif range_header is None: status_code = 304 return range_, status_code def generate(self, range_, file_to_download, path, history_id, filesize): # The user hasn't canceled the download self.client_cancel = False # Starting a new download if self.web.settings.get("share", "autostop_sharing"): self.download_in_progress = True start, end = range_ chunk_size = 102400 # 100kb fp = open(file_to_download, "rb") fp.seek(start) self.web.done = False canceled = False bytes_left = end - start + 1 while not self.web.done: # The user has canceled the download, so stop serving the file if not self.web.stop_q.empty(): self.web.add_request( self.web.REQUEST_CANCELED, path, {"id": history_id} ) break read_size = min(chunk_size, bytes_left) chunk = fp.read(read_size) if chunk == b"": self.web.done = True else: try: yield chunk # tell GUI the progress downloaded_bytes = fp.tell() percent = (1.0 * downloaded_bytes / filesize) * 100 bytes_left -= read_size # only output to stdout if running onionshare in CLI mode, or if using Linux (#203, #304) if ( not self.web.is_gui or self.common.platform == "Linux" or self.common.platform == "BSD" ): if self.web.settings.get("share", "log_filenames"): # Decode and sanitize the path to remove newlines decoded_path = unquote(path) decoded_path = decoded_path.replace("\r", "").replace( "\n", "" ) filename_str = f"{decoded_path} - " else: filename_str = "" sys.stdout.write( "\r{0}{1:s}, {2:.2f}% ".format( filename_str, self.common.human_readable_filesize(downloaded_bytes), percent, ) ) sys.stdout.flush() self.web.add_request( self.web.REQUEST_PROGRESS, path, { "id": history_id, "bytes": downloaded_bytes, "total_bytes": filesize, }, ) self.web.done = False except Exception: # looks like the download was canceled self.web.done = True canceled = True # tell the GUI the download has canceled self.web.add_request( self.web.REQUEST_CANCELED, path, {"id": history_id} ) fp.close() sys.stdout.write("\n") # Download is finished if self.web.settings.get("share", "autostop_sharing"): self.download_in_progress = False # Close the server, if necessary if self.web.settings.get("share", "autostop_sharing") and not canceled: print("Stopped because transfer is complete") self.web.running = False try: self.web.stop() except Exception: pass def directory_listing_template( self, path, files, dirs, breadcrumbs, breadcrumbs_leaf ): return make_response( render_template( "send.html", file_info=self.file_info, files=files, dirs=dirs, breadcrumbs=breadcrumbs, breadcrumbs_leaf=breadcrumbs_leaf, filename=os.path.basename(self.download_filename), filesize=self.filesize, filesize_human=self.common.human_readable_filesize( self.download_filesize ), is_zipped=self.is_zipped, static_url_path=self.web.static_url_path, download_individual_files=self.download_individual_files, title=self.web.settings.get("general", "title"), ) ) def set_file_info_custom(self, filenames, processed_size_callback): self.common.log("ShareModeWeb", "set_file_info_custom") self.web.cancel_compression = False self.build_zipfile_list(filenames, processed_size_callback) def render_logic(self, path=""): if path in self.files: filesystem_path = self.files[path] # If it's a directory if os.path.isdir(filesystem_path): # Render directory listing filenames = [] for filename in os.listdir(filesystem_path): filenames.append(filename) filenames.sort() return self.directory_listing(filenames, path, filesystem_path) # If it's a file elif os.path.isfile(filesystem_path): if self.download_individual_files: return self.stream_individual_file(filesystem_path) else: history_id = self.cur_history_id self.cur_history_id += 1 return self.web.error404(history_id) # If it's not a directory or file, throw a 404 else: history_id = self.cur_history_id self.cur_history_id += 1 return self.web.error404(history_id) else: # Special case loading / if path == "": # Root directory listing filenames = list(self.root_files) filenames.sort() return self.directory_listing(filenames, path) else: # If the path isn't found, throw a 404 history_id = self.cur_history_id self.cur_history_id += 1 return self.web.error404(history_id) def build_zipfile_list(self, filenames, processed_size_callback=None): self.common.log("ShareModeWeb", "build_zipfile_list", f"filenames={filenames}") for filename in filenames: info = { "filename": filename, "basename": os.path.basename(filename.rstrip("/")), } if os.path.isfile(filename): info["size"] = os.path.getsize(filename) info["size_human"] = self.common.human_readable_filesize(info["size"]) self.file_info["files"].append(info) if os.path.isdir(filename): info["size"] = self.common.dir_size(filename) info["size_human"] = self.common.human_readable_filesize(info["size"]) self.file_info["dirs"].append(info) self.file_info["files"].sort(key=lambda k: k["basename"]) self.file_info["dirs"].sort(key=lambda k: k["basename"]) # Check if there's only 1 file and no folders if len(self.file_info["files"]) == 1 and len(self.file_info["dirs"]) == 0: self.download_filename = self.file_info["files"][0]["filename"] self.download_filesize = self.file_info["files"][0]["size"] with open(self.download_filename, "rb") as f: self.download_etag = make_etag(f) # Compress the file with gzip now, so we don't have to do it on each request self.gzip_tmp_dir = tempfile.TemporaryDirectory( dir=self.common.build_tmp_dir() ) self.gzip_filename = os.path.join(self.gzip_tmp_dir.name, "file.gz") self._gzip_compress( self.download_filename, self.gzip_filename, 6, processed_size_callback ) self.gzip_filesize = os.path.getsize(self.gzip_filename) with open(self.gzip_filename, "rb") as f: self.gzip_etag = make_etag(f) self.is_zipped = False # Cleanup this tempfile self.web.cleanup_tempdirs.append(self.gzip_tmp_dir) else: # Zip up the files and folders self.zip_writer = ZipWriter( self.common, self.web, processed_size_callback=processed_size_callback ) self.download_filename = self.zip_writer.zip_filename for info in self.file_info["files"]: self.zip_writer.add_file(info["filename"]) # Canceling early? if self.web.cancel_compression: self.zip_writer.close() return False for info in self.file_info["dirs"]: if not self.zip_writer.add_dir(info["filename"]): return False self.zip_writer.close() self.download_filesize = os.path.getsize(self.download_filename) with open(self.download_filename, "rb") as f: self.download_etag = make_etag(f) self.is_zipped = True return True class ZipWriter(object): """ ZipWriter accepts files and directories and compresses them into a zip file with. If a zip_filename is not passed in, it will use the default onionshare filename. """ def __init__( self, common, web=None, zip_filename=None, processed_size_callback=None ): self.common = common self.web = web self.cancel_compression = False if zip_filename: self.zip_filename = zip_filename else: self.zip_temp_dir = tempfile.TemporaryDirectory( dir=self.common.build_tmp_dir() ) self.zip_filename = f"{self.zip_temp_dir.name}/onionshare_{self.common.random_string(4, 6)}.zip" # Cleanup this temp dir if self.web: self.web.cleanup_tempdirs.append(self.zip_temp_dir) self.z = zipfile.ZipFile(self.zip_filename, "w", allowZip64=True) self.processed_size_callback = processed_size_callback if self.processed_size_callback is None: self.processed_size_callback = lambda _: None self._size = 0 self.processed_size_callback(self._size) def add_file(self, filename): """ Add a file to the zip archive. """ # Skip symlinks if os.path.islink(filename): return # Verify the file is within selected roots (symlink safety check) if self.web and not self.web.share_mode._is_path_contained(filename): return self.z.write(filename, os.path.basename(filename), zipfile.ZIP_DEFLATED) self._size += os.path.getsize(filename) self.processed_size_callback(self._size) def add_dir(self, filename): """ Add a directory, and all of its children, to the zip archive. """ dir_to_strip = os.path.dirname(filename.rstrip("/")) + "/" for dirpath, dirnames, filenames in os.walk(filename, followlinks=False): for f in filenames: # Canceling early? if self.cancel_compression: return False full_filename = os.path.join(dirpath, f) # Skip symlinks if os.path.islink(full_filename): continue # Verify the file is within selected roots if self.web and not self.web.share_mode._is_path_contained(full_filename): continue arc_filename = full_filename[len(dir_to_strip) :] self.z.write(full_filename, arc_filename, zipfile.ZIP_DEFLATED) self._size += os.path.getsize(full_filename) self.processed_size_callback(self._size) return True def close(self): """ Close the zip archive. """ self.z.close() onionshare-onionshare-26fcdc5/cli/onionshare_cli/web/web.py000066400000000000000000000333601521174352300241770ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import importlib.metadata import logging import mimetypes import os import queue import requests import shutil from waitress.server import create_server import flask from flask import ( Flask, request, render_template, abort, make_response, send_file, ) from flask_compress import Compress from flask_socketio import SocketIO from .share_mode import ShareModeWeb from .receive_mode import ReceiveModeWeb, ReceiveModeWSGIMiddleware, ReceiveModeRequest from .website_mode import WebsiteModeWeb from .chat_mode import ChatModeWeb # Stub out flask's show_server_banner function, to avoiding showing warnings that # are not applicable to OnionShare def stubbed_show_server_banner(env, debug, app_import_path=None, eager_loading=None): pass try: flask.cli.show_server_banner = stubbed_show_server_banner except Exception: pass class WaitressException(Exception): """ There was a problem starting the waitress web server. """ class Web: """ The Web object is the OnionShare web server, powered by flask """ REQUEST_LOAD = 0 REQUEST_STARTED = 1 REQUEST_PROGRESS = 2 REQUEST_CANCELED = 3 REQUEST_UPLOAD_INCLUDES_MESSAGE = 4 REQUEST_UPLOAD_FILE_RENAMED = 5 REQUEST_UPLOAD_SET_DIR = 6 REQUEST_UPLOAD_FINISHED = 7 REQUEST_UPLOAD_CANCELED = 8 REQUEST_INDIVIDUAL_FILE_STARTED = 9 REQUEST_INDIVIDUAL_FILE_PROGRESS = 10 REQUEST_INDIVIDUAL_FILE_CANCELED = 11 REQUEST_ERROR_DATA_DIR_CANNOT_CREATE = 12 REQUEST_OTHER = 13 def __init__(self, common, is_gui, mode_settings, mode="share"): self.common = common self.common.log("Web", "__init__", f"is_gui={is_gui}, mode={mode}") self.settings = mode_settings # Flask guesses the MIME type of files from a database on the operating # system. # Some operating systems, or applications that can modify the database # (such as the Windows Registry) can treat .js files as text/plain, # which breaks the chat app due to X-Content-Type-Options: nosniff. # # It's probably #notourbug but we can fix it by forcing the mimetype. # https://github.com/onionshare/onionshare/issues/1443 mimetypes.add_type("text/javascript", ".js") self.waitress = None # The flask app self.app = Flask( __name__, static_folder=self.common.get_resource_path("static"), static_url_path=f"/static_{self.common.random_string(16)}", # randomize static_url_path to avoid making /static unusable template_folder=self.common.get_resource_path("templates"), ) self.compress = Compress() self.compress.init_app(self.app) self.app.secret_key = self.common.random_string(8) self.generate_static_url_path() # Verbose mode? if self.common.verbose: self.verbose_mode() # Are we running in GUI mode? self.is_gui = is_gui # If the user stops the server while a transfer is in progress, it should # immediately stop the transfer. In order to make it thread-safe, stop_q # is a queue. If anything is in it, then the user stopped the server self.stop_q = queue.Queue() # Are we using receive mode? self.mode = mode if self.mode == "receive": # Use custom WSGI middleware, to modify environ self.app.wsgi_app = ReceiveModeWSGIMiddleware(self.app.wsgi_app, self) # Use a custom Request class to track upload progress self.app.request_class = ReceiveModeRequest self.security_headers = [ ("X-Frame-Options", "DENY"), ("X-Xss-Protection", "1; mode=block"), ("X-Content-Type-Options", "nosniff"), ("Referrer-Policy", "no-referrer"), ("Server", "OnionShare"), ] self.q = queue.Queue() self.done = False # shutting down the server only works within the context of flask, so the easiest way to do it is over http self.shutdown_password = self.common.random_string(16) # Keep track if the server is running self.running = False # Define the web app routes self.define_common_routes() # Create the mode web object, which defines its own routes self.share_mode = None self.receive_mode = None self.website_mode = None self.chat_mode = None if self.mode == "share": self.share_mode = ShareModeWeb(self.common, self) elif self.mode == "receive": self.receive_mode = ReceiveModeWeb(self.common, self) elif self.mode == "website": self.website_mode = WebsiteModeWeb(self.common, self) elif self.mode == "chat": if self.common.verbose: try: self.socketio = SocketIO( async_mode="gevent", logger=True, engineio_logger=True ) except ValueError: self.socketio = SocketIO(logger=True, engineio_logger=True) else: try: self.socketio = SocketIO(async_mode="gevent") except ValueError: self.socketio = SocketIO() self.socketio.init_app(self.app) self.chat_mode = ChatModeWeb(self.common, self) self.cleanup_tempdirs = [] def get_mode(self): if self.mode == "share": return self.share_mode elif self.mode == "receive": return self.receive_mode elif self.mode == "website": return self.website_mode elif self.mode == "chat": return self.chat_mode else: return None def generate_static_url_path(self): # The static URL path has a 128-bit random number in it to avoid having name # collisions with files that might be getting shared self.static_url_path = f"/static_{self.common.random_string(16)}" self.common.log( "Web", "generate_static_url_path", f"new static_url_path is {self.static_url_path}", ) # Update the flask route to handle the new static URL path self.app.static_url_path = self.static_url_path self.app.add_url_rule( self.static_url_path + "/", view_func=self.app.send_static_file, ) def define_common_routes(self): """ Common web app routes between all modes. """ @self.app.after_request def add_security_headers(r): """ Add security headers to a response """ for header, value in self.security_headers: r.headers.set(header, value) # Set a CSP header unless in website mode and the user has disabled it default_csp = "default-src 'self'; frame-ancestors 'none'; form-action 'self'; base-uri 'self'; img-src 'self' data:;" if self.mode != "website" or ( not self.settings.get("website", "disable_csp") and not self.settings.get("website", "custom_csp") ): r.headers.set("Content-Security-Policy", default_csp) else: if self.settings.get("website", "custom_csp"): r.headers.set( "Content-Security-Policy", self.settings.get("website", "custom_csp"), ) return r @self.app.errorhandler(404) def not_found(e): mode = self.get_mode() history_id = mode.cur_history_id mode.cur_history_id += 1 return self.error404(history_id) @self.app.errorhandler(405) def method_not_allowed(e): mode = self.get_mode() history_id = mode.cur_history_id mode.cur_history_id += 1 return self.error405(history_id) @self.app.errorhandler(500) def method_not_allowed(e): mode = self.get_mode() history_id = mode.cur_history_id mode.cur_history_id += 1 return self.error500(history_id) if self.mode != "website": @self.app.route("/favicon.ico") def favicon(): return send_file( f"{self.common.get_resource_path('static')}/img/favicon.ico" ) def error403(self): self.add_request(Web.REQUEST_OTHER, request.path) return render_template("403.html", static_url_path=self.static_url_path), 403 def error404(self, history_id): mode = self.get_mode() if mode.supports_file_requests: self.add_request( self.REQUEST_INDIVIDUAL_FILE_STARTED, request.path, {"id": history_id, "status_code": 404}, ) self.add_request(Web.REQUEST_OTHER, request.path) return render_template("404.html", static_url_path=self.static_url_path), 404 def error405(self, history_id): mode = self.get_mode() if mode.supports_file_requests: self.add_request( self.REQUEST_INDIVIDUAL_FILE_STARTED, request.path, {"id": history_id, "status_code": 405}, ) self.add_request(Web.REQUEST_OTHER, request.path) return render_template("405.html", static_url_path=self.static_url_path), 405 def error500(self, history_id): mode = self.get_mode() if mode.supports_file_requests: self.add_request( self.REQUEST_INDIVIDUAL_FILE_STARTED, request.path, {"id": history_id, "status_code": 500}, ) self.add_request(Web.REQUEST_OTHER, request.path) return render_template("500.html", static_url_path=self.static_url_path), 500 def _safe_select_jinja_autoescape(self, filename): if filename is None: return True return filename.endswith((".html", ".htm", ".xml", ".xhtml")) def add_request(self, request_type, path=None, data=None): """ Add a request to the queue, to communicate with the GUI. """ self.q.put({"type": request_type, "path": path, "data": data}) def verbose_mode(self): """ Turn on verbose mode, which will log flask errors to a file. """ flask_log_filename = os.path.join(self.common.build_data_dir(), "flask.log") log_handler = logging.FileHandler(flask_log_filename) log_handler.setLevel(logging.WARNING) self.app.logger.addHandler(log_handler) def start(self, port): """ Start the flask web server. """ self.common.log("Web", "start", f"port={port}") # Make sure the stop_q is empty when starting a new server while not self.stop_q.empty(): try: self.stop_q.get(block=False) except queue.Empty: pass # In Whonix, listen on 0.0.0.0 instead of 127.0.0.1 (#220) if os.path.exists("/usr/share/anon-ws-base-files/workstation"): host = "0.0.0.0" else: host = "127.0.0.1" self.running = True if self.mode == "chat": self.socketio.run(self.app, host=host, port=port) else: try: self.waitress = create_server( self.app, host=host, port=port, clear_untrusted_proxy_headers=True, ident="OnionShare", ) self.waitress.run() except Exception as e: if not self.waitress.shutdown: raise WaitressException(f"Error starting Waitress: {e}") def stop(self, port): """ Stop the flask web server by loading /shutdown. """ self.common.log("Web", "stop", "stopping server") # Let the mode know that the user stopped the server self.stop_q.put(True) # If in chat mode, shutdown the socket server rather than Waitress. if self.mode == "chat": self.socketio.stop() if self.waitress: self.waitress_custom_shutdown() def cleanup(self): """ Shut everything down and clean up temporary files, etc. """ self.common.log("Web", "cleanup") # Clean up the tempfile.NamedTemporaryDirectory objects for dir in self.cleanup_tempdirs: dir.cleanup() self.cleanup_tempdirs = [] def waitress_custom_shutdown(self): """Shutdown the Waitress server immediately""" # Code borrowed from https://github.com/Pylons/webtest/blob/4b8a3ebf984185ff4fefb31b4d0cf82682e1fcf7/webtest/http.py#L93-L104 self.waitress.shutdown = True while self.waitress._map: triggers = list(self.waitress._map.values()) for trigger in triggers: trigger.handle_close() self.waitress.maintenance(0) self.waitress.task_dispatcher.shutdown() return True onionshare-onionshare-26fcdc5/cli/onionshare_cli/web/website_mode.py000066400000000000000000000103161521174352300260640ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os from flask import render_template, make_response from .send_base_mode import SendBaseModeWeb class WebsiteModeWeb(SendBaseModeWeb): """ All of the web logic for website mode """ def init(self): pass def define_routes(self): """ The web app routes for sharing a website """ @self.web.app.route("/", defaults={"path": ""}, methods=["GET"], provide_automatic_options=False) @self.web.app.route("/", methods=["GET"], provide_automatic_options=False) def path_public(path): return path_logic(path) def path_logic(path=""): """ Render the onionshare website. """ return self.render_logic(path) def directory_listing_template( self, path, files, dirs, breadcrumbs, breadcrumbs_leaf ): return make_response( render_template( "listing.html", path=path, files=files, dirs=dirs, breadcrumbs=breadcrumbs, breadcrumbs_leaf=breadcrumbs_leaf, static_url_path=self.web.static_url_path, title=self.web.settings.get("general", "title"), ) ) def set_file_info_custom(self, filenames, processed_size_callback): self.common.log("WebsiteModeWeb", "set_file_info_custom") self.web.cancel_compression = True def render_logic(self, path=""): # Strip trailing slash path = path.rstrip("/") if path in self.files: filesystem_path = self.files[path] # If it's a directory if os.path.isdir(filesystem_path): # Is there an index.html? index_path = os.path.join(path, "index.html") if index_path in self.files: # Render it return self.stream_individual_file(self.files[index_path]) else: # Otherwise, render directory listing, and enforce trailing slash # which can help with relative asset links in sub-directories. filenames = [] for filename in os.listdir(filesystem_path): filenames.append(filename) filenames.sort() return self.directory_listing(filenames, path, filesystem_path, True) # If it's a file elif os.path.isfile(filesystem_path): return self.stream_individual_file(filesystem_path) # If it's not a directory or file, throw a 404 else: history_id = self.cur_history_id self.cur_history_id += 1 return self.web.error404(history_id) else: # Special case loading / if path == "": index_path = "index.html" if index_path in self.files: # Render it return self.stream_individual_file(self.files[index_path]) else: # Root directory listing filenames = list(self.root_files) filenames.sort() return self.directory_listing(filenames, path, None, True) else: # If the path isn't found, throw a 404 history_id = self.cur_history_id self.cur_history_id += 1 return self.web.error404(history_id) onionshare-onionshare-26fcdc5/cli/poetry.lock000066400000000000000000004644661521174352300215120ustar00rootroot00000000000000# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "backports-zstd" version = "1.5.0" description = "Backport of compression.zstd" optional = false python-versions = "<3.14,>=3.10" groups = ["main"] markers = "python_version < \"3.14\"" files = [ {file = "backports_zstd-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09045a00d9dad12dab49e029b26c197637b882cf4adc737a373404ba2aaabbca"}, {file = "backports_zstd-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e51edd66db6855bee020c951ca5c2e816777bfe77f87742fbbfae9a32d482fec"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:73ff4ceb7e28538455e0a44f53e05a731bbdb9bfe2cab4a1637dd1f0093732e3"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9526d69c8fbef03e04d74b33946e23f806399cb49e51550bb21d757fb2ce869"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5e24ee1e1bbb4549a2ad63695b4a5776596aa171fdaf7c1e178e61e351faf0a9"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ebfbf7307d618d68deef905d3d6655339d4ce187e176023bff8fbd44ec1e20d0"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b82506a4da0977754335c727752411bbba1fe476a8662d96161218f275fba859"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4cf8355cdfa7a2cba9c51655d56e6be39c751799286b142640be30fef2301a70"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f7de15f3871d21d6e761c5a309618b069fee5f225e64e4406956ac0209dc6917"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:624825b9c290e6089cd9955d88da04b085528fe213adf3e4e8be5c0fffef6c65"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:7088a75f96d8f6b0d3523ec3a99d1472ce03c3524b2f7b485b80e115ef20055f"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:97f4d29e99538b11313cbc7a6d9b3c2ce0d69fdc497699ab74953d0d5949ab88"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8b4e17632759a45a7d0c4cf31968d8d033eefbe1a3d81d8aaf519558371c3359"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0075195c79c0508bc7313a3402b187bd9d27d4f9a376e8e2caac0fc2baeacbdf"}, {file = "backports_zstd-1.5.0-cp310-cp310-win32.whl", hash = "sha256:11c694c9eef69c19a52df94466d4fd5c8b1bdfbaad350e95adc883b40d8b3be2"}, {file = "backports_zstd-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:c1ea900765329a515020e4e66c65a826657cc1f110770cac3f71ec01b43f2d25"}, {file = "backports_zstd-1.5.0-cp310-cp310-win_arm64.whl", hash = "sha256:0c473387025e233d123f401d09a17a57e0b9af2ec2423aae7f50f1c806887cb3"}, {file = "backports_zstd-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fbaa5502617dc4f04327c7a2951f0fcdca7aaef93ddf32c15dc8b620208174fa"}, {file = "backports_zstd-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:204f00d62e95aab987c7c019452b2373bdefb17252443765f2ede7f15b6e669a"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:2c77c0d4c330afd26d2a98f3d689ab922ec3f046014a1614ddcaad437666ac05"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6bb2f2d2c07358edeaa251cf804b993e9f0d5d93af8a7ea2414d80ff3c105e95"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb89f554abcebcb2c487024e63be8059083775c5fd351fec0cc2dc3e9f528714"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ea969758af743000d822fc3a69dc9de059bbbb8d07d2f13e06ff49ac63cce74f"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:775ad82d268923639bc924013fc61561df376c148506b241f0f80718b5bb3a2f"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:663128370bbc2ebcc436b8977bc434a7bf29919d92d91fee05ed6fb0fa807646"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:572c76832e9a24da4084befa52c23f4c03fede2aa250ae6250cbc5a11b980f69"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9410bcbcd3afd787a15a276d68f954d1703788c780faa421183a61d39da8b862"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0fab15e6895bef621041dd82d6306ffa24889257dd902c4b98b88e4260b3465d"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ffde637b6d0082f1c3356657002469cf199c7c12d50d9822a55b13425c778d3"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c01d377c1489cb2230bf6a9ff01c73c42863cc96ee648c49923d4f6d4ea4e2d5"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4080bb9c8a51bb2bf8caf8018d78278cd49eb924cb06a54f56a411095e2ac912"}, {file = "backports_zstd-1.5.0-cp311-cp311-win32.whl", hash = "sha256:9f4fe3fd82c8c6e8a9fdc5c71f92f9fe2442d02e7f59fddef25a955e189e3f38"}, {file = "backports_zstd-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:e7c0372fa036751109604c70a8c87e59faaacc195d519c8cb9e0e527ee2b5478"}, {file = "backports_zstd-1.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:264a66137555bb4648f7e64cfc514d820758072684f373269fcdd2e8d4a90306"}, {file = "backports_zstd-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1858cacdb3e50105a1b60acdc3dd5b18650077d12dce243e19d5c88e8172bd71"}, {file = "backports_zstd-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ccffc0a1974ecc2cc42afa4c15f56d036a4b2bae0abc46e6ba9b3358d9b1c037"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:ab3430ab4d4ac3fb1bc1e4174d137731e51363b6abd5e51a1599690fe9c7d61d"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c737c1cb4a10c2d0f6cba9a347522858094f0a737b4558c67a777bcaa4a795cd"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0379c66510681a6b2780d3f3ef2cff54d01204b52448d64bde1855d40f856a04"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7c7474b291e264c9609358d3875cf539623f7a65339c2b533020992b1a4c095b"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bb73c22444617bc5a3abf32dd27b3f2085898cfe3b95e6855300e9189898a3bd"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6cd7f6c33afd89354f74469e315e72754e3040f91f7b685061e225d9e36e3e8e"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2106309071f279b38d3663c55c7fed192733b4f332b50eb3fa707e54bad6967a"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:56fffa80be74cb11ac843333bbdc56e466c87967706886b3efd6b16d83830d90"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5e8b8251eec80e67e30ec79dfc5b3b1ada069b9ac48b56b102f3e2c6f8281062"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:f334dd17ffead361aa9090e40151bd123507ce213a62733121b7145c6711cbde"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:78cbfd061255fef6de5070a54e0f9c00e8aabad5c99dd2ad884a3a7d1acc09ae"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2f55d70df44f49d599e20033013bc1ae705202735c45d4bca8eb963b225e15fd"}, {file = "backports_zstd-1.5.0-cp312-cp312-win32.whl", hash = "sha256:a8b096e0383a3bcab34f8c97b79e1a52051189d11258bbc2bc1145997a15dd1d"}, {file = "backports_zstd-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e2802899ba4ef1a062ffe4bb1292c5df32011a54b4c3004c54f46ec975f39554"}, {file = "backports_zstd-1.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:3c0353e66942afbd45518788cfbd1e9e117828ceb390fa50517f46f291850d8e"}, {file = "backports_zstd-1.5.0-cp313-cp313-android_21_arm64_v8a.whl", hash = "sha256:02a57ee8598dd863c0b11c7af00042ce6bc045bf6f4249fa4c322c62614ca1fd"}, {file = "backports_zstd-1.5.0-cp313-cp313-android_21_x86_64.whl", hash = "sha256:c56c11eb3173d540e1fb0216f7ab477cbd3a204eca41f5f329059ee8a5d2ad47"}, {file = "backports_zstd-1.5.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:ef98f632026aa8e6ce05d786977092798efbe78677aa71219f22d31787809c90"}, {file = "backports_zstd-1.5.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:c3712300b18f9d07f788b03594b2f34dfad89d77df96938a640c5007522a6b69"}, {file = "backports_zstd-1.5.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:bdbc75d1f54df70b65bcfbc8aa0cac21475f79665bb045960af606dc07b56090"}, {file = "backports_zstd-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93d306300d25e59f1cbe98cda494bf295be03a20e8b2c5602ee5ddc03ded29f2"}, {file = "backports_zstd-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:305d2e4ae9a595d0fd9d5bea5a7a2163306c6c4dcc5eec35ecd5008219d4580e"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:c8f0967bf8d806b250fb1e905a6b8190e7ae83656d5308989243f84e01fa3774"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:76b7314ca9a253171e3e9524960e9e6411997323cf10aecbbc330faa7a90278d"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b1d0bf16bba86b1071731ced389f184e8de61c1afcafa584244f7f726632f92f"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:96709d27d406008575ef759405169d538040156704b457d8c0ac035127a46b67"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5737402c29b2bd5bc661d4cde08aed531ed326f2b59a7ad98dc07650dc99a2c9"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2b65f37ddd375114dbf84658e7dd168e10f5a93394940bfefa7fafc2d3234450"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4fae7825dde4f81c28b4c66b1e997f893e296c3f1668351952b3ed085eb9f8cd"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3aa10e77c0e712d2dfb950910b50591c2fb11f0f1328814e23acc0b4950766df"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:518b2ef54ce0fee6d29379cfd64ef66e639456f1b18943466e929b19677f135f"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:673a1e5fdaa6cb0c7a967eb33066b6dd564871b3498a93e11e2972998047d11f"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:1277c07ff2d731586aa05aebd946a1b30184620d886a735dd5d5bf94a4a1061e"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aff334c7c38b4aea2a899f3138a99c1d58f0686ad7815c74bff506ecf4333296"}, {file = "backports_zstd-1.5.0-cp313-cp313-win32.whl", hash = "sha256:b932834c4d85360f46d1e7fbf3eee1e26ba594e0eb5c3ee1281e89bc1d48d06f"}, {file = "backports_zstd-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:c71dfbeced720326a8917a6edf921c568dc2396228c6432205c6d7e7fe7f3707"}, {file = "backports_zstd-1.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:7b5798b20ffff71ee4620a01f56fe0b50271724b4251db08c90a069446cc4752"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9685586eb67fa2e59eab8027d48e8275ce90e404b6dc737b508f741853ba6cb7"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a68ab446d007d34e12f5a812e6f7d1c120a3d15cb5d4e62b7568926a6da6fb7"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:627973d4375a42500a66cc2ea912f6223249a6cdfeb56cc340b0d20b5a3475d0"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c077639e99de02a679dca9c6a189f60a76e7d0096977c0ebd070c31de8df57a"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ac2b3895fc9b1f0b0e71bffa179b48930dc27643b7e4885869afd295e7dfe1e"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:41b23cbd72f503aedcaaaa23d55d2d98d449e5938154d2b3f57832c73b286cee"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0ca2d4ac4901eada2cfb86fda692e5d4a1e09485d9f2ec5777dc6cd3154b3b46"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:20796211a623ec6e0061cef4d7cca760e9e0a0a951bb30dc9ba89ed4a3fea5e4"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:5232cd2a58c60da4ceb0e09e42dbc579b92dda4a9301a756af0c738223a23487"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:012d88a9ae08f331e1adc03dfbda4ff2ae7f76ea62455975827b215677a11aec"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cbb7d79f8e43b6e0e17616961e425b9f8b32d9933e1db69242baa6e21f44a978"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6172dcdd664ef243e55a35e6b45f1c866767c61043f0ddcd908abd14df662065"}, {file = "backports_zstd-1.5.0.tar.gz", hash = "sha256:a5e622a82eb183b4fbe18032755ce0a15fa9a82f2adb9b621620b91247aaedb7"}, ] [[package]] name = "bidict" version = "0.23.1" description = "The bidirectional mapping library for Python." optional = false python-versions = ">=3.8" groups = ["main"] files = [ {file = "bidict-0.23.1-py3-none-any.whl", hash = "sha256:5dae8d4d79b552a71cbabc7deb25dfe8ce710b17ff41711e13010ead2abfc3e5"}, {file = "bidict-0.23.1.tar.gz", hash = "sha256:03069d763bc387bbd20e7d49914e75fc4132a41937fa3405417e1a5a2d006d71"}, ] [[package]] name = "blinker" version = "1.9.0" description = "Fast, simple object-to-object and broadcast signaling" optional = false python-versions = ">=3.9" groups = ["main"] files = [ {file = "blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc"}, {file = "blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf"}, ] [[package]] name = "brotli" version = "1.2.0" description = "Python bindings for the Brotli compression library" optional = false python-versions = "*" groups = ["main"] markers = "platform_python_implementation != \"PyPy\"" files = [ {file = "brotli-1.2.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:99cfa69813d79492f0e5d52a20fd18395bc82e671d5d40bd5a91d13e75e468e8"}, {file = "brotli-1.2.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:3ebe801e0f4e56d17cd386ca6600573e3706ce1845376307f5d2cbd32149b69a"}, {file = "brotli-1.2.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:a387225a67f619bf16bd504c37655930f910eb03675730fc2ad69d3d8b5e7e92"}, {file = "brotli-1.2.0-cp27-cp27m-win32.whl", hash = "sha256:b908d1a7b28bc72dfb743be0d4d3f8931f8309f810af66c906ae6cd4127c93cb"}, {file = "brotli-1.2.0-cp27-cp27m-win_amd64.whl", hash = "sha256:d206a36b4140fbb5373bf1eb73fb9de589bb06afd0d22376de23c5e91d0ab35f"}, {file = "brotli-1.2.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7e9053f5fb4e0dfab89243079b3e217f2aea4085e4d58c5c06115fc34823707f"}, {file = "brotli-1.2.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:4735a10f738cb5516905a121f32b24ce196ab82cfc1e4ba2e3ad1b371085fd46"}, {file = "brotli-1.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b90b767916ac44e93a8e28ce6adf8d551e43affb512f2377c732d486ac6514e"}, {file = "brotli-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6be67c19e0b0c56365c6a76e393b932fb0e78b3b56b711d180dd7013cb1fd984"}, {file = "brotli-1.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0bbd5b5ccd157ae7913750476d48099aaf507a79841c0d04a9db4415b14842de"}, {file = "brotli-1.2.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3f3c908bcc404c90c77d5a073e55271a0a498f4e0756e48127c35d91cf155947"}, {file = "brotli-1.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1b557b29782a643420e08d75aea889462a4a8796e9a6cf5621ab05a3f7da8ef2"}, {file = "brotli-1.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81da1b229b1889f25adadc929aeb9dbc4e922bd18561b65b08dd9343cfccca84"}, {file = "brotli-1.2.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ff09cd8c5eec3b9d02d2408db41be150d8891c5566addce57513bf546e3d6c6d"}, {file = "brotli-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a1778532b978d2536e79c05dac2d8cd857f6c55cd0c95ace5b03740824e0e2f1"}, {file = "brotli-1.2.0-cp310-cp310-win32.whl", hash = "sha256:b232029d100d393ae3c603c8ffd7e3fe6f798c5e28ddca5feabb8e8fdb732997"}, {file = "brotli-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:ef87b8ab2704da227e83a246356a2b179ef826f550f794b2c52cddb4efbd0196"}, {file = "brotli-1.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:15b33fe93cedc4caaff8a0bd1eb7e3dab1c61bb22a0bf5bdfdfd97cd7da79744"}, {file = "brotli-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:898be2be399c221d2671d29eed26b6b2713a02c2119168ed914e7d00ceadb56f"}, {file = "brotli-1.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:350c8348f0e76fff0a0fd6c26755d2653863279d086d3aa2c290a6a7251135dd"}, {file = "brotli-1.2.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2e1ad3fda65ae0d93fec742a128d72e145c9c7a99ee2fcd667785d99eb25a7fe"}, {file = "brotli-1.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:40d918bce2b427a0c4ba189df7a006ac0c7277c180aee4617d99e9ccaaf59e6a"}, {file = "brotli-1.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2a7f1d03727130fc875448b65b127a9ec5d06d19d0148e7554384229706f9d1b"}, {file = "brotli-1.2.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9c79f57faa25d97900bfb119480806d783fba83cd09ee0b33c17623935b05fa3"}, {file = "brotli-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:844a8ceb8483fefafc412f85c14f2aae2fb69567bf2a0de53cdb88b73e7c43ae"}, {file = "brotli-1.2.0-cp311-cp311-win32.whl", hash = "sha256:aa47441fa3026543513139cb8926a92a8e305ee9c71a6209ef7a97d91640ea03"}, {file = "brotli-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:022426c9e99fd65d9475dce5c195526f04bb8be8907607e27e747893f6ee3e24"}, {file = "brotli-1.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:35d382625778834a7f3061b15423919aa03e4f5da34ac8e02c074e4b75ab4f84"}, {file = "brotli-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a61c06b334bd99bc5ae84f1eeb36bfe01400264b3c352f968c6e30a10f9d08b"}, {file = "brotli-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:acec55bb7c90f1dfc476126f9711a8e81c9af7fb617409a9ee2953115343f08d"}, {file = "brotli-1.2.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:260d3692396e1895c5034f204f0db022c056f9e2ac841593a4cf9426e2a3faca"}, {file = "brotli-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:072e7624b1fc4d601036ab3f4f27942ef772887e876beff0301d261210bca97f"}, {file = "brotli-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adedc4a67e15327dfdd04884873c6d5a01d3e3b6f61406f99b1ed4865a2f6d28"}, {file = "brotli-1.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7a47ce5c2288702e09dc22a44d0ee6152f2c7eda97b3c8482d826a1f3cfc7da7"}, {file = "brotli-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:af43b8711a8264bb4e7d6d9a6d004c3a2019c04c01127a868709ec29962b6036"}, {file = "brotli-1.2.0-cp312-cp312-win32.whl", hash = "sha256:e99befa0b48f3cd293dafeacdd0d191804d105d279e0b387a32054c1180f3161"}, {file = "brotli-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:b35c13ce241abdd44cb8ca70683f20c0c079728a36a996297adb5334adfc1c44"}, {file = "brotli-1.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9e5825ba2c9998375530504578fd4d5d1059d09621a02065d1b6bfc41a8e05ab"}, {file = "brotli-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0cf8c3b8ba93d496b2fae778039e2f5ecc7cff99df84df337ca31d8f2252896c"}, {file = "brotli-1.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8565e3cdc1808b1a34714b553b262c5de5fbda202285782173ec137fd13709f"}, {file = "brotli-1.2.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:26e8d3ecb0ee458a9804f47f21b74845cc823fd1bb19f02272be70774f56e2a6"}, {file = "brotli-1.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67a91c5187e1eec76a61625c77a6c8c785650f5b576ca732bd33ef58b0dff49c"}, {file = "brotli-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ecdb3b6dc36e6d6e14d3a1bdc6c1057c8cbf80db04031d566eb6080ce283a48"}, {file = "brotli-1.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3e1b35d56856f3ed326b140d3c6d9db91740f22e14b06e840fe4bb1923439a18"}, {file = "brotli-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54a50a9dad16b32136b2241ddea9e4df159b41247b2ce6aac0b3276a66a8f1e5"}, {file = "brotli-1.2.0-cp313-cp313-win32.whl", hash = "sha256:1b1d6a4efedd53671c793be6dd760fcf2107da3a52331ad9ea429edf0902f27a"}, {file = "brotli-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:b63daa43d82f0cdabf98dee215b375b4058cce72871fd07934f179885aad16e8"}, {file = "brotli-1.2.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:6c12dad5cd04530323e723787ff762bac749a7b256a5bece32b2243dd5c27b21"}, {file = "brotli-1.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3219bd9e69868e57183316ee19c84e03e8f8b5a1d1f2667e1aa8c2f91cb061ac"}, {file = "brotli-1.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:963a08f3bebd8b75ac57661045402da15991468a621f014be54e50f53a58d19e"}, {file = "brotli-1.2.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9322b9f8656782414b37e6af884146869d46ab85158201d82bab9abbcb971dc7"}, {file = "brotli-1.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cf9cba6f5b78a2071ec6fb1e7bd39acf35071d90a81231d67e92d637776a6a63"}, {file = "brotli-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7547369c4392b47d30a3467fe8c3330b4f2e0f7730e45e3103d7d636678a808b"}, {file = "brotli-1.2.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1530af5c3c275b8524f2e24841cbe2599d74462455e9bae5109e9ff42e9361"}, {file = "brotli-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d2d085ded05278d1c7f65560aae97b3160aeb2ea2c0b3e26204856beccb60888"}, {file = "brotli-1.2.0-cp314-cp314-win32.whl", hash = "sha256:832c115a020e463c2f67664560449a7bea26b0c1fdd690352addad6d0a08714d"}, {file = "brotli-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:e7c0af964e0b4e3412a0ebf341ea26ec767fa0b4cf81abb5e897c9338b5ad6a3"}, {file = "brotli-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:82676c2781ecf0ab23833796062786db04648b7aae8be139f6b8065e5e7b1518"}, {file = "brotli-1.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c16ab1ef7bb55651f5836e8e62db1f711d55b82ea08c3b8083ff037157171a69"}, {file = "brotli-1.2.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e85190da223337a6b7431d92c799fca3e2982abd44e7b8dec69938dcc81c8e9e"}, {file = "brotli-1.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d8c05b1dfb61af28ef37624385b0029df902ca896a639881f594060b30ffc9a7"}, {file = "brotli-1.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:465a0d012b3d3e4f1d6146ea019b5c11e3e87f03d1676da1cc3833462e672fb0"}, {file = "brotli-1.2.0-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:96fbe82a58cdb2f872fa5d87dedc8477a12993626c446de794ea025bbda625ea"}, {file = "brotli-1.2.0-cp36-cp36m-musllinux_1_2_i686.whl", hash = "sha256:1b71754d5b6eda54d16fbbed7fce2d8bc6c052a1b91a35c320247946ee103502"}, {file = "brotli-1.2.0-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:66c02c187ad250513c2f4fce973ef402d22f80e0adce734ee4e4efd657b6cb64"}, {file = "brotli-1.2.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:ba76177fd318ab7b3b9bf6522be5e84c2ae798754b6cc028665490f6e66b5533"}, {file = "brotli-1.2.0-cp36-cp36m-win32.whl", hash = "sha256:c1702888c9f3383cc2f09eb3e88b8babf5965a54afb79649458ec7c3c7a63e96"}, {file = "brotli-1.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f8d635cafbbb0c61327f942df2e3f474dde1cff16c3cd0580564774eaba1ee13"}, {file = "brotli-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e80a28f2b150774844c8b454dd288be90d76ba6109670fe33d7ff54d96eb5cb8"}, {file = "brotli-1.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b1b799f45da91292ffaa21a473ab3a3054fa78560e8ff67082a185274431c8"}, {file = "brotli-1.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29b7e6716ee4ea0c59e3b241f682204105f7da084d6254ec61886508efeb43bc"}, {file = "brotli-1.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:640fe199048f24c474ec6f3eae67c48d286de12911110437a36a87d7c89573a6"}, {file = "brotli-1.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:92edab1e2fd6cd5ca605f57d4545b6599ced5dea0fd90b2bcdf8b247a12bd190"}, {file = "brotli-1.2.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7274942e69b17f9cef76691bcf38f2b2d4c8a5f5dba6ec10958363dcb3308a0a"}, {file = "brotli-1.2.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:a56ef534b66a749759ebd091c19c03ef81eb8cd96f0d1d16b59127eaf1b97a12"}, {file = "brotli-1.2.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:5732eff8973dd995549a18ecbd8acd692ac611c5c0bb3f59fa3541ae27b33be3"}, {file = "brotli-1.2.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:598e88c736f63a0efec8363f9eb34e5b5536b7b6b1821e401afcb501d881f59a"}, {file = "brotli-1.2.0-cp37-cp37m-win32.whl", hash = "sha256:7ad8cec81f34edf44a1c6a7edf28e7b7806dfb8886e371d95dcf789ccd4e4982"}, {file = "brotli-1.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:865cedc7c7c303df5fad14a57bc5db1d4f4f9b2b4d0a7523ddd206f00c121a16"}, {file = "brotli-1.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ac27a70bda257ae3f380ec8310b0a06680236bea547756c277b5dfe55a2452a8"}, {file = "brotli-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e813da3d2d865e9793ef681d3a6b66fa4b7c19244a45b817d0cceda67e615990"}, {file = "brotli-1.2.0-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9fe11467c42c133f38d42289d0861b6b4f9da31e8087ca2c0d7ebb4543625526"}, {file = "brotli-1.2.0-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c0d6770111d1879881432f81c369de5cde6e9467be7c682a983747ec800544e2"}, {file = "brotli-1.2.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:eda5a6d042c698e28bda2507a89b16555b9aa954ef1d750e1c20473481aff675"}, {file = "brotli-1.2.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3173e1e57cebb6d1de186e46b5680afbd82fd4301d7b2465beebe83ed317066d"}, {file = "brotli-1.2.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:71a66c1c9be66595d628467401d5976158c97888c2c9379c034e1e2312c5b4f5"}, {file = "brotli-1.2.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:1e68cdf321ad05797ee41d1d09169e09d40fdf51a725bb148bff892ce04583d7"}, {file = "brotli-1.2.0-cp38-cp38-win32.whl", hash = "sha256:f16dace5e4d3596eaeb8af334b4d2c820d34b8278da633ce4a00020b2eac981c"}, {file = "brotli-1.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:14ef29fc5f310d34fc7696426071067462c9292ed98b5ff5a27ac70a200e5470"}, {file = "brotli-1.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8d4f47f284bdd28629481c97b5f29ad67544fa258d9091a6ed1fda47c7347cd1"}, {file = "brotli-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2881416badd2a88a7a14d981c103a52a23a276a553a8aacc1346c2ff47c8dc17"}, {file = "brotli-1.2.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d39b54b968f4b49b5e845758e202b1035f948b0561ff5e6385e855c96625971"}, {file = "brotli-1.2.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:95db242754c21a88a79e01504912e537808504465974ebb92931cfca2510469e"}, {file = "brotli-1.2.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bba6e7e6cfe1e6cb6eb0b7c2736a6059461de1fa2c0ad26cf845de6c078d16c8"}, {file = "brotli-1.2.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:88ef7d55b7bcf3331572634c3fd0ed327d237ceb9be6066810d39020a3ebac7a"}, {file = "brotli-1.2.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:7fa18d65a213abcfbb2f6cafbb4c58863a8bd6f2103d65203c520ac117d1944b"}, {file = "brotli-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:09ac247501d1909e9ee47d309be760c89c990defbb2e0240845c892ea5ff0de4"}, {file = "brotli-1.2.0-cp39-cp39-win32.whl", hash = "sha256:c25332657dee6052ca470626f18349fc1fe8855a56218e19bd7a8c6ad4952c49"}, {file = "brotli-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:1ce223652fd4ed3eb2b7f78fbea31c52314baecfac68db44037bb4167062a937"}, {file = "brotli-1.2.0.tar.gz", hash = "sha256:e310f77e41941c13340a95976fe66a8a95b01e783d430eeaf7a2f87e0a57dd0a"}, ] [[package]] name = "brotlicffi" version = "1.2.0.1" description = "Python CFFI bindings to the Brotli library" optional = false python-versions = ">=3.8" groups = ["main"] markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "brotlicffi-1.2.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c85e65913cf2b79c57a3fdd05b98d9731d9255dc0cb696b09376cc091b9cddd"}, {file = "brotlicffi-1.2.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:535f2d05d0273408abc13fc0eebb467afac17b0ad85090c8913690d40207dac5"}, {file = "brotlicffi-1.2.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce17eb798ca59ecec67a9bb3fd7a4304e120d1cd02953ce522d959b9a84d58ac"}, {file = "brotlicffi-1.2.0.1-cp314-cp314t-win32.whl", hash = "sha256:3c9544f83cb715d95d7eab3af4adbbef8b2093ad6382288a83b3a25feb1a57ec"}, {file = "brotlicffi-1.2.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:625f8115d32ae9c0740d01ea51518437c3fbaa3e78d41cb18459f6f7ac326000"}, {file = "brotlicffi-1.2.0.1-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:91ba5f0ccc040f6ff8f7efaf839f797723d03ed46acb8ae9408f99ffd2572cf4"}, {file = "brotlicffi-1.2.0.1-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be9a670c6811af30a4bd42d7116dc5895d3b41beaa8ed8a89050447a0181f5ce"}, {file = "brotlicffi-1.2.0.1-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3314a3476f59e5443f9f72a6dff16edc0c3463c9b318feaef04ae3e4683f5a"}, {file = "brotlicffi-1.2.0.1-cp38-abi3-win32.whl", hash = "sha256:82ea52e2b5d3145b6c406ebd3efb0d55db718b7ad996bd70c62cec0439de1187"}, {file = "brotlicffi-1.2.0.1-cp38-abi3-win_amd64.whl", hash = "sha256:da2e82a08e7778b8bc539d27ca03cdd684113e81394bfaaad8d0dfc6a17ddede"}, {file = "brotlicffi-1.2.0.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e015af99584c6db1490a69a210c765953e473e63adc2d891ac3062a737c9e851"}, {file = "brotlicffi-1.2.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:37cb587d32bf7168e2218c455e22e409ad1f3157c6c71945879a311f3e6b6abf"}, {file = "brotlicffi-1.2.0.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d6ba65dd528892b4d9960beba2ae011a753620bcfc66cf6fa3cee18d7b0baa4"}, {file = "brotlicffi-1.2.0.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f2a5575653b0672638ba039b82fda56854934d7a6a24d4b8b5033f73ab43cbc1"}, {file = "brotlicffi-1.2.0.1.tar.gz", hash = "sha256:c20d5c596278307ad06414a6d95a892377ea274a5c6b790c2548c009385d621c"}, ] [package.dependencies] cffi = [ {version = ">=1.0.0", markers = "python_version < \"3.13\""}, {version = ">=1.17.0", markers = "python_version >= \"3.13\""}, ] [[package]] name = "certifi" version = "2026.5.20" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" groups = ["main"] files = [ {file = "certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897"}, {file = "certifi-2026.5.20.tar.gz", hash = "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d"}, ] [[package]] name = "cffi" version = "2.0.0" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.9" groups = ["main"] files = [ {file = "cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44"}, {file = "cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49"}, {file = "cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453"}, {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495"}, {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5"}, {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb"}, {file = "cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a"}, {file = "cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739"}, {file = "cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe"}, {file = "cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c"}, {file = "cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26"}, {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9"}, {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414"}, {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743"}, {file = "cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5"}, {file = "cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5"}, {file = "cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d"}, {file = "cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d"}, {file = "cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c"}, {file = "cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba"}, {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94"}, {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187"}, {file = "cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18"}, {file = "cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5"}, {file = "cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6"}, {file = "cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb"}, {file = "cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca"}, {file = "cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26"}, {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c"}, {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b"}, {file = "cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27"}, {file = "cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75"}, {file = "cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91"}, {file = "cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5"}, {file = "cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775"}, {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205"}, {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1"}, {file = "cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f"}, {file = "cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25"}, {file = "cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad"}, {file = "cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9"}, {file = "cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592"}, {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512"}, {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4"}, {file = "cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e"}, {file = "cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6"}, {file = "cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9"}, {file = "cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf"}, {file = "cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7"}, {file = "cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63"}, {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2"}, {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65"}, {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322"}, {file = "cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a"}, {file = "cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9"}, {file = "cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529"}, ] [package.dependencies] pycparser = {version = "*", markers = "implementation_name != \"PyPy\""} [[package]] name = "charset-normalizer" version = "3.4.7" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["main"] files = [ {file = "charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a"}, {file = "charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374"}, {file = "charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943"}, {file = "charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008"}, {file = "charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d"}, {file = "charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad"}, {file = "charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00"}, {file = "charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1"}, {file = "charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49"}, {file = "charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c"}, {file = "charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6"}, {file = "charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d"}, {file = "charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a"}, {file = "charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e"}, {file = "charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110"}, {file = "charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b"}, {file = "charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72"}, {file = "charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10"}, {file = "charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f"}, {file = "charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d"}, {file = "charset_normalizer-3.4.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e5f4d355f0a2b1a31bc3edec6795b46324349c9cb25eed068049e4f472fb4259"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:16d971e29578a5e97d7117866d15889a4a07befe0e87e703ed63cd90cb348c01"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dca4bbc466a95ba9c0234ef56d7dd9509f63da22274589ebd4ed7f1f4d4c54e3"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e80c8378d8f3d83cd3164da1ad2df9e37a666cdde7b1cb2298ed0b558064be30"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36836d6ff945a00b88ba1e4572d721e60b5b8c98c155d465f56ad19d68f23734"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux_2_31_armv7l.whl", hash = "sha256:bd9b23791fe793e4968dba0c447e12f78e425c59fc0e3b97f6450f4781f3ee60"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aef65cd602a6d0e0ff6f9930fcb1c8fec60dd2cfcb6facaf4bdb0e5873042db0"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:82b271f5137d07749f7bf32f70b17ab6eaabedd297e75dce75081a24f76eb545"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:1efde3cae86c8c273f1eb3b287be7d8499420cf2fe7585c41d370d3e790054a5"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:c593052c465475e64bbfe5dbd81680f64a67fdc752c56d7a0ae205dc8aeefe0f"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:af21eb4409a119e365397b2adbaca4c9ccab56543a65d5dbd9f920d6ac29f686"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:84c018e49c3bf790f9c2771c45e9313a08c2c2a6342b162cd650258b57817706"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dd915403e231e6b1809fe9b6d9fc55cf8fb5e02765ac625d9cd623342a7905d7"}, {file = "charset_normalizer-3.4.7-cp38-cp38-win32.whl", hash = "sha256:320ade88cfb846b8cd6b4ddf5ee9e80ee0c1f52401f2456b84ae1ae6a1a5f207"}, {file = "charset_normalizer-3.4.7-cp38-cp38-win_amd64.whl", hash = "sha256:1dc8b0ea451d6e69735094606991f32867807881400f808a106ee1d963c46a83"}, {file = "charset_normalizer-3.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:177a0ba5f0211d488e295aaf82707237e331c24788d8d76c96c5a41594723217"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e0d51f618228538a3e8f46bd246f87a6cd030565e015803691603f55e12afb5"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:14265bfe1f09498b9d8ec91e9ec9fa52775edf90fcbde092b25f4a33d444fea9"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:87fad7d9ba98c86bcb41b2dc8dbb326619be2562af1f8ff50776a39e55721c5a"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f22dec1690b584cea26fade98b2435c132c1b5f68e39f5a0b7627cd7ae31f1dc"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux_2_31_armv7l.whl", hash = "sha256:d61f00a0869d77422d9b2aba989e2d24afa6ffd552af442e0e58de4f35ea6d00"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6370e8686f662e6a3941ee48ed4742317cafbe5707e36406e9df792cdb535776"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a6c5863edfbe888d9eff9c8b8087354e27618d9da76425c119293f11712a6319"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:ed065083d0898c9d5b4bbec7b026fd755ff7454e6e8b73a67f8c744b13986e24"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2cd4a60d0e2fb04537162c62bbbb4182f53541fe0ede35cdf270a1c1e723cc42"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:813c0e0132266c08eb87469a642cb30aaff57c5f426255419572aaeceeaa7bf4"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:07d9e39b01743c3717745f4c530a6349eadbfa043c7577eef86c502c15df2c67"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c0f081d69a6e58272819b70288d3221a6ee64b98df852631c80f293514d3b274"}, {file = "charset_normalizer-3.4.7-cp39-cp39-win32.whl", hash = "sha256:8751d2787c9131302398b11e6c8068053dcb55d5a8964e114b6e196cf16cb366"}, {file = "charset_normalizer-3.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:12a6fff75f6bc66711b73a2f0addfc4c8c15a20e805146a02d147a318962c444"}, {file = "charset_normalizer-3.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:bb8cc7534f51d9a017b93e3e85b260924f909601c3df002bcdb58ddb4dc41a5c"}, {file = "charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d"}, {file = "charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5"}, ] [[package]] name = "click" version = "8.4.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" groups = ["main"] files = [ {file = "click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2"}, {file = "click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] [[package]] name = "cython" version = "3.2.5" description = "The Cython compiler for writing C extensions in the Python language." optional = false python-versions = ">=3.8" groups = ["main"] files = [ {file = "cython-3.2.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:220e8b160b2a4ddc362ad8a8c2ab885aa7156099702cdc48f6518a5de921b553"}, {file = "cython-3.2.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f4e722ceab6d795b4682d693656218671c873d4aa74119c54a2b62de0e7c48ce"}, {file = "cython-3.2.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b4bfb00baef07106a1e5e7252ace18de91225322f7fa29970995aea7c380fa21"}, {file = "cython-3.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:45baf00cb8b222a2ca7e9c48add5dac3ceb6e65be4f591150a6b6767ce1f86b0"}, {file = "cython-3.2.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5887c24ebd19604b7a76d8ea57446cb562a590f7f2557e5954a69aae38b3195e"}, {file = "cython-3.2.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56c97c5e43782ec9d9e66c465e253d2ccde0c578c364c46445efe484965524f0"}, {file = "cython-3.2.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:75f5295dc1b32d084fec598f9507e6f264311d78c07da640bc9a05dc47f7ac2c"}, {file = "cython-3.2.5-cp311-cp311-win_amd64.whl", hash = "sha256:b8bc1325cf3e4394cc08a3c1ea7fa24f02f405eef0e8c156d5055f6f9a7a1565"}, {file = "cython-3.2.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eb38b89e5a8eb2508a1a0832063826b0703dfb02be84e4aa34b8818ce0ca50fe"}, {file = "cython-3.2.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c80e1e5cba5b4b9890364e9360939fc298c474f25754bb4bb861270d24bda6d6"}, {file = "cython-3.2.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e2c976ee96da4deff50506c7882ccebb4a932fc178ef27eb42bfde959839"}, {file = "cython-3.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:29243859d6824e2d33bae92fc83d591c3671b6d9ac1b757fa264b894ae906c2b"}, {file = "cython-3.2.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5d7a60835345a8bd29d3aa57070880cc3ce017ea0ade7b9f771ce4bf539b1f"}, {file = "cython-3.2.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9b564f67b01bffa2521f475794b49f2787709cec1f91d5935a38eba37f2b359"}, {file = "cython-3.2.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0a81220817ff954eddf4512a5b82089094a2f523eb1dc4ad555efd6f07b009b4"}, {file = "cython-3.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:3795237ab49753647e329181b140c424e8aa97543074f171f8d2c45e5014a06e"}, {file = "cython-3.2.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a636c8b7824f3cb587eb2fdde59d8f4a14d433565508081cc290198e37567910"}, {file = "cython-3.2.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69cd71b90d4e0f142fd15b2353982c3f9171fc5e613001f16bcb366ffb29004b"}, {file = "cython-3.2.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3864da4ca2ebe4660d8f672f2143b02840bf3045655222f6090486171c84298f"}, {file = "cython-3.2.5-cp314-cp314-win_amd64.whl", hash = "sha256:605c447188aecf2941709f53a2ce44862be256e54601c01b38ab710d83db8047"}, {file = "cython-3.2.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3a423468ee77c3c5b26494f57d9c52e9318991fb7142f4c49fb01b99373e8d6"}, {file = "cython-3.2.5-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cce98a9011ac6a2560b3587db22912bd0138267669ec567b0d57eddd2d741b8b"}, {file = "cython-3.2.5-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:561613ddd1ee83088eb126e80a5a7d73ee6eb82e0b1aea09afbe170287e5e27f"}, {file = "cython-3.2.5-cp38-cp38-win_amd64.whl", hash = "sha256:677bb60fd8f5949e26c0a7898983967dbbb65f7628481d8480956b85ca766554"}, {file = "cython-3.2.5-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:224149d18d980e6ea5001b70fc7ce096c1891d59035dfa9cc5ede50f55804913"}, {file = "cython-3.2.5-cp39-abi3-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:992a50e90d01813333752f374a4405863113059ec67102ab8d6a431a171ee328"}, {file = "cython-3.2.5-cp39-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8d7b81e6a52a84a02993f01aa5873786ba1dd593c892d93d5fe9866da0bad297"}, {file = "cython-3.2.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:34d21aeb08477c9173e8be7a566b19e880a7c8109ec6bb47a4b20cb680141114"}, {file = "cython-3.2.5-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:c4c79e697db55f082a2d3ba97702e71881d5bb1f56f0a80fa338e69101e4c59b"}, {file = "cython-3.2.5-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:39acb30eba78ba6d995d5cf3d97d57d450663d93aac6f8b93753d2b89d768c60"}, {file = "cython-3.2.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:382122de8d6b6024fc374fabc3a2b14ba5860ed981c25055ed14fe44278b9dc7"}, {file = "cython-3.2.5-cp39-abi3-win32.whl", hash = "sha256:0bc29c7f870b09efdb1f583fbec9592b33af81a7ce273b89c8f5163d7572d5c1"}, {file = "cython-3.2.5-cp39-abi3-win_arm64.whl", hash = "sha256:85b2944c3eddfc230f9082720195a2e9f869908e5a8b3185be1be832755ee7fc"}, {file = "cython-3.2.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:91cb5b9ff599612737b3fd0dddcd401acdf904b78c2caf8cd1049501d0a53f2d"}, {file = "cython-3.2.5-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:268aecadcabcdad9f773b8a5694746e0b9ee7894b56b84e2e3a2ccb6c929ea79"}, {file = "cython-3.2.5-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05c22cd606ac8d14a9cf17e48668bb37734c803978bf4d793c7f11ef54c4451f"}, {file = "cython-3.2.5-cp39-cp39-win_amd64.whl", hash = "sha256:3e5e519bad217a0b96fc281666720ed7d339da618acaa012bea712980b8fe6c9"}, {file = "cython-3.2.5-py3-none-any.whl", hash = "sha256:dc1c8cebb7df5bce37f5f8dc1e5bf04313272a5973d50a55c0ec76c83812911b"}, {file = "cython-3.2.5.tar.gz", hash = "sha256:3dd42e4cf36ad15f265bdfec2337cc00c688c8eb6d374ffd13bb19437c27bba1"}, ] [[package]] name = "dnspython" version = "2.8.0" description = "DNS toolkit" optional = false python-versions = ">=3.10" groups = ["main"] files = [ {file = "dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af"}, {file = "dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f"}, ] [package.extras] dev = ["black (>=25.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "hypercorn (>=0.17.0)", "mypy (>=1.17)", "pylint (>=3)", "pytest (>=8.4)", "pytest-cov (>=6.2.0)", "quart-trio (>=0.12.0)", "sphinx (>=8.2.0)", "sphinx-rtd-theme (>=3.0.0)", "twine (>=6.1.0)", "wheel (>=0.45.0)"] dnssec = ["cryptography (>=45)"] doh = ["h2 (>=4.2.0)", "httpcore (>=1.0.0)", "httpx (>=0.28.0)"] doq = ["aioquic (>=1.2.0)"] idna = ["idna (>=3.10)"] trio = ["trio (>=0.30)"] wmi = ["wmi (>=1.5.1) ; platform_system == \"Windows\""] [[package]] name = "eventlet" version = "0.41.0" description = "Highly concurrent networking library" optional = false python-versions = ">=3.10" groups = ["main"] files = [ {file = "eventlet-0.41.0-py3-none-any.whl", hash = "sha256:bc22396093cb4119ff7007776be6a5348a613ccd42eeb0f9519853a6efcbcabe"}, {file = "eventlet-0.41.0.tar.gz", hash = "sha256:35df85f0ccd3e73effb6fd9f1ceae46b500b966c7da1817289c323a307bd397b"}, ] [package.dependencies] dnspython = ">=1.15.0" greenlet = ">=1.0" [package.extras] dev = ["black", "build", "commitizen", "isort", "pip-tools", "pre-commit", "twine"] [[package]] name = "exceptiongroup" version = "1.3.1" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["dev"] markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598"}, {file = "exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219"}, ] [package.dependencies] typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} [package.extras] test = ["pytest (>=6)"] [[package]] name = "flask" version = "3.1.3" description = "A simple framework for building complex web applications." optional = false python-versions = ">=3.9" groups = ["main"] files = [ {file = "flask-3.1.3-py3-none-any.whl", hash = "sha256:f4bcbefc124291925f1a26446da31a5178f9483862233b23c0c96a20701f670c"}, {file = "flask-3.1.3.tar.gz", hash = "sha256:0ef0e52b8a9cd932855379197dd8f94047b359ca0a78695144304cb45f87c9eb"}, ] [package.dependencies] blinker = ">=1.9.0" click = ">=8.1.3" itsdangerous = ">=2.2.0" jinja2 = ">=3.1.2" markupsafe = ">=2.1.1" werkzeug = ">=3.1.0" [package.extras] async = ["asgiref (>=3.2)"] dotenv = ["python-dotenv"] [[package]] name = "flask-compress" version = "1.24" description = "Compress responses in your Flask app with gzip, deflate, brotli or zstandard." optional = false python-versions = ">=3.9" groups = ["main"] files = [ {file = "flask_compress-1.24-py3-none-any.whl", hash = "sha256:1e63668eb6e3242bd4f6ad98825a924e3984409be90c125477893d586007d00c"}, {file = "flask_compress-1.24.tar.gz", hash = "sha256:14097cefe59ecb3e466d52a6aeb62f34f125a9f7dadf1f33a53e430ce4a50f31"}, ] [package.dependencies] "backports.zstd" = {version = "*", markers = "python_version < \"3.14\""} brotli = {version = "*", markers = "platform_python_implementation != \"PyPy\""} brotlicffi = {version = "*", markers = "platform_python_implementation == \"PyPy\""} flask = "*" [[package]] name = "flask-socketio" version = "5.6.1" description = "Socket.IO integration for Flask applications" optional = false python-versions = ">=3.8" groups = ["main"] files = [ {file = "flask_socketio-5.6.1-py3-none-any.whl", hash = "sha256:51a3f71b28b4476c650829607e3a993e076034db6c3cc31f718f0a4b45939d42"}, {file = "flask_socketio-5.6.1.tar.gz", hash = "sha256:fe5bd995c3ed4da9a98f335d0d830fa1a19d84a64789f6265642a671fdacaeac"}, ] [package.dependencies] blinker = "*" click = "*" flask = ">=2.1.0" jinja2 = "*" python-socketio = ">=5.12.0" werkzeug = "*" [package.extras] dev = ["flask-login", "flask-session", "pytest", "pytest-cov", "redis", "tox"] docs = ["furo", "sphinx"] [[package]] name = "gevent" version = "26.5.0" description = "Coroutine-based network library" optional = false python-versions = ">=3.9" groups = ["main"] files = [ {file = "gevent-26.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:2ba673dcbf7747513b58fa64ca7e9d6a828bc5c604d1552d23db89006d7911df"}, {file = "gevent-26.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:271b1474d81bb33036631adb16a35e5a1ee9dc414b05c999d6b01dc839a89975"}, {file = "gevent-26.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:cd3dc60581687e2618286108f8e2f820d8446be4b34131065011c066e911d39c"}, {file = "gevent-26.5.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:dc7fa28b2d627f8e87595f39043b6dec71e8e7fb97e685e5506c47cf3ff8cb2e"}, {file = "gevent-26.5.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:68c5fc21cef80268cdff88a4ae6c025fabb019b071f6f8ee4d20a7bccbddb873"}, {file = "gevent-26.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d325502eb0695708ef8c899f605573ed6847f3961f8159627dba267fbf3ce457"}, {file = "gevent-26.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a11daf3a588b932c8bf965fb18444c69aff48badec88435e988cf8d67137075a"}, {file = "gevent-26.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1101b5ef82a3fb178550cfd80f32293dc8dd2f3d0828292223ebba29d6f76e33"}, {file = "gevent-26.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:5233109ad4f3af16393ba9888f238919a05ce15ce68d6831ac8a0da8dfb750ae"}, {file = "gevent-26.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:3be804565168ffacebeb21af9f1cd689831a89f0f12fc0c3f423c730c3c9eb31"}, {file = "gevent-26.5.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:e80ad2a8a1e8bdaa5605e3bf4929e0cebf9ea7b8237c83362f7257698bb14280"}, {file = "gevent-26.5.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fe42c037253580a3386fce275f8a2a845e540f5a729916934a732f13d42e72cc"}, {file = "gevent-26.5.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:9f463c7d6f69d13b6fe8e3b832a6175a6e95328a940f38495d25496d1ae8ad88"}, {file = "gevent-26.5.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:96d5e96b1b14a4c1023dcfcc114533217f13febc3b6169254f23fc18d19fee29"}, {file = "gevent-26.5.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:bccff69c462e3650a0fd1d4e9cfc8b6effe15f3e9b1cad20a7bb5ce14b057efd"}, {file = "gevent-26.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f519139354d5ca7625df9ddb1b2ffada885c14abc5b4dbae3682e967ddf79669"}, {file = "gevent-26.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0bf57df54f1c66273bf3601c2a1e41b12138fe848933718369663bc54f177ca2"}, {file = "gevent-26.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e49ce0de007dfd7412edbc2b5d41cce33b049bb1b7086f50be5a09e601bde603"}, {file = "gevent-26.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:5c5ff29495a2eed2a244de8150f21893d6c1b15d8b4b5719ab4bbfa06db1e28f"}, {file = "gevent-26.5.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:9b4d3f34c913d1a6bec6d030365a517f3b527a9773b12e58cf56c3339bbe96e6"}, {file = "gevent-26.5.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:1d8da4e799431feeb4c9e441ac7431f0baabb9106976790d884289d08ac08359"}, {file = "gevent-26.5.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:51becdb4c30a8f45c1c028ad7a97bf5a1ed141f74b159a31aa9cc6aa1e6263a6"}, {file = "gevent-26.5.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:c42bbcd3d453b08ad8915fd3feaf3d44a3562cdf1c7b208f9837149711e16d9d"}, {file = "gevent-26.5.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bd3445e4fbeeb46690ed8efe94b8d1d46b14aa04af8866ae7a8da5997828d1c6"}, {file = "gevent-26.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b573d5b2826edc705f31f07da6889ad483a6a0d64944ebd8d32205f7c5bf46fb"}, {file = "gevent-26.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4d53b1b28f2082a151bded2850b53f6baed02f742d2a1584029e8bd42d457fb4"}, {file = "gevent-26.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:23569ce0c254eb821fc3dcfe250843dde8b3180b09bae9e222e41aa3fa4885b7"}, {file = "gevent-26.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:40cdcdb2e404b6c82b82a4576bdb33958f23fc2deb0d933e9e022b362001e647"}, {file = "gevent-26.5.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:75a0050e4b87f08ddee7e56f59e6014cd7fcdc3153046c09a847940515d12c85"}, {file = "gevent-26.5.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:fd1a0b83a04e19378d9466ae0ee2b5937cf1d7fbfdcb916b2aea82179a208574"}, {file = "gevent-26.5.0-cp314-cp314-manylinux_2_28_ppc64le.whl", hash = "sha256:4c964c15076e76391d523ec24202f579a2535f7e301a40efb1656ae046d3eb69"}, {file = "gevent-26.5.0-cp314-cp314-manylinux_2_28_s390x.whl", hash = "sha256:45d5438d1c84da5df7e832434627624709543630977332bb4e2d05ecca362cc9"}, {file = "gevent-26.5.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:354f35924113abc954819216c2a6ee16751958c615681e0490946e31b437bd2f"}, {file = "gevent-26.5.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a47cd2d32f6404212d374ad8014a3491d7477dcf0cc09c5a2308ad6d325fd663"}, {file = "gevent-26.5.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:032157cebdedb84f2f52cdd980f2f5f2623eed6a8f083aadf44b44c47f628642"}, {file = "gevent-26.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:9c414935ba5fc88359110968851d3616f119082c937390d00a1c0f4f59be814f"}, {file = "gevent-26.5.0-cp314-cp314-win_arm64.whl", hash = "sha256:2a0f5993a04b95a35b3a118b1a58ba272833f9b547b774001dea29f90620882f"}, {file = "gevent-26.5.0-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:2e117df896a2660c9ebd4e2b5afc02dfd6e2ddf9b495e787e67c72d105432b09"}, {file = "gevent-26.5.0-cp315-cp315-manylinux_2_28_aarch64.whl", hash = "sha256:af5ffe9c11ffb8a39b6bef2e8b722aa2043ae4980977915c6aa8c68b4bc26e46"}, {file = "gevent-26.5.0-cp315-cp315-manylinux_2_28_ppc64le.whl", hash = "sha256:7da34aef7e87c43dd3662e5785e79ed505c01399a7cb42876d2d8925969fd75f"}, {file = "gevent-26.5.0-cp315-cp315-manylinux_2_28_s390x.whl", hash = "sha256:1c6293a7046bcc6f3d8972a74b19cd7a4cfd02d3881edf0fcf827aa514bd247b"}, {file = "gevent-26.5.0-cp315-cp315-manylinux_2_28_x86_64.whl", hash = "sha256:d3bde0f140a275b2fa88e4b6516bda85551930e10bc2fd95e18c1b7d11cb780c"}, {file = "gevent-26.5.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:e29fb4b17d9958ec8cb7f6339a111b29bc23f2c2efbef86189d1248bb4862d17"}, {file = "gevent-26.5.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:b2239df2f7570efa03736678f3f053bb1bdd22a8a16cd28a2feb7d32ea5f533f"}, {file = "gevent-26.5.0-cp315-cp315-win_amd64.whl", hash = "sha256:aae214952fd38d27a42dc416bb70193962ec932384b63445d29bbb5817a1c042"}, {file = "gevent-26.5.0-cp315-cp315-win_arm64.whl", hash = "sha256:f7067564f139e33bf26a31ee3b13d168d76eb99a44b85ced626652b158baa80c"}, {file = "gevent-26.5.0.tar.gz", hash = "sha256:1655eb04c1e20d71b2aa4a3c7528162dd58ff6cc46a037af1f01f534c80fefba"}, ] [package.dependencies] cffi = {version = ">=1.17.1", markers = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\""} greenlet = {version = ">=3.2.2", markers = "platform_python_implementation == \"CPython\""} "zope.event" = "*" "zope.interface" = "*" [package.extras] dnspython = ["dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\""] docs = ["furo", "repoze.sphinx.autointerface", "sphinx", "sphinxcontrib-programoutput", "zope.schema"] monitor = ["psutil (>=6.0.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\""] recommended = ["cffi (>=1.17.1) ; platform_python_implementation == \"CPython\"", "dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\"", "psutil (>=6.0.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\""] test = ["cffi (>=1.17.1) ; platform_python_implementation == \"CPython\"", "coverage (>=5.0,<7.13) ; sys_platform != \"win32\"", "dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\"", "objgraph", "psutil (>=6.0.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\"", "requests"] [[package]] name = "gevent-websocket" version = "0.10.1" description = "Websocket handler for the gevent pywsgi server, a Python network library" optional = false python-versions = "*" groups = ["main"] files = [ {file = "gevent-websocket-0.10.1.tar.gz", hash = "sha256:7eaef32968290c9121f7c35b973e2cc302ffb076d018c9068d2f5ca8b2d85fb0"}, {file = "gevent_websocket-0.10.1-py3-none-any.whl", hash = "sha256:17b67d91282f8f4c973eba0551183fc84f56f1c90c8f6b6b30256f31f66f5242"}, ] [package.dependencies] gevent = "*" [[package]] name = "greenlet" version = "3.5.1" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.10" groups = ["main"] files = [ {file = "greenlet-3.5.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:7eacb17a9d41538a2bc4912eba5ef13823c83cb69e4d141d0813debe7163187f"}, {file = "greenlet-3.5.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e5cc9606aa5f4e0bde0d3bd502b44f743864c3ffa5cfa1011b1e30f5aa02366f"}, {file = "greenlet-3.5.1-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c3d35f87c7253b715d13d679e0783d845910144f282cb939fe1ba4ac8616269c"}, {file = "greenlet-3.5.1-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:00929c98ec525fd9bf075875d8c5f6a983a90906cdf78a66e6de2d8e466c2a19"}, {file = "greenlet-3.5.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:540dae7b956209af4d70a3be35927b4055f617763771e5e84a5255bea934d2f5"}, {file = "greenlet-3.5.1-cp310-cp310-manylinux_2_39_riscv64.whl", hash = "sha256:001775efe7b8e758861294c7a27c28af87f3f3f1c20468a2bc618c45b346c061"}, {file = "greenlet-3.5.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed8cdb691169715a9a492844a83246f090182247d1a5031dc78a403f68ba1e97"}, {file = "greenlet-3.5.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d59e840387076a51016777a9328b3f2c427c6f9208a6e958bad251be50a648d"}, {file = "greenlet-3.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:b9152fca4a6466e114aaec745ae61cba739903a109754a9d4e1262f01e9259b1"}, {file = "greenlet-3.5.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:73f78f9b9f0a5c06e5c946ba1e8e36f5114923b6be109ee618c54f079c3ea14f"}, {file = "greenlet-3.5.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a0cbed8bb44e23c5b199f888f4e4ce096b45ad9f25ff74a7ad0213875e936bb2"}, {file = "greenlet-3.5.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a203a8bd0acb0701653d3bbb26e404854a68674139ed5cbb778830f42b09bb33"}, {file = "greenlet-3.5.1-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ebeb75c81211f5c702576cf81f315e77e23cfdb2c7c6fcb9dd143e6de35c360"}, {file = "greenlet-3.5.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a271fcd66c74615cda6a964fda3f304267a12e50a084472218a39bb0376f563"}, {file = "greenlet-3.5.1-cp311-cp311-manylinux_2_39_riscv64.whl", hash = "sha256:017a544f0385d441e88714160d089d6900ef46c9eff9d99b6715a5ef2d127747"}, {file = "greenlet-3.5.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ded7b068c7c31c1a8657d4fd42d886b3e051ae29f88b80c5ff9d502257b0f071"}, {file = "greenlet-3.5.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0932b81d72f552ded9d810d00021b64d89f2195a91ce115b893f943b7a4ab3c"}, {file = "greenlet-3.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:88e300d136eac057b2397aa1cfd7328b4c87c7eb66a09c7bc6a1292234db474e"}, {file = "greenlet-3.5.1-cp311-cp311-win_arm64.whl", hash = "sha256:cc6ab7e555c8a112ad3a76e368e86e12a2754bcae1652a5602e133ec7b635523"}, {file = "greenlet-3.5.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:fa4f98af3a528f0c3fd592a26df7f376f93329c8f4d987f6bb979057af8bf5e2"}, {file = "greenlet-3.5.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffea73584b216150eab159b6d12348fb253e68757974de1e2c40d8a318ac89ed"}, {file = "greenlet-3.5.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1072b4f9edcc1e192d9283a66a3e68d6b84c561de33a83d7858beb9ba1effe10"}, {file = "greenlet-3.5.1-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:89101bfd5011e069be974903cb3a4e4523845e4ece2d62dcd8d358933c0ef249"}, {file = "greenlet-3.5.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:add5217d68b31130f0beca584d7fef4878327d2e31642b66618a14eef312b63b"}, {file = "greenlet-3.5.1-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:e6cd99ea59dd5d89f0c956606571d79bfe6f68c9eb7f4a4083a41a7f1587edee"}, {file = "greenlet-3.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a5ea42a752d47a145eae922b605cd1634665ac3d5ec1e72402d5048e8d60d207"}, {file = "greenlet-3.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5551170cf4f5ff5623e9af81323751979fee2c731e2287b61f73cd27257b823"}, {file = "greenlet-3.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c8bb982ad117d29478ef8f5533e97df21f1e2befd17a299257b0c96d1371c0b"}, {file = "greenlet-3.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:80eb4b04dadc4e67df3fae179a32c4706a3f495bc7f22fc8a81115d5f5512188"}, {file = "greenlet-3.5.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:51518ff74664078fc51bffcc6fc529b0df5ae58da192691cee765d45ce944a2b"}, {file = "greenlet-3.5.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ffdb3c0bb002c99cd8f298957e046c3dbf6006b5b7cdf11a4e19194624a0a0a"}, {file = "greenlet-3.5.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7715a5a2c3378ba602c3a440558261e13a820bb53a82693aacd7b7f6d964e283"}, {file = "greenlet-3.5.1-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d40a890035c0058cadbdc4af7569800fd28a0e527a0fdbb7b5f9418f176846ce"}, {file = "greenlet-3.5.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc71ff466927a201b08305acac451ebe1aedfcea002f62f1f2f2ac2ac1e6a135"}, {file = "greenlet-3.5.1-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:67821bb03e4e98664490edb787ff6af501194c29bbee0f5c1dfdcf1dc3d9d436"}, {file = "greenlet-3.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd443683db272ebaaca03af98c0b063ab30db70ea8a31a1559f35e3f7b744ccd"}, {file = "greenlet-3.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:089fff7a6ce8d9316d1f65ebc00273a56be258c1725b32b94de90a3a979557e1"}, {file = "greenlet-3.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:110a1ca7b49b014b097f6078272c3f4ed31af45b254de5228b79adba879f6af9"}, {file = "greenlet-3.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:f16ba1efc0715b680a18b8123d90dad887c6112ae3555b4b5c32c149540c6b4e"}, {file = "greenlet-3.5.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d8ab31c9de8651a2facdd5c5bb0011f2380dd1a7af78ce2adf4b56095294fc07"}, {file = "greenlet-3.5.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e300185139abc337ade480c327183adf42a875ac7181bfe66d7d4efea31fbea"}, {file = "greenlet-3.5.1-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7ffdb990dcaa0234cf9845aead5df2e3c3a8b6507d409274dd87e0d5ab05ffc2"}, {file = "greenlet-3.5.1-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c09df69dc1712d131332054a858a3e5cca400967fa3a672e2324fbb0971448c"}, {file = "greenlet-3.5.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f82b3597e9d83b63408affed0b48fd0f54935edac4302237b9a837be0dae33c"}, {file = "greenlet-3.5.1-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:a4764e0bfc6a4d114c865b32520805c16a990ef5f286a514413b05d5ecd6a23d"}, {file = "greenlet-3.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c0141e37414c10164e702b8fb1473304221ad98f71600850c6ef7ff4880feba0"}, {file = "greenlet-3.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:50ae25a67bea74ea41fb14b960bc532df73eb713417b2d61892dced82fe8d3bc"}, {file = "greenlet-3.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:8a17c42330e261299766b75ac1ea32caa437a9453c8f65d16a13140db378ecd3"}, {file = "greenlet-3.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:7b5f5fae05b8ac6d176a61b60c394a8cbdc2b5b91b81793066e68745cf165e54"}, {file = "greenlet-3.5.1-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:ea8da1e900d758d078810d4255d8c6aa572181896a31ec79d779eb79c3adc9ad"}, {file = "greenlet-3.5.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a19570c52a21420dcbc94e661994bc325c0b5b11304540fed514586da5dc8f2e"}, {file = "greenlet-3.5.1-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3d955c89b75eeca4723d7cc14135f393cd47c32e2a6cb4a8e4c6e760a26b0986"}, {file = "greenlet-3.5.1-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ea37d5a157eb9493820d3792ac4ece28619a394391d2b9f2f78057d396ff0f0f"}, {file = "greenlet-3.5.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2daaaebd1a5aa88c49045b6baf9310b3263796bd88db713edf37cf53e7bb4e"}, {file = "greenlet-3.5.1-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:8d8a23250ea3ec7b36de8fa4b541e9e2db3ee82915cc060ab0631609ad8b28de"}, {file = "greenlet-3.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3bfbd69cc349e43bf3a8ae1c85548ff0718efc887615c2db16c3833d7b0b072d"}, {file = "greenlet-3.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4378720dd888136c27215a0214d32a4d37c3852765d45bc37aad0623423cfd78"}, {file = "greenlet-3.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:45718441607f9325d948db98cbc691276059316d0358c188c246da4e1d4d23d2"}, {file = "greenlet-3.5.1-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:2baee5ca02031757ffe8cc3d69f0cc0aec7065ce362622da74f32d3bcab1c541"}, {file = "greenlet-3.5.1-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b1ec3274918a81d3ea778b9e75b56b72b33f300edb6cf7f3a7fe1dae56683de"}, {file = "greenlet-3.5.1-cp315-cp315-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:111e2390ffffc47d5840b01711dd7fac07d4c09283d0283e7f3264b14e284c64"}, {file = "greenlet-3.5.1-cp315-cp315-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:10a9a1c0bfbc93d41156ffcb90c75fbc05544054faf15dcc1fdf9765f8b607f0"}, {file = "greenlet-3.5.1-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e630136e905fe5ff43e86945ae41220b6d1470956a39220e708110ac48d01ea5"}, {file = "greenlet-3.5.1-cp315-cp315-manylinux_2_39_riscv64.whl", hash = "sha256:ef08c1567c78074b22d1a200183d52d04a14df447bf70bcbb6a3507a48e776fc"}, {file = "greenlet-3.5.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:975eac34b44a7077ca4d421348455b94f0f518246a7f14bc6d2fdcfe5b584368"}, {file = "greenlet-3.5.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:9ab3c3a0b2ae6198e67c898dad5215a49f9ae0d0081b3c3ec59f333e39eeca26"}, {file = "greenlet-3.5.1-cp315-cp315-win_amd64.whl", hash = "sha256:cbfc69be86e10dcfef5b1e6269d1d6926552aa89ee39e1de3353360c1b6989ab"}, {file = "greenlet-3.5.1-cp315-cp315-win_arm64.whl", hash = "sha256:92fd6d44ac5e5a887c8a5dc4a8ba0ba908527c31c12f78c6bc7dcfe8aab279f6"}, {file = "greenlet-3.5.1-cp315-cp315t-macosx_11_0_universal2.whl", hash = "sha256:a6fdf2433a5441ef9a95464f7c3e674775da1c8c1177fff311cee1acad4626ed"}, {file = "greenlet-3.5.1-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7546556f0d649f99f6a361098a55f761181bb2ea12ff150bb16d26092ad88244"}, {file = "greenlet-3.5.1-cp315-cp315t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d5ee3ea898009fa898f85f9982255d35278c477bebe185beca249cab42d4526c"}, {file = "greenlet-3.5.1-cp315-cp315t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a57b0d05a0448eed231d59c0ceb287dde984551e54cbc51ac2d4865712838e9c"}, {file = "greenlet-3.5.1-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5c81f74d204d3edd136ebfd50dce53acbb776995d721a0fe801626cfc93b8cd"}, {file = "greenlet-3.5.1-cp315-cp315t-manylinux_2_39_riscv64.whl", hash = "sha256:b0703c2cef53e01baec47f7a3868009913ad71ec678bbecb42a6f40895e4ce62"}, {file = "greenlet-3.5.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:2c18ef16bf6d4dd410e4dd52996888ea1497be26892fe5bbc73580aba4287b8e"}, {file = "greenlet-3.5.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:17d86354f0ae6b61bf9be5148d0dd34e06c3cb7c602c671f79f29ac3b150e659"}, {file = "greenlet-3.5.1-cp315-cp315t-win_amd64.whl", hash = "sha256:e7516cf6ae6b8a582c2770a0caed47b8a48373ed732c33d69a72913ae6ac923e"}, {file = "greenlet-3.5.1-cp315-cp315t-win_arm64.whl", hash = "sha256:5028648bf2253ec4745add746129d3904121fa7fe871a76bed23c5720573ce0a"}, {file = "greenlet-3.5.1.tar.gz", hash = "sha256:5a56aeb7d5d9cc4b3a735efb5095bd4b4f6f0e4f93e5ca876d0e2315137b7829"}, ] [package.extras] docs = ["Sphinx", "furo"] test = ["objgraph", "psutil", "setuptools"] [[package]] name = "h11" version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.8" groups = ["main"] files = [ {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "idna" version = "3.17" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.9" groups = ["main"] files = [ {file = "idna-3.17-py3-none-any.whl", hash = "sha256:466e48829084efe2548012b855df21540b96f2e20e51bd124c851536556a592c"}, {file = "idna-3.17.tar.gz", hash = "sha256:5eb0cb53bc467c12eadcf6de83163ad8527cec9416f44b9b61b19caedad2b87f"}, ] [package.extras] all = ["mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] [[package]] name = "iniconfig" version = "2.3.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.10" groups = ["dev"] files = [ {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, ] [[package]] name = "itsdangerous" version = "2.2.0" description = "Safely pass data to untrusted environments and back." optional = false python-versions = ">=3.8" groups = ["main"] files = [ {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, ] [[package]] name = "jinja2" version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" groups = ["main"] files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] [[package]] name = "markupsafe" version = "3.0.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" groups = ["main"] files = [ {file = "markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559"}, {file = "markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419"}, {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695"}, {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591"}, {file = "markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c"}, {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f"}, {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6"}, {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1"}, {file = "markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa"}, {file = "markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8"}, {file = "markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1"}, {file = "markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad"}, {file = "markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a"}, {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50"}, {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf"}, {file = "markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f"}, {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a"}, {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115"}, {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a"}, {file = "markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19"}, {file = "markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01"}, {file = "markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c"}, {file = "markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e"}, {file = "markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce"}, {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d"}, {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d"}, {file = "markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a"}, {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b"}, {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f"}, {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b"}, {file = "markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d"}, {file = "markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c"}, {file = "markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f"}, {file = "markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795"}, {file = "markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219"}, {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6"}, {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676"}, {file = "markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9"}, {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1"}, {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc"}, {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12"}, {file = "markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed"}, {file = "markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5"}, {file = "markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485"}, {file = "markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73"}, {file = "markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37"}, {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19"}, {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025"}, {file = "markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6"}, {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f"}, {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb"}, {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009"}, {file = "markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354"}, {file = "markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218"}, {file = "markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287"}, {file = "markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe"}, {file = "markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026"}, {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737"}, {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97"}, {file = "markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d"}, {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda"}, {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf"}, {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe"}, {file = "markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9"}, {file = "markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581"}, {file = "markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4"}, {file = "markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab"}, {file = "markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175"}, {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634"}, {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50"}, {file = "markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e"}, {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5"}, {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523"}, {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc"}, {file = "markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d"}, {file = "markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9"}, {file = "markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa"}, {file = "markupsafe-3.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26"}, {file = "markupsafe-3.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc"}, {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c"}, {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42"}, {file = "markupsafe-3.0.3-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b"}, {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758"}, {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2"}, {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d"}, {file = "markupsafe-3.0.3-cp39-cp39-win32.whl", hash = "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7"}, {file = "markupsafe-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e"}, {file = "markupsafe-3.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8"}, {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"}, ] [[package]] name = "packaging" version = "26.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ {file = "packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e"}, {file = "packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661"}, ] [[package]] name = "pkgconfig" version = "1.6.0" description = "Interface Python with pkg-config" optional = false python-versions = "<4.0.0,>=3.9.0" groups = ["main"] files = [ {file = "pkgconfig-1.6.0-py3-none-any.whl", hash = "sha256:98e71754855e9563838d952a160eb577edabb57782e49853edb5381927e6bea1"}, {file = "pkgconfig-1.6.0.tar.gz", hash = "sha256:4a5a6631ce937fafac457104a40d558785a658bbdca5c49b6295bc3fd651907f"}, ] [[package]] name = "pluggy" version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] dev = ["pre-commit", "tox"] testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "psutil" version = "7.2.2" description = "Cross-platform lib for process and system monitoring." optional = false python-versions = ">=3.6" groups = ["main"] files = [ {file = "psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b"}, {file = "psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea"}, {file = "psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63"}, {file = "psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312"}, {file = "psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b"}, {file = "psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9"}, {file = "psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00"}, {file = "psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9"}, {file = "psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a"}, {file = "psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf"}, {file = "psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1"}, {file = "psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841"}, {file = "psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486"}, {file = "psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979"}, {file = "psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9"}, {file = "psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e"}, {file = "psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8"}, {file = "psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc"}, {file = "psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988"}, {file = "psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee"}, {file = "psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372"}, ] [package.extras] dev = ["abi3audit", "black", "check-manifest", "colorama ; os_name == \"nt\"", "coverage", "packaging", "psleak", "pylint", "pyperf", "pypinfo", "pyreadline3 ; os_name == \"nt\"", "pytest", "pytest-cov", "pytest-instafail", "pytest-xdist", "pywin32 ; os_name == \"nt\" and implementation_name != \"pypy\"", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "validate-pyproject[all]", "virtualenv", "vulture", "wheel", "wheel ; os_name == \"nt\" and implementation_name != \"pypy\"", "wmi ; os_name == \"nt\" and implementation_name != \"pypy\""] test = ["psleak", "pytest", "pytest-instafail", "pytest-xdist", "pywin32 ; os_name == \"nt\" and implementation_name != \"pypy\"", "setuptools", "wheel ; os_name == \"nt\" and implementation_name != \"pypy\"", "wmi ; os_name == \"nt\" and implementation_name != \"pypy\""] [[package]] name = "pycparser" version = "3.0" description = "C parser in Python" optional = false python-versions = ">=3.10" groups = ["main"] markers = "implementation_name != \"PyPy\"" files = [ {file = "pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992"}, {file = "pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29"}, ] [[package]] name = "pygments" version = "2.20.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176"}, {file = "pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f"}, ] [package.extras] windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pynacl" version = "1.6.2" description = "Python binding to the Networking and Cryptography (NaCl) library" optional = false python-versions = ">=3.8" groups = ["main"] files = [ {file = "pynacl-1.6.2-cp314-cp314t-macosx_10_10_universal2.whl", hash = "sha256:622d7b07cc5c02c666795792931b50c91f3ce3c2649762efb1ef0d5684c81594"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d071c6a9a4c94d79eb665db4ce5cedc537faf74f2355e4d502591d850d3913c0"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe9847ca47d287af41e82be1dd5e23023d3c31a951da134121ab02e42ac218c9"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:04316d1fc625d860b6c162fff704eb8426b1a8bcd3abacea11142cbd99a6b574"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44081faff368d6c5553ccf55322ef2819abb40e25afaec7e740f159f74813634"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:a9f9932d8d2811ce1a8ffa79dcbdf3970e7355b5c8eb0c1a881a57e7f7d96e88"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:bc4a36b28dd72fb4845e5d8f9760610588a96d5a51f01d84d8c6ff9849968c14"}, {file = "pynacl-1.6.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3bffb6d0f6becacb6526f8f42adfb5efb26337056ee0831fb9a7044d1a964444"}, {file = "pynacl-1.6.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2fef529ef3ee487ad8113d287a593fa26f48ee3620d92ecc6f1d09ea38e0709b"}, {file = "pynacl-1.6.2-cp314-cp314t-win32.whl", hash = "sha256:a84bf1c20339d06dc0c85d9aea9637a24f718f375d861b2668b2f9f96fa51145"}, {file = "pynacl-1.6.2-cp314-cp314t-win_amd64.whl", hash = "sha256:320ef68a41c87547c91a8b58903c9caa641ab01e8512ce291085b5fe2fcb7590"}, {file = "pynacl-1.6.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d29bfe37e20e015a7d8b23cfc8bd6aa7909c92a1b8f41ee416bbb3e79ef182b2"}, {file = "pynacl-1.6.2-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:c949ea47e4206af7c8f604b8278093b674f7c79ed0d4719cc836902bf4517465"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8845c0631c0be43abdd865511c41eab235e0be69c81dc66a50911594198679b0"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:22de65bb9010a725b0dac248f353bb072969c94fa8d6b1f34b87d7953cf7bbe4"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:46065496ab748469cdd999246d17e301b2c24ae2fdf739132e580a0e94c94a87"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a66d6fb6ae7661c58995f9c6435bda2b1e68b54b598a6a10247bfcdadac996c"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:26bfcd00dcf2cf160f122186af731ae30ab120c18e8375684ec2670dccd28130"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c8a231e36ec2cab018c4ad4358c386e36eede0319a0c41fed24f840b1dac59f6"}, {file = "pynacl-1.6.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:68be3a09455743ff9505491220b64440ced8973fe930f270c8e07ccfa25b1f9e"}, {file = "pynacl-1.6.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8b097553b380236d51ed11356c953bf8ce36a29a3e596e934ecabe76c985a577"}, {file = "pynacl-1.6.2-cp38-abi3-win32.whl", hash = "sha256:5811c72b473b2f38f7e2a3dc4f8642e3a3e9b5e7317266e4ced1fba85cae41aa"}, {file = "pynacl-1.6.2-cp38-abi3-win_amd64.whl", hash = "sha256:62985f233210dee6548c223301b6c25440852e13d59a8b81490203c3227c5ba0"}, {file = "pynacl-1.6.2-cp38-abi3-win_arm64.whl", hash = "sha256:834a43af110f743a754448463e8fd61259cd4ab5bbedcf70f9dabad1d28a394c"}, {file = "pynacl-1.6.2.tar.gz", hash = "sha256:018494d6d696ae03c7e656e5e74cdfd8ea1326962cc401bcf018f1ed8436811c"}, ] [package.dependencies] cffi = {version = ">=2.0.0", markers = "platform_python_implementation != \"PyPy\" and python_version >= \"3.9\""} [package.extras] docs = ["sphinx (<7)", "sphinx_rtd_theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=7.4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] [[package]] name = "pypng" version = "0.20220715.0" description = "Pure Python library for saving and loading PNG images" optional = false python-versions = "*" groups = ["main"] files = [ {file = "pypng-0.20220715.0-py3-none-any.whl", hash = "sha256:4a43e969b8f5aaafb2a415536c1a8ec7e341cd6a3f957fd5b5f32a4cfeed902c"}, {file = "pypng-0.20220715.0.tar.gz", hash = "sha256:739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1"}, ] [[package]] name = "pysocks" version = "1.7.1" description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["main"] files = [ {file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"}, {file = "PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5"}, {file = "PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"}, ] [[package]] name = "pytest" version = "9.0.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.10" groups = ["dev"] files = [ {file = "pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9"}, {file = "pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c"}, ] [package.dependencies] colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} iniconfig = ">=1.0.1" packaging = ">=22" pluggy = ">=1.5,<2" pygments = ">=2.7.2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "python-engineio" version = "4.13.2" description = "Engine.IO server and client for Python" optional = false python-versions = ">=3.8" groups = ["main"] files = [ {file = "python_engineio-4.13.2-py3-none-any.whl", hash = "sha256:8c101cd170e400dc4e970cd523325cde22df8fc25140953f379327055d701a6b"}, {file = "python_engineio-4.13.2.tar.gz", hash = "sha256:a7732e99cfb7db6ed1aee31f18d7f73bbae086a92f31dee019bc646155d9684e"}, ] [package.dependencies] simple-websocket = ">=0.10.0" [package.extras] asyncio-client = ["aiohttp (>=3.11)"] client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] dev = ["tox"] docs = ["furo", "sphinx"] [[package]] name = "python-socketio" version = "5.16.2" description = "Socket.IO server and client for Python" optional = false python-versions = ">=3.8" groups = ["main"] files = [ {file = "python_socketio-5.16.2-py3-none-any.whl", hash = "sha256:bef2da3374fd533aed4297f57b4f6512b52aa51604cb0da2165f401291c5ca20"}, {file = "python_socketio-5.16.2.tar.gz", hash = "sha256:ad88c228d921646efa436c0a0df217e364ef30ec072df4041484e54d49c15989"}, ] [package.dependencies] bidict = ">=0.21.0" python-engineio = ">=4.13.2" [package.extras] asyncio-client = ["aiohttp (>=3.4)"] client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] dev = ["tox"] docs = ["furo", "sphinx"] [[package]] name = "qrcode" version = "7.4.2" description = "QR Code image generator" optional = false python-versions = ">=3.7" groups = ["main"] files = [ {file = "qrcode-7.4.2-py3-none-any.whl", hash = "sha256:581dca7a029bcb2deef5d01068e39093e80ef00b4a61098a2182eac59d01643a"}, {file = "qrcode-7.4.2.tar.gz", hash = "sha256:9dd969454827e127dbd93696b20747239e6d540e082937c90f14ac95b30f5845"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} pypng = "*" typing-extensions = "*" [package.extras] all = ["pillow (>=9.1.0)", "pytest", "pytest-cov", "tox", "zest.releaser[recommended]"] dev = ["pytest", "pytest-cov", "tox"] maintainer = ["zest.releaser[recommended]"] pil = ["pillow (>=9.1.0)"] test = ["coverage", "pytest"] [[package]] name = "requests" version = "2.34.2" description = "Python HTTP for Humans." optional = false python-versions = ">=3.10" groups = ["main"] files = [ {file = "requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0"}, {file = "requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed"}, ] [package.dependencies] certifi = ">=2023.5.7" charset_normalizer = ">=2,<4" idna = ">=2.5,<4" PySocks = {version = ">=1.5.6,<1.5.7 || >1.5.7", optional = true, markers = "extra == \"socks\""} urllib3 = ">=1.26,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<8)"] [[package]] name = "setuptools" version = "80.10.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.9" groups = ["main"] files = [ {file = "setuptools-80.10.2-py3-none-any.whl", hash = "sha256:95b30ddfb717250edb492926c92b5221f7ef3fbcc2b07579bcd4a27da21d0173"}, {file = "setuptools-80.10.2.tar.gz", hash = "sha256:8b0e9d10c784bf7d262c4e5ec5d4ec94127ce206e8738f29a437945fbc219b70"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "simple-websocket" version = "1.1.0" description = "Simple WebSocket server and client for Python" optional = false python-versions = ">=3.6" groups = ["main"] files = [ {file = "simple_websocket-1.1.0-py3-none-any.whl", hash = "sha256:4af6069630a38ed6c561010f0e11a5bc0d4ca569b36306eb257cd9a192497c8c"}, {file = "simple_websocket-1.1.0.tar.gz", hash = "sha256:7939234e7aa067c534abdab3a9ed933ec9ce4691b0713c78acb195560aa52ae4"}, ] [package.dependencies] wsproto = "*" [package.extras] dev = ["flake8", "pytest", "pytest-cov", "tox"] docs = ["sphinx"] [[package]] name = "stem" version = "1.8.1" description = "Stem is a Python controller library that allows applications to interact with Tor (https://www.torproject.org/)." optional = false python-versions = "*" groups = ["main"] files = [ {file = "stem-1.8.1.tar.gz", hash = "sha256:81d43a7c668ba9d7bc1103b2e7a911e9d148294b373d27a59ae8da79ef7a3e2f"}, ] [[package]] name = "tomli" version = "2.4.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30"}, {file = "tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a"}, {file = "tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076"}, {file = "tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9"}, {file = "tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c"}, {file = "tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc"}, {file = "tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049"}, {file = "tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e"}, {file = "tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece"}, {file = "tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a"}, {file = "tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085"}, {file = "tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9"}, {file = "tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5"}, {file = "tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585"}, {file = "tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1"}, {file = "tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917"}, {file = "tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9"}, {file = "tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257"}, {file = "tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54"}, {file = "tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a"}, {file = "tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897"}, {file = "tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f"}, {file = "tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d"}, {file = "tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5"}, {file = "tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd"}, {file = "tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36"}, {file = "tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd"}, {file = "tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf"}, {file = "tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac"}, {file = "tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662"}, {file = "tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853"}, {file = "tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15"}, {file = "tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba"}, {file = "tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6"}, {file = "tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7"}, {file = "tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232"}, {file = "tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4"}, {file = "tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c"}, {file = "tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d"}, {file = "tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41"}, {file = "tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c"}, {file = "tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f"}, {file = "tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8"}, {file = "tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26"}, {file = "tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396"}, {file = "tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe"}, {file = "tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f"}, ] [[package]] name = "typing-extensions" version = "4.15.0" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] markers = {dev = "python_version < \"3.11\""} [[package]] name = "unidecode" version = "1.4.0" description = "ASCII transliterations of Unicode text" optional = false python-versions = ">=3.7" groups = ["main"] files = [ {file = "Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021"}, {file = "Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23"}, ] [[package]] name = "urllib3" version = "2.7.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.10" groups = ["main"] files = [ {file = "urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897"}, {file = "urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c"}, ] [package.extras] brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] [[package]] name = "waitress" version = "3.0.2" description = "Waitress WSGI server" optional = false python-versions = ">=3.9.0" groups = ["main"] files = [ {file = "waitress-3.0.2-py3-none-any.whl", hash = "sha256:c56d67fd6e87c2ee598b76abdd4e96cfad1f24cacdea5078d382b1f9d7b5ed2e"}, {file = "waitress-3.0.2.tar.gz", hash = "sha256:682aaaf2af0c44ada4abfb70ded36393f0e307f4ab9456a215ce0020baefc31f"}, ] [package.extras] docs = ["Sphinx (>=1.8.1)", "docutils", "pylons-sphinx-themes (>=1.0.9)"] testing = ["coverage (>=7.6.0)", "pytest", "pytest-cov"] [[package]] name = "werkzeug" version = "3.1.6" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.9" groups = ["main"] files = [ {file = "werkzeug-3.1.6-py3-none-any.whl", hash = "sha256:7ddf3357bb9564e407607f988f683d72038551200c704012bb9a4c523d42f131"}, {file = "werkzeug-3.1.6.tar.gz", hash = "sha256:210c6bede5a420a913956b4791a7f4d6843a43b6fcee4dfa08a65e93007d0d25"}, ] [package.dependencies] markupsafe = ">=2.1.1" [package.extras] watchdog = ["watchdog (>=2.3)"] [[package]] name = "wheel" version = "0.46.3" description = "Command line tool for manipulating wheel files" optional = false python-versions = ">=3.9" groups = ["main"] files = [ {file = "wheel-0.46.3-py3-none-any.whl", hash = "sha256:4b399d56c9d9338230118d705d9737a2a468ccca63d5e813e2a4fc7815d8bc4d"}, {file = "wheel-0.46.3.tar.gz", hash = "sha256:e3e79874b07d776c40bd6033f8ddf76a7dad46a7b8aa1b2787a83083519a1803"}, ] [package.dependencies] packaging = ">=24.0" [package.extras] test = ["pytest (>=6.0.0)", "setuptools (>=77)"] [[package]] name = "wsproto" version = "1.3.2" description = "Pure-Python WebSocket protocol implementation" optional = false python-versions = ">=3.10" groups = ["main"] files = [ {file = "wsproto-1.3.2-py3-none-any.whl", hash = "sha256:61eea322cdf56e8cc904bd3ad7573359a242ba65688716b0710a5eb12beab584"}, {file = "wsproto-1.3.2.tar.gz", hash = "sha256:b86885dcf294e15204919950f666e06ffc6c7c114ca900b060d6e16293528294"}, ] [package.dependencies] h11 = ">=0.16.0,<1" [[package]] name = "zope-event" version = "6.2" description = "Very basic event publishing system" optional = false python-versions = ">=3.10" groups = ["main"] files = [ {file = "zope_event-6.2-py3-none-any.whl", hash = "sha256:5e755153ac4faf64c10a4b6dd3307680166a3edf65b38df22df592610f8fa874"}, {file = "zope_event-6.2.tar.gz", hash = "sha256:b97d5d6327067ee6b9dfcbdf606ade9ade70991e19c162e808ea39e5fcf0f8d3"}, ] [package.extras] docs = ["Sphinx"] test = ["zope.testrunner (>=6.4)"] [[package]] name = "zope-interface" version = "8.5" description = "Interfaces for Python" optional = false python-versions = ">=3.10" groups = ["main"] files = [ {file = "zope_interface-8.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0c8aa2bf8f3911ef37b87deb1bbe225a310e6eb6522a16d77f5d8330c4f6fbe"}, {file = "zope_interface-8.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:efe234a0fafb4b6b1602e9be9245b97c2bf06d67c07af5a4bc3c0438978b555c"}, {file = "zope_interface-8.5-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:dabeb6fe1228d411994f300811edc6866fff0cdcbc9cef98a78f05ea0da42e37"}, {file = "zope_interface-8.5-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:147a9442dcc2b7339ecdb1be2b3cdb098e90462e39425054053ebfb50d99125a"}, {file = "zope_interface-8.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a17e681224267880707c9ec9e730ad9a1ad2d65c371256843efba6cf48711b58"}, {file = "zope_interface-8.5-cp310-cp310-win_amd64.whl", hash = "sha256:d178968a1a611df30549a717d1624cb38ca810347339e3e37b7baa6f6781a170"}, {file = "zope_interface-8.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:afc66ccaef2a3c0bef6ca02aad40d29a39276389dad16a8eac36f9f385e4d057"}, {file = "zope_interface-8.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c28044972187245d7a309e4699319bfdbd2ffcbf7176d1d4ddf5adffb2dea80f"}, {file = "zope_interface-8.5-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:03bbecc7982af713d7499d4084bc03916413d17ffd45f89009348cc0c1d9e376"}, {file = "zope_interface-8.5-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bf917009a4a7457c7290225a019f4a0aa706d96accd2cfdba2418d3bc1fcde2f"}, {file = "zope_interface-8.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:31cff25b2aaedb5267e6e77b1e9be6b0ec4f622032de8a069202b8ffacda7dc2"}, {file = "zope_interface-8.5-cp311-cp311-win_amd64.whl", hash = "sha256:17a3114bbdddb5e75e5784cdf318944636190cbbc72d357ef9fb1a8b0351f955"}, {file = "zope_interface-8.5-cp311-cp311-win_arm64.whl", hash = "sha256:aab6bb5bee10f38ea688b95ba054396b67f613552d2c8378be7fcb2d2fba7646"}, {file = "zope_interface-8.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8e6ee90c2e6de7c37058d5fa41f123c8b13a312db8d1e0fb5840d7f4bcdff9c9"}, {file = "zope_interface-8.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c1adc90d3576b3b4c4de4953e6002c37bef28b78d7fa54c1bbfd0c50f022fe7c"}, {file = "zope_interface-8.5-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:e6347b8d8d12c5eca6502450a92be30079b7acfade2c4f693efa0deb8871b06e"}, {file = "zope_interface-8.5-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5e970dabea777a24b0b0bbf9dae3ab75ce8b2d8e948edf4875627034b21f3560"}, {file = "zope_interface-8.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f0b48ccadaa9839e09ff81e969703cecb3f402c813bfe8b958652e699bea69f5"}, {file = "zope_interface-8.5-cp312-cp312-win_amd64.whl", hash = "sha256:e0e311f1277468c08fd59a2b41f71b43d25dff639789d364747acd1705c0df6e"}, {file = "zope_interface-8.5-cp312-cp312-win_arm64.whl", hash = "sha256:652b73107a04159ec6c020db6c1543d4f1e8f4d069bd2aac88a947820923517b"}, {file = "zope_interface-8.5-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:28e80457c134d1fa57a7d758004dece348654e1b1467ac22dcdc20fc1d127c52"}, {file = "zope_interface-8.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:09495ce9d559c06b70f2d4855b3e4f48a822a9ddc8be1d30c5b4e5be14ae1ace"}, {file = "zope_interface-8.5-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:7849ad8fa90763cc1087f4dda78ca3a233e950b3e08fac7079297c9cafbbd7bb"}, {file = "zope_interface-8.5-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5578c9421ca409a1f39f153d6f7803e4cde01da592ec75a9ac5e1b777d18d33b"}, {file = "zope_interface-8.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e1bd7d96b4ca5fa311f54c9eac16dce4886b428c1531dbe06067763ccdf123b4"}, {file = "zope_interface-8.5-cp313-cp313-win_amd64.whl", hash = "sha256:0c8123d2a4dfde2a613c7cb772605477724782c20bc2e0ad1d9435376a6a44a3"}, {file = "zope_interface-8.5-cp313-cp313-win_arm64.whl", hash = "sha256:6d02be14f3173c6c7288bc2fdf530090c01c3cf8764ad46c68024686f364278e"}, {file = "zope_interface-8.5-cp314-cp314-macosx_10_9_x86_64.whl", hash = "sha256:ffaecf013251a89d0de6feb49a46eba48ad8cbbf8a40aeb6045e459e7bec6784"}, {file = "zope_interface-8.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:126fa9d1c52295ae076d4cf968634f0a1826afa408a20808b57ff72877b8f69f"}, {file = "zope_interface-8.5-cp314-cp314-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:3090e3a663d20194756a59a272e0c8508b889341e31d5894223331fe6b4f9b21"}, {file = "zope_interface-8.5-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9342fb74e2afefdb081bf1df727d209ea56995c6e13f5a0540e6d7aff4beafb8"}, {file = "zope_interface-8.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6c54725d818f1b57a7efb8b16528326e1f3c257b602b32393fd255c45af8799d"}, {file = "zope_interface-8.5-cp314-cp314-win_amd64.whl", hash = "sha256:29d74febbae1afeb6834c4ccbf42e242a673c860060f09e53142825270456140"}, {file = "zope_interface-8.5-cp314-cp314-win_arm64.whl", hash = "sha256:633c8c49396f38df030340797c533e9fe460d1b5d1e42d88e55e938e525f548c"}, {file = "zope_interface-8.5-cp314-cp314t-macosx_10_9_x86_64.whl", hash = "sha256:133999820fdbae513c36c03d6f29ef87317aaa3edef39112222b155083664714"}, {file = "zope_interface-8.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8bd75c96966e573232f0599deaff717564828031c7f05563ccc1ac35c5ee0304"}, {file = "zope_interface-8.5-cp314-cp314t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:14b0e9799351d4c34fe99afd67f0cdd76e55ba15c66a98699d5fc22ea8241e08"}, {file = "zope_interface-8.5-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0cd6a732ac84b94eb1ef9222a117347a27efd294ee16810ffdf7ecd307677ed5"}, {file = "zope_interface-8.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:798b7c87d0e59a7d5d086d642208d0d8700ff0d55c4029134b3c479c3bfb110f"}, {file = "zope_interface-8.5-cp314-cp314t-win_amd64.whl", hash = "sha256:0fc3a9d45f114d27eaa1e53beeb144533689edca8a9f66505b1e8e8b3f075e42"}, {file = "zope_interface-8.5.tar.gz", hash = "sha256:7a3ba1c5877f0f3e3906b02ddf793abed2becc2948116414ce0e1dd820b68d6d"}, ] [package.extras] docs = ["Sphinx", "furo", "repoze.sphinx.autointerface"] test = ["coverage[toml]", "zope.event", "zope.testing"] testing = ["coverage[toml]", "zope.event", "zope.testing"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" content-hash = "74c6a292de24383d9a9b8c6e6a87ae0fb4ee2d55392c3e57ad03b71d1e8bb91d" onionshare-onionshare-26fcdc5/cli/pyproject.toml000066400000000000000000000030611521174352300222060ustar00rootroot00000000000000[tool.poetry] name = "onionshare_cli" version = "2.6.4" description = "OnionShare lets you securely and anonymously send and receive files. It works by starting a web server, making it accessible as a Tor onion service, and generating an unguessable web address so others can download files from you, or upload files to you. It does _not_ require setting up a separate server or using a third party file-sharing service." authors = ["Micah Lee "] license = "GPLv3+" classifiers = [ "Programming Language :: Python :: 3", "Framework :: Flask", "Topic :: Communications :: File Sharing", "Topic :: Security :: Cryptography", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Intended Audience :: End Users/Desktop", "Operating System :: OS Independent", "Environment :: Web Environment", ] [tool.poetry.dependencies] python = ">=3.10,<4.0" click = "*" flask = "3.1.3" flask-compress = "^1.24" flask-socketio = "^5.6" psutil = "*" pysocks = "*" requests = {extras = ["socks"], version = ">=2.32.3"} unidecode = "*" urllib3 = "^2.7" eventlet = "*" setuptools = "^80" pynacl = "^1.6.2" colorama = "*" gevent-websocket = "*" stem = "1.8.1" waitress = "^3.0.1" werkzeug = "3.1.6" packaging = ">=24" gevent = "^26.5.0" wheel = "^0.46.2" cffi = "^2" cython = "^3.0.2" qrcode = "^7.4.2" pkgconfig = "^1.6.0" [tool.poetry.group.dev.dependencies] pytest = ">=7.2.0" [tool.poetry.scripts] onionshare-cli = 'onionshare_cli:main' [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" onionshare-onionshare-26fcdc5/cli/setup.py000066400000000000000000000047671521174352300210220ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os import setuptools with open(os.path.join("onionshare_cli", "resources", "version.txt")) as f: version = f.read().strip() setuptools.setup( name="onionshare-cli", version=version, long_description=( "OnionShare lets you securely and anonymously send and receive files. It works by starting a web server, " "making it accessible as a Tor onion service, and generating an unguessable web address so others can " "download files from you, or upload files to you. It does _not_ require setting up a separate server or " "using a third party file-sharing service." ), author="Micah Lee", author_email="micah@micahflee.com", maintainer="Micah Lee", maintainer_email="micah@micahflee.com", url="https://onionshare.org", license="GPLv3", keywords="onion, share, onionshare, tor, anonymous, web server", classifiers=[ "Programming Language :: Python :: 3", "Framework :: Flask", "Topic :: Communications :: File Sharing", "Topic :: Security :: Cryptography", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Intended Audience :: End Users/Desktop", "Operating System :: OS Independent", "Environment :: Web Environment", ], packages=[ "onionshare_cli", "onionshare_cli.web", ], package_data={ "onionshare_cli": [ "resources/*", "resources/static/*", "resources/static/css/*", "resources/static/img/*", "resources/static/js/*", "resources/templates/*", ] }, entry_points={ "console_scripts": [ "onionshare-cli = onionshare_cli:main", ], }, ) onionshare-onionshare-26fcdc5/cli/tests/000077500000000000000000000000001521174352300204345ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/tests/__init__.py000066400000000000000000000000001521174352300225330ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/cli/tests/conftest.py000066400000000000000000000111421521174352300226320ustar00rootroot00000000000000import os import shutil import sys import tempfile import pytest from onionshare_cli import common, web # Force tests to look for resources in the source code tree sys.onionshare_dev_mode = True # Let OnionShare know the tests are running, to avoid colliding with settings files sys.onionshare_test_mode = True # The temporary directory for CLI tests test_temp_dir = None def pytest_addoption(parser): parser.addoption( "--runtor", action="store_true", default=False, help="run tor tests" ) def pytest_collection_modifyitems(config, items): if not config.getoption("--runtor"): # --runtor given in cli: do not skip tor tests skip_tor = pytest.mark.skip(reason="need --runtor option to run") for item in items: if "tor" in item.keywords: item.add_marker(skip_tor) @pytest.fixture def temp_dir(): """Creates a persistent temporary directory for the CLI tests to use""" global test_temp_dir if not test_temp_dir: test_temp_dir = tempfile.TemporaryDirectory() return test_temp_dir @pytest.fixture def temp_dir_1024(temp_dir): """Create a temporary directory that has a single file of a particular size (1024 bytes). """ new_temp_dir = tempfile.TemporaryDirectory(dir=temp_dir.name) tmp_file = tempfile.NamedTemporaryFile(dir=new_temp_dir.name) tmp_file.write(b"*" * 1024) return new_temp_dir @pytest.fixture def temp_dir_1024_delete(temp_dir): """Create a temporary directory that has a single file of a particular size (1024 bytes). The temporary directory (including the file inside) will be deleted after fixture usage. """ with tempfile.TemporaryDirectory(dir=temp_dir.name) as new_temp_dir: with open(os.path.join(new_temp_dir, "file"), "wb") as f: f.write(b"*" * 1024) yield new_temp_dir @pytest.fixture def temp_file_1024(temp_dir): """Create a temporary file of a particular size (1024 bytes).""" filename = os.path.join(temp_dir.name, "file") with open(filename, "wb") as f: f.write(b"*" * 1024) return filename @pytest.fixture def temp_file_1024_delete(temp_dir): """ Create a temporary file of a particular size (1024 bytes). The temporary file will be deleted after fixture usage. """ with tempfile.NamedTemporaryFile(dir=temp_dir.name, delete=False) as tmp_file: tmp_file.write(b"*" * 1024) tmp_file.flush() tmp_file.close() yield tmp_file @pytest.fixture(scope="session") def custom_zw(): zw = web.share_mode.ZipWriter( common.Common(), zip_filename=common.Common.random_string(4, 6), processed_size_callback=lambda _: "custom_callback", ) yield zw zw.close() os.remove(zw.zip_filename) @pytest.fixture(scope="session") def default_zw(): zw = web.share_mode.ZipWriter(common.Common()) yield zw zw.close() tmp_dir = os.path.dirname(zw.zip_filename) try: shutil.rmtree(tmp_dir, ignore_errors=True) except Exception: pass @pytest.fixture def locale_en(monkeypatch): monkeypatch.setattr("locale.getlocale", lambda: ("en_US", "UTF-8")) @pytest.fixture def locale_fr(monkeypatch): monkeypatch.setattr("locale.getlocale", lambda: ("fr_FR", "UTF-8")) @pytest.fixture def locale_invalid(monkeypatch): monkeypatch.setattr("locale.getlocale", lambda: ("xx_XX", "UTF-8")) @pytest.fixture def locale_ru(monkeypatch): monkeypatch.setattr("locale.getlocale", lambda: ("ru_RU", "UTF-8")) @pytest.fixture def platform_darwin(monkeypatch): monkeypatch.setattr("platform.system", lambda: "Darwin") @pytest.fixture # (scope="session") def platform_linux(monkeypatch): monkeypatch.setattr("platform.system", lambda: "Linux") @pytest.fixture def platform_windows(monkeypatch): monkeypatch.setattr("platform.system", lambda: "Windows") @pytest.fixture def sys_argv_sys_prefix(monkeypatch): monkeypatch.setattr("sys.argv", [sys.prefix]) @pytest.fixture def sys_frozen(monkeypatch): monkeypatch.setattr("sys.frozen", True, raising=False) @pytest.fixture def sys_meipass(monkeypatch): monkeypatch.setattr("sys._MEIPASS", os.path.expanduser("~"), raising=False) @pytest.fixture # (scope="session") def sys_onionshare_dev_mode(monkeypatch): monkeypatch.setattr("sys.onionshare_dev_mode", True, raising=False) @pytest.fixture def time_time_100(monkeypatch): monkeypatch.setattr("time.time", lambda: 100) @pytest.fixture def time_strftime(monkeypatch): monkeypatch.setattr("time.strftime", lambda _: "Jun 06 2013 11:05:00") @pytest.fixture def common_obj(): return common.Common() onionshare-onionshare-26fcdc5/cli/tests/persistent.json000066400000000000000000000017511521174352300235330ustar00rootroot00000000000000{ "onion": { "private_key": "cDGn/lagkwEa62rj+SxSXqFjfSG08fVLVDyZ8HgOS32J9JorEPPWVjDF3GRFolqDTNeUpqNDy39j0E86tqbJag==", "client_auth_priv_key": "TYIU3TRRXWCQBSJYYRKOTR35M32YWNKQ3VBDGFDR74ASOW243OTA", "client_auth_pub_key": "62VXAPXH5HTODLCGL7CNZHA3Q3OKJEPVLV2UGUKQUCZ5GW3YTAAQ" }, "persistent": { "mode": "share", "enabled": true, "autostart_on_launch": false }, "general": { "title": null, "public": false, "autostart_timer": false, "autostop_timer": true, "service_id": "frlqrdrt4arsgnp4xenzoug5osmfqaqdbniuf4ziejoiwnhju3jlazid", "qr": false }, "share": { "autostop_sharing": false, "filenames": [ "/tmp/foo1", "/tmp/foo2" ], "log_filenames": false }, "receive": { "data_dir": "/tmp", "webhook_url": null, "disable_text": false, "disable_files": false }, "website": { "disable_csp": false, "custom_csp": null, "log_filenames": false, "filenames": [] }, "chat": {} }onionshare-onionshare-26fcdc5/cli/tests/pytest.ini000066400000000000000000000001341521174352300224630ustar00rootroot00000000000000[pytest] markers = gui: marks tests as a GUI test tor: marks tests as a Tor GUI testonionshare-onionshare-26fcdc5/cli/tests/test_cli.py000066400000000000000000000026631521174352300226230ustar00rootroot00000000000000import os import pytest from onionshare_cli import OnionShare from onionshare_cli.common import Common from onionshare_cli.mode_settings import ModeSettings class MyOnion: def __init__(self): self.auth_string = "TestHidServAuth" self.private_key = "" self.scheduled_key = None @staticmethod def start_onion_service( self, mode, mode_settings_obj, await_publication=True, save_scheduled_key=False ): return "test_service_id.onion" @pytest.fixture def onionshare_obj(): common = Common() return OnionShare(common, MyOnion()) @pytest.fixture def mode_settings_obj(): common = Common() return ModeSettings(common) class TestOnionShare: def test_init(self, onionshare_obj): assert onionshare_obj.hidserv_dir is None assert onionshare_obj.onion_host is None assert onionshare_obj.local_only is False def test_start_onion_service(self, onionshare_obj, mode_settings_obj): onionshare_obj.start_onion_service("share", mode_settings_obj) assert 17600 <= onionshare_obj.port <= 17650 assert onionshare_obj.onion_host == "test_service_id.onion" def test_start_onion_service_local_only(self, onionshare_obj, mode_settings_obj): onionshare_obj.local_only = True onionshare_obj.start_onion_service("share", mode_settings_obj) assert onionshare_obj.onion_host == "127.0.0.1:{}".format(onionshare_obj.port) onionshare-onionshare-26fcdc5/cli/tests/test_cli_common.py000066400000000000000000000221101521174352300241600ustar00rootroot00000000000000import contextlib import io import os import random import re import socket import sys import pytest PASSWORD_REGEX = re.compile(r"^([a-z]+)(-[a-z]+)?-([a-z]+)(-[a-z]+)?$") # TODO: Improve the Common tests to test it all as a single class class TestBuildPassword: @pytest.mark.parametrize( "test_input,expected", ( # VALID, two lowercase words, separated by a hyphen ("syrup-enzyme", True), ("caution-friday", True), # VALID, two lowercase words, with one hyphenated compound word ("drop-down-thimble", True), ("unmixed-yo-yo", True), # VALID, two lowercase hyphenated compound words, separated by hyphen ("yo-yo-drop-down", True), ("felt-tip-t-shirt", True), ("hello-world", True), # INVALID ("Upper-Case", False), ("digits-123", False), ("too-many-hyphens-", False), ("symbols-!@#$%", False), ), ) def test_build_password_regex(self, test_input, expected): """Test that `PASSWORD_REGEX` accounts for the following patterns There are a few hyphenated words in `wordlist.txt`: * drop-down * felt-tip * t-shirt * yo-yo These words cause a few extra potential password patterns: * word-word * hyphenated-word-word * word-hyphenated-word * hyphenated-word-hyphenated-word """ assert bool(PASSWORD_REGEX.match(test_input)) == expected def test_build_password_unique(self, common_obj, sys_onionshare_dev_mode): assert common_obj.build_password() != common_obj.build_password() class TestDirSize: def test_temp_dir_size(self, common_obj, temp_dir_1024_delete): """dir_size() should return the total size (in bytes) of all files in a particular directory. """ assert common_obj.dir_size(temp_dir_1024_delete) == 1024 class TestEstimatedTimeRemaining: @pytest.mark.parametrize( "test_input,expected", ( ((2, 676, 12), "8h14m16s"), ((14, 1049, 30), "1h26m15s"), ((21, 450, 1), "33m42s"), ((31, 1115, 80), "11m39s"), ((336, 989, 32), "2m12s"), ((603, 949, 38), "36s"), ((971, 1009, 83), "1s"), ), ) def test_estimated_time_remaining( self, common_obj, test_input, expected, time_time_100 ): assert common_obj.estimated_time_remaining(*test_input) == expected @pytest.mark.parametrize( "test_input", ( (10, 20, 100), # if `time_elapsed == 0` (0, 37, 99), # if `download_rate == 0` ), ) def test_raises_zero_division_error(self, common_obj, test_input, time_time_100): with pytest.raises(ZeroDivisionError): common_obj.estimated_time_remaining(*test_input) class TestFormatSeconds: @pytest.mark.parametrize( "test_input,expected", ( (0, "0s"), (26, "26s"), (60, "1m"), (947.35, "15m47s"), (1847, "30m47s"), (2193.94, "36m34s"), (3600, "1h"), (13426.83, "3h43m47s"), (16293, "4h31m33s"), (18392.14, "5h6m32s"), (86400, "1d"), (129674, "1d12h1m14s"), (56404.12, "15h40m4s"), ), ) def test_format_seconds(self, common_obj, test_input, expected): assert common_obj.format_seconds(test_input) == expected # TODO: test negative numbers? @pytest.mark.parametrize("test_input", ("string", lambda: None, [], {}, set())) def test_invalid_input_types(self, common_obj, test_input): with pytest.raises(TypeError): common_obj.format_seconds(test_input) class TestGetAvailablePort: @pytest.mark.parametrize( "port_min,port_max", ((random.randint(1024, 1500), random.randint(1800, 2048)) for _ in range(50)), ) def test_returns_an_open_port(self, common_obj, port_min, port_max): """get_available_port() should return an open port within the range""" port = common_obj.get_available_port(port_min, port_max) assert port_min <= port <= port_max with socket.socket() as tmpsock: tmpsock.bind(("127.0.0.1", port)) class TestGetPlatform: def test_darwin(self, platform_darwin, common_obj): assert common_obj.platform == "Darwin" def test_linux(self, platform_linux, common_obj): assert common_obj.platform == "Linux" def test_windows(self, platform_windows, common_obj): assert common_obj.platform == "Windows" class TestGetTorPaths: @pytest.mark.skipif(sys.platform != "darwin", reason="requires MacOS") def test_get_tor_paths_darwin( self, platform_darwin, common_obj, sys_frozen, sys_meipass ): base_path = os.path.dirname( os.path.dirname(os.path.dirname(common_obj.get_resource_path(""))) ) tor_path = os.path.join(base_path, "Resources", "Tor", "tor") tor_geo_ip_file_path = os.path.join(base_path, "Resources", "Tor", "geoip") tor_geo_ipv6_file_path = os.path.join(base_path, "Resources", "Tor", "geoip6") obfs4proxy_file_path = os.path.join(base_path, "Resources", "Tor", "obfs4proxy") meek_client_file_path = os.path.join( base_path, "Resources", "Tor", "meek-client" ) snowflake_file_path = os.path.join( base_path, "Resources", "Tor", "snowflake-client" ) assert common_obj.get_tor_paths() == ( tor_path, tor_geo_ip_file_path, tor_geo_ipv6_file_path, obfs4proxy_file_path, snowflake_file_path, meek_client_file_path, ) @pytest.mark.skipif(sys.platform != "linux", reason="requires Linux") def test_get_tor_paths_linux(self, platform_linux, common_obj): ( tor_path, tor_geo_ip_file_path, tor_geo_ipv6_file_path, _, # obfs4proxy is optional _, # snowflake-client is optional _, # meek-client is optional ) = common_obj.get_tor_paths() assert os.path.basename(tor_path) == "tor" assert ( tor_geo_ip_file_path == "/usr/share/tor/geoip" or tor_geo_ip_file_path == "/usr/local/share/tor/geoip" ) assert ( tor_geo_ipv6_file_path == "/usr/share/tor/geoip6" or tor_geo_ipv6_file_path == "/usr/local/share/tor/geoip6" ) @pytest.mark.skipif(sys.platform != "win32", reason="requires Windows") def test_get_tor_paths_windows(self, platform_windows, common_obj, sys_frozen): base_path = os.path.join( os.path.dirname(os.path.dirname(common_obj.get_resource_path(""))), "resources", "tor", ) tor_path = os.path.join(os.path.join(base_path, "Tor"), "tor.exe") obfs4proxy_file_path = os.path.join( os.path.join(base_path, "Tor"), "obfs4proxy.exe" ) snowflake_file_path = os.path.join( os.path.join(base_path, "Tor"), "snowflake-client.exe" ) meek_client_file_path = os.path.join( os.path.join(base_path, "Tor"), "meek-client.exe" ) tor_geo_ip_file_path = os.path.join( os.path.join(os.path.join(base_path, "Data"), "Tor"), "geoip" ) tor_geo_ipv6_file_path = os.path.join( os.path.join(os.path.join(base_path, "Data"), "Tor"), "geoip6" ) assert common_obj.get_tor_paths() == ( tor_path, tor_geo_ip_file_path, tor_geo_ipv6_file_path, obfs4proxy_file_path, snowflake_file_path, meek_client_file_path, ) class TestHumanReadableFilesize: @pytest.mark.parametrize( "test_input,expected", ( (1024 ** 0, "1.0 B"), (1024 ** 1, "1.0 KiB"), (1024 ** 2, "1.0 MiB"), (1024 ** 3, "1.0 GiB"), (1024 ** 4, "1.0 TiB"), (1024 ** 5, "1.0 PiB"), (1024 ** 6, "1.0 EiB"), (1024 ** 7, "1.0 ZiB"), (1024 ** 8, "1.0 YiB"), ), ) def test_human_readable_filesize(self, common_obj, test_input, expected): assert common_obj.human_readable_filesize(test_input) == expected class TestLog: def test_output(self, common_obj, time_strftime): common_obj.verbose = True # From: https://stackoverflow.com/questions/1218933 with io.StringIO() as buf, contextlib.redirect_stdout(buf): common_obj.log("TestModule", "dummy_func") common_obj.log("TestModule", "dummy_func", "TEST_MSG") output = buf.getvalue() line_one, line_two, _ = output.split("\n") assert ( "[Jun 06 2013 11:05:00]" in line_one and "TestModule.dummy_func" in line_one ) assert ( "[Jun 06 2013 11:05:00]" in line_two and "TestModule.dummy_func" in line_two and "TEST_MSG" in line_two ) onionshare-onionshare-26fcdc5/cli/tests/test_cli_settings.py000066400000000000000000000137141521174352300245420ustar00rootroot00000000000000import json import os import tempfile import sys import pytest from onionshare_cli import common, settings @pytest.fixture def settings_obj(sys_onionshare_dev_mode, platform_linux): _common = common.Common() _common.version = "DUMMY_VERSION_1.2.3" return settings.Settings(_common) class TestSettings: def test_init(self, settings_obj): expected_settings = { "version": "DUMMY_VERSION_1.2.3", "connection_type": "bundled", "control_port_address": "127.0.0.1", "control_port_port": 9051, "socks_address": "127.0.0.1", "socks_port": 9050, "socket_file_path": "/var/run/tor/control", "auth_type": "no_auth", "auth_password": "", "use_autoupdate": True, "autoupdate_timestamp": None, "bridges_enabled": False, "bridges_type": "built-in", "bridges_builtin_pt": "obfs4", "bridges_moat": "", "bridges_custom": "", "bridges_builtin": {}, "persistent_tabs": [], "theme": 0, "auto_connect": False, } for key in settings_obj._settings: # Skip locale, it will not always default to the same thing if key != "locale": assert settings_obj._settings[key] == settings_obj.default_settings[key] assert settings_obj._settings[key] == expected_settings[key] def test_fill_in_defaults(self, settings_obj): del settings_obj._settings["version"] settings_obj.fill_in_defaults() assert settings_obj._settings["version"] == "DUMMY_VERSION_1.2.3" def test_load(self, temp_dir, settings_obj): custom_settings = { "version": "CUSTOM_VERSION", "socks_port": 9999, "use_stealth": True, } tmp_file, tmp_file_path = tempfile.mkstemp(dir=temp_dir.name) with open(tmp_file, "w") as f: json.dump(custom_settings, f) settings_obj.filename = tmp_file_path settings_obj.load() assert settings_obj._settings["version"] == "CUSTOM_VERSION" assert settings_obj._settings["socks_port"] == 9999 assert settings_obj._settings["use_stealth"] is True os.remove(tmp_file_path) assert os.path.exists(tmp_file_path) is False def test_save(self, monkeypatch, temp_dir, settings_obj): settings_filename = "default_settings.json" new_temp_dir = tempfile.mkdtemp(dir=temp_dir.name) settings_path = os.path.join(new_temp_dir, settings_filename) settings_obj.filename = settings_path settings_obj.save() with open(settings_path, "r") as f: settings = json.load(f) assert settings_obj._settings == settings os.remove(settings_path) assert os.path.exists(settings_path) is False def test_get(self, settings_obj): assert settings_obj.get("version") == "DUMMY_VERSION_1.2.3" assert settings_obj.get("connection_type") == "bundled" assert settings_obj.get("control_port_address") == "127.0.0.1" assert settings_obj.get("control_port_port") == 9051 assert settings_obj.get("socks_address") == "127.0.0.1" assert settings_obj.get("socks_port") == 9050 assert settings_obj.get("socket_file_path") == "/var/run/tor/control" assert settings_obj.get("auth_type") == "no_auth" assert settings_obj.get("auth_password") == "" assert settings_obj.get("use_autoupdate") is True assert settings_obj.get("autoupdate_timestamp") is None assert settings_obj.get("autoupdate_timestamp") is None assert settings_obj.get("bridges_enabled") is False assert settings_obj.get("bridges_type") == "built-in" assert settings_obj.get("bridges_builtin_pt") == "obfs4" assert settings_obj.get("bridges_moat") == "" assert settings_obj.get("bridges_custom") == "" def test_set_version(self, settings_obj): settings_obj.set("version", "CUSTOM_VERSION") assert settings_obj._settings["version"] == "CUSTOM_VERSION" def test_set_control_port_port(self, settings_obj): settings_obj.set("control_port_port", 999) assert settings_obj._settings["control_port_port"] == 999 settings_obj.set("control_port_port", "NON_INTEGER") assert settings_obj._settings["control_port_port"] == 9051 def test_set_socks_port(self, settings_obj): settings_obj.set("socks_port", 888) assert settings_obj._settings["socks_port"] == 888 settings_obj.set("socks_port", "NON_INTEGER") assert settings_obj._settings["socks_port"] == 9050 @pytest.mark.skipif(sys.platform != "darwin", reason="requires Darwin") def test_filename_darwin(self, monkeypatch, platform_darwin): obj = settings.Settings(common.Common()) assert obj.filename == os.path.expanduser( "~/Library/Application Support/OnionShare-testdata/onionshare.json" ) @pytest.mark.skipif(sys.platform != "linux", reason="requires Linux") def test_filename_linux(self, monkeypatch, platform_linux): obj = settings.Settings(common.Common()) assert obj.filename == os.path.expanduser( "~/.config/onionshare-testdata/onionshare.json" ) @pytest.mark.skipif(sys.platform != "win32", reason="requires Windows") def test_filename_windows(self, monkeypatch, platform_windows): obj = settings.Settings(common.Common()) assert obj.filename == os.path.expanduser( "~\\AppData\\Roaming\\OnionShare-testdata\\onionshare.json" ) def test_set_custom_bridge(self, settings_obj): settings_obj.set( "bridges_custom", "Bridge 45.3.20.65:9050 21300AD88890A49C429A6CB9959CFD44490A8F6E", ) assert ( settings_obj._settings["bridges_custom"] == "Bridge 45.3.20.65:9050 21300AD88890A49C429A6CB9959CFD44490A8F6E" ) onionshare-onionshare-26fcdc5/cli/tests/test_cli_web.py000066400000000000000000000535271521174352300234650ustar00rootroot00000000000000import os import random import re import socket import subprocess import time import zipfile import tempfile import base64 import shutil import sys from io import BytesIO import pytest from contextlib import contextmanager from multiprocessing import Process from urllib.request import urlopen, Request from werkzeug.datastructures import Headers from werkzeug.exceptions import RequestedRangeNotSatisfiable from onionshare_cli.common import Common from onionshare_cli.web import Web from onionshare_cli.web.share_mode import parse_range_header from onionshare_cli.settings import Settings from onionshare_cli.mode_settings import ModeSettings import onionshare_cli.web.receive_mode # Stub requests.post, for receive mode webhook tests webhook_url = None webhook_data = None def requests_post_stub(url, data, timeout, proxies): global webhook_url, webhook_data webhook_url = url webhook_data = data onionshare_cli.web.receive_mode.requests.post = requests_post_stub DEFAULT_ZW_FILENAME_REGEX = re.compile(r"^onionshare_[a-z2-7]{6}.zip$") RANDOM_STR_REGEX = re.compile(r"^[a-z2-7]+$") def web_obj(temp_dir, common_obj, mode, num_files=0): """Creates a Web object, in either share mode or receive mode, ready for testing""" common_obj.settings = Settings(common_obj) mode_settings = ModeSettings(common_obj) web = Web(common_obj, False, mode_settings, mode) web.running = True web.cleanup_tempdirs == [] web.app.testing = True # Share mode if mode == "share": # Add files files = [] for _ in range(num_files): with tempfile.NamedTemporaryFile( delete=False, dir=temp_dir.name ) as tmp_file: tmp_file.write(b"*" * 1024) files.append(tmp_file.name) web.share_mode.set_file_info(files) # Receive mode else: pass return web class TestWeb: def test_share_mode(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "share", 3) assert web.mode == "share" with web.app.test_client() as c: # Load / res = c.get("/") res.get_data() assert res.status_code == 200 # Download res = c.get("/download") res.get_data() assert res.status_code == 200 assert ( res.mimetype == "application/zip" or res.mimetype == "application/x-zip-compressed" ) def test_share_mode_autostop_sharing_on(self, temp_dir, common_obj, temp_file_1024): web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", True) assert web.running is True with web.app.test_client() as c: # Download the first time res = c.get("/download") res.get_data() assert res.status_code == 200 assert ( res.mimetype == "application/zip" or res.mimetype == "application/x-zip-compressed" ) assert web.running is False def test_share_mode_autostop_sharing_off( self, temp_dir, common_obj, temp_file_1024 ): web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", False) assert web.running is True with web.app.test_client() as c: # Download the first time res = c.get("/download") res.get_data() assert res.status_code == 200 assert ( res.mimetype == "application/zip" or res.mimetype == "application/x-zip-compressed" ) assert web.running is True def test_receive_mode(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "receive") assert web.mode == "receive" with web.app.test_client() as c: # Load / with valid auth res = c.get( "/", ) res.get_data() assert res.status_code == 200 def test_receive_mode_page_has_upload_ui(self, temp_dir, common_obj): """ The receive index page must include the #uploads container and the receive.js script reference. The JS upload-progress UX (including the indeterminate progress bar and the Tor-traversal warning added in issue #1876) is appended into #uploads at runtime; if either element is missing the warning will silently never appear. """ web = web_obj(temp_dir, common_obj, "receive") with web.app.test_client() as c: res = c.get("/") html = res.get_data(as_text=True) assert res.status_code == 200 # Container where JS appends upload-progress divs assert 'id="uploads"' in html # Script that drives the upload progress UX assert "receive.js" in html def test_receive_mode_webhook(self, temp_dir, common_obj): global webhook_url, webhook_data webhook_url = None webhook_data = None web = web_obj(temp_dir, common_obj, "receive") assert web.mode == "receive" web.settings.set("receive", "webhook_url", "http://127.0.0.1:1337/example") web.proxies = None assert ( web.settings.get("receive", "webhook_url") == "http://127.0.0.1:1337/example" ) with web.app.test_client() as c: res = c.get("/") res.get_data() assert res.status_code == 200 res = c.post( "/upload-ajax", buffered=True, content_type="multipart/form-data", data={"file[]": (BytesIO(b"THIS IS A TEST FILE"), "new_york.jpg")}, ) res.get_data() assert res.status_code == 200 assert webhook_url == "http://127.0.0.1:1337/example" assert webhook_data == "1 file submitted to OnionShare" def test_receive_mode_message_no_files(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "receive") data_dir = os.path.join(temp_dir.name, "OnionShare") os.makedirs(data_dir, exist_ok=True) web.settings.set("receive", "data_dir", data_dir) with web.app.test_client() as c: res = c.post( "/upload-ajax", buffered=True, content_type="multipart/form-data", data={"text": "you know just sending an anonymous message"}, ) content = res.get_data() assert res.status_code == 200 assert b"Message submitted" in content # ~/OnionShare should have a folder for the date filenames = os.listdir(data_dir) assert len(filenames) == 1 data_dir_date = os.path.join(data_dir, filenames[0]) # The date folder should have a single message txt file, no folders filenames = os.listdir(data_dir_date) assert len(filenames) == 1 assert filenames[0].endswith("-message.txt") shutil.rmtree(data_dir) def test_receive_mode_message_and_files(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "receive") data_dir = os.path.join(temp_dir.name, "OnionShare") os.makedirs(data_dir, exist_ok=True) web.settings.set("receive", "data_dir", data_dir) with web.app.test_client() as c: res = c.post( "/upload-ajax", buffered=True, content_type="multipart/form-data", data={ "file[]": (BytesIO(b"THIS IS A TEST FILE"), "new_york.jpg"), "text": "you know just sending an anonymous message", }, ) content = res.get_data() assert res.status_code == 200 assert b"Message submitted, uploaded new_york.jpg" in content # Date folder should have a time folder with new_york.jpg, and a text message file data_dir_date = os.path.join(data_dir, os.listdir(data_dir)[0]) filenames = os.listdir(data_dir_date) assert len(filenames) == 2 time_str = filenames[0][0:12] assert time_str in filenames assert f"{time_str}-message.txt" in filenames data_dir_time = os.path.join(data_dir_date, time_str) assert os.path.isdir(data_dir_time) assert os.path.exists(os.path.join(data_dir_time, "new_york.jpg")) shutil.rmtree(data_dir) def test_receive_mode_files_no_message(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "receive") data_dir = os.path.join(temp_dir.name, "OnionShare") os.makedirs(data_dir, exist_ok=True) web.settings.set("receive", "data_dir", data_dir) with web.app.test_client() as c: res = c.post( "/upload-ajax", buffered=True, content_type="multipart/form-data", data={"file[]": (BytesIO(b"THIS IS A TEST FILE"), "new_york.jpg")}, ) content = res.get_data() assert res.status_code == 200 assert b"Uploaded new_york.jpg" in content # Date folder should have just a time folder with new_york.jpg data_dir_date = os.path.join(data_dir, os.listdir(data_dir)[0]) print(data_dir_date) filenames = os.listdir(data_dir_date) assert len(filenames) == 1 time_str = filenames[0][0:12] assert time_str in filenames assert f"{time_str}-message.txt" not in filenames data_dir_time = os.path.join(data_dir_date, time_str) assert os.path.isdir(data_dir_time) assert os.path.exists(os.path.join(data_dir_time, "new_york.jpg")) shutil.rmtree(data_dir) def test_receive_mode_no_message_no_files(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "receive") data_dir = os.path.join(temp_dir.name, "OnionShare") os.makedirs(data_dir, exist_ok=True) web.settings.set("receive", "data_dir", data_dir) with web.app.test_client() as c: res = c.post( "/upload-ajax", buffered=True, content_type="multipart/form-data", data={}, ) content = res.get_data() assert res.status_code == 200 assert b"Nothing submitted" in content # There should be no receive date directory data_dir_date = os.listdir(data_dir) assert len(data_dir_date) == 0 shutil.rmtree(data_dir) def test_public_mode_on(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "receive") web.settings.set("general", "public", True) with web.app.test_client() as c: # Loading / should work without auth res = c.get("/") res.get_data() assert res.status_code == 200 def test_cleanup(self, common_obj, temp_dir_1024): web = web_obj(temp_dir_1024, common_obj, "share", 3) temp_dir = tempfile.TemporaryDirectory() web.cleanup_tempdirs = [temp_dir] web.cleanup() assert os.path.exists(temp_dir.name) is False assert web.cleanup_tempdirs == [] class TestZipWriterDefault: @pytest.mark.parametrize( "test_input", ( f"onionshare_{''.join(random.choice('abcdefghijklmnopqrstuvwxyz234567') for _ in range(6))}.zip" for _ in range(50) ), ) def test_default_zw_filename_regex(self, test_input): assert bool(DEFAULT_ZW_FILENAME_REGEX.match(test_input)) def test_zw_filename(self, default_zw): zw_filename = os.path.basename(default_zw.zip_filename) assert bool(DEFAULT_ZW_FILENAME_REGEX.match(zw_filename)) def test_zipfile_filename_matches_zipwriter_filename(self, default_zw): assert default_zw.z.filename == default_zw.zip_filename def test_zipfile_allow_zip64(self, default_zw): assert default_zw.z._allowZip64 is True def test_zipfile_mode(self, default_zw): assert default_zw.z.mode == "w" def test_callback(self, default_zw): assert default_zw.processed_size_callback(None) is None def test_add_file(self, default_zw, temp_file_1024_delete): default_zw.add_file(temp_file_1024_delete.name) zipfile_info = default_zw.z.getinfo( os.path.basename(temp_file_1024_delete.name) ) assert zipfile_info.compress_type == zipfile.ZIP_DEFLATED assert zipfile_info.file_size == 1024 def test_add_directory(self, temp_dir_1024_delete, default_zw): previous_size = default_zw._size # size before adding directory default_zw.add_dir(temp_dir_1024_delete) assert default_zw._size == previous_size + 1024 class TestZipWriterCustom: @pytest.mark.parametrize( "test_input", ( Common.random_string( random.randint(2, 50), random.choice((None, random.randint(2, 50))) ) for _ in range(50) ), ) def test_random_string_regex(self, test_input): assert bool(RANDOM_STR_REGEX.match(test_input)) def test_custom_filename(self, custom_zw): assert bool(RANDOM_STR_REGEX.match(custom_zw.zip_filename)) def test_custom_callback(self, custom_zw): assert custom_zw.processed_size_callback(None) == "custom_callback" def check_unsupported(cmd: str, args: list): cmd_args = [cmd] cmd_args.extend(args) skip = False try: subprocess.check_call(cmd_args) except Exception: skip = True return pytest.mark.skipif(skip, reason="Command {!r} not supported".format(cmd)) @contextmanager def live_server(web): s = socket.socket() s.bind(("localhost", 0)) port = s.getsockname()[1] s.close() def run(): web.app.run(host="127.0.0.1", port=port, debug=False) proc = Process(target=run) proc.start() url = "http://127.0.0.1:{}".format(port) req = Request(url) attempts = 20 while True: try: urlopen(req) break except Exception: attempts -= 1 if attempts > 0: time.sleep(0.5) else: raise yield url + "/download" proc.terminate() class TestRangeRequests: VALID_RANGES = [ (None, 500, [(0, 499)]), ("bytes=0", 500, [(0, 499)]), ("bytes=100", 500, [(100, 499)]), ("bytes=100-", 500, [(100, 499)]), # not in the RFC, but how curl sends ("bytes=0-99", 500, [(0, 99)]), ("bytes=0-599", 500, [(0, 499)]), ("bytes=0-0", 500, [(0, 0)]), ("bytes=-100", 500, [(400, 499)]), ("bytes=0-99,100-199", 500, [(0, 199)]), ("bytes=0-100,100-199", 500, [(0, 199)]), ("bytes=0-99,101-199", 500, [(0, 99), (101, 199)]), ("bytes=0-199,100-299", 500, [(0, 299)]), ("bytes=0-99,200-299", 500, [(0, 99), (200, 299)]), ] INVALID_RANGES = [ "bytes=200-100", "bytes=0-100,300-200", ] def test_parse_ranges(self): for case in self.VALID_RANGES: (header, target_size, expected) = case parsed = parse_range_header(header, target_size) assert parsed == expected, case for invalid in self.INVALID_RANGES: with pytest.raises(RequestedRangeNotSatisfiable): parse_range_header(invalid, 500) def test_headers(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", False) url = "/download" with web.app.test_client() as client: resp = client.get(url) assert resp.headers["ETag"].startswith('"sha256:') assert resp.headers["Accept-Ranges"] == "bytes" assert resp.headers.get("Last-Modified") is not None assert resp.headers.get("Content-Length") is not None assert "Accept-Encoding" in resp.headers["Vary"] def test_basic(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", False) url = "/download" with open(web.share_mode.download_filename, "rb") as f: contents = f.read() with web.app.test_client() as client: resp = client.get(url) assert resp.status_code == 200 assert resp.data == contents def test_reassemble(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", False) url = "/download" with open(web.share_mode.download_filename, "rb") as f: contents = f.read() with web.app.test_client() as client: headers = Headers() headers.extend({"Range": "bytes=0-10"}) resp = client.get(url, headers=headers) assert resp.status_code == 206 content_range = resp.headers["Content-Range"] assert content_range == "bytes {}-{}/{}".format( 0, 10, web.share_mode.download_filesize ) bytes_out = resp.data headers.update({"Range": "bytes=11-100000"}) resp = client.get(url, headers=headers) assert resp.status_code == 206 content_range = resp.headers["Content-Range"] assert content_range == "bytes {}-{}/{}".format( 11, web.share_mode.download_filesize - 1, web.share_mode.download_filesize, ) bytes_out += resp.data assert bytes_out == contents def test_mismatched_etags(self, temp_dir, common_obj): """RFC 7233 Section 3.2 The "If-Range" header field allows a client to "short-circuit" the second request. Informally, its meaning is as follows: if the representation is unchanged, send me the part(s) that I am requesting in Range; otherwise, send me the entire representation. """ web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", False) url = "/download" with open(web.share_mode.download_filename, "rb") as f: contents = f.read() with web.app.test_client() as client: headers = Headers() resp = client.get(url, headers=headers) assert resp.status_code == 200 headers.extend({"If-Range": "mismatched etag", "Range": "bytes=10-100"}) resp = client.get(url, headers=headers) assert resp.status_code == 200 assert resp.data == contents def test_if_unmodified_since(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", False) url = "/download" with web.app.test_client() as client: headers = Headers() resp = client.get(url, headers=headers) assert resp.status_code == 200 last_mod = resp.headers["Last-Modified"] headers.extend({"If-Unmodified-Since": last_mod}) resp = client.get(url, headers=headers) assert resp.status_code == 304 def test_firefox_like_behavior(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", False) url = "/download" with web.app.test_client() as client: headers = Headers() resp = client.get(url, headers=headers) assert resp.status_code == 200 # Firefox sends these with all range requests etag = resp.headers["ETag"] last_mod = resp.headers["Last-Modified"] # make a request that uses the full header set headers.extend( { "Range": "bytes=0-10", "If-Unmodified-Since": last_mod, "If-Range": etag, } ) resp = client.get(url, headers=headers) assert resp.status_code == 206 @pytest.mark.skipif(sys.platform != "linux", reason="requires Linux") @check_unsupported("curl", ["--version"]) def test_curl(self, temp_dir, tmpdir, common_obj): web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", False) download = tmpdir.join("download") with live_server(web) as url: # Debugging help from `man curl`, on error 33 # 33 HTTP range error. The range "command" didn't work. subprocess.check_call( [ "curl", "--output", str(download), "--continue-at", "10", url, ] ) @pytest.mark.skipif(sys.platform != "linux", reason="requires Linux") @check_unsupported("wget", ["--version"]) def test_wget(self, temp_dir, tmpdir, common_obj): web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", False) # wget needs a file to exist to continue download = tmpdir.join("download") download.write("x" * 10) with live_server(web) as url: subprocess.check_call( [ "wget", "--continue", "-O", str(download), url, ] ) @pytest.mark.skipif(sys.platform != "linux", reason="requires Linux") @check_unsupported("http", ["--version"]) def test_httpie(self, temp_dir, common_obj): web = web_obj(temp_dir, common_obj, "share", 3) web.settings.set("share", "autostop_sharing", False) with live_server(web) as url: subprocess.check_call(["http", url, "Range: bytes=10"]) onionshare-onionshare-26fcdc5/cli/tests/test_cli_web_symlink.py000066400000000000000000000302371521174352300252240ustar00rootroot00000000000000import os import shutil import tempfile import pytest from onionshare_cli.common import Common from onionshare_cli.web import Web from onionshare_cli.settings import Settings from onionshare_cli.mode_settings import ModeSettings class TestSymlinkProtection: """Tests for symlink vulnerabilities""" @pytest.fixture def symlink_test_setup(self, temp_dir): """ Create a test environment with: - A shared directory containing normal files and symlinks - A secret file outside the shared directory - Symlinks pointing to the secret file """ # Create a unique temp directory for this test setup test_temp_dir = tempfile.TemporaryDirectory(dir=temp_dir.name) # Create the secret file outside the shared directory outside_secret = os.path.join(test_temp_dir.name, "outside-secret.txt") with open(outside_secret, "w") as f: f.write("OUTSIDE_SECRET_MARKER") # Create the shared directory site_dir = os.path.join(test_temp_dir.name, "site") os.mkdir(site_dir) # Create a normal file in the shared directory normal_file = os.path.join(site_dir, "normal.txt") with open(normal_file, "w") as f: f.write("NORMAL_FILE_CONTENT") # Create a symlink to the secret inside the shared directory symlink_path = os.path.join(site_dir, "link.txt") os.symlink(outside_secret, symlink_path) # Create a nested directory with files and symlinks nested_dir = os.path.join(site_dir, "nested") os.mkdir(nested_dir) nested_file = os.path.join(nested_dir, "nested.txt") with open(nested_file, "w") as f: f.write("NESTED_FILE_CONTENT") nested_symlink = os.path.join(nested_dir, "nested-link.txt") os.symlink(outside_secret, nested_symlink) return { "temp_dir": test_temp_dir, "outside_secret": outside_secret, "site_dir": site_dir, "normal_file": normal_file, "symlink_path": symlink_path, "nested_dir": nested_dir, "nested_file": nested_file, "nested_symlink": nested_symlink, } def test_symlink_excluded_from_file_inventory_website_mode( self, symlink_test_setup, common_obj ): """Test that symlinks are excluded from file inventory in website mode""" web = Web(common_obj, False, ModeSettings(common_obj), "website") web.website_mode.set_file_info([symlink_test_setup["site_dir"]]) # Symlinks should not be in the files dictionary assert "link.txt" not in web.website_mode.files assert "nested/nested-link.txt" not in web.website_mode.files # Normal files should be in the files dictionary assert "normal.txt" in web.website_mode.files assert "nested/nested.txt" in web.website_mode.files def test_symlink_excluded_from_file_inventory_share_mode( self, symlink_test_setup, common_obj ): """Test that symlinks are excluded from file inventory in share mode""" web = Web(common_obj, False, ModeSettings(common_obj), "share") web.share_mode.set_file_info([symlink_test_setup["site_dir"]]) # Symlinks should not be in the files dictionary assert "link.txt" not in web.share_mode.files assert "nested/nested-link.txt" not in web.share_mode.files # Normal files should be in the files dictionary assert "normal.txt" in web.share_mode.files assert "nested/nested.txt" in web.share_mode.files def test_is_path_contained_normal_files(self, symlink_test_setup, common_obj): """Test that normal files are correctly identified as contained""" web = Web(common_obj, False, ModeSettings(common_obj), "website") web.website_mode.set_file_info([symlink_test_setup["site_dir"]]) # Normal files should be contained assert web.website_mode._is_path_contained(symlink_test_setup["normal_file"]) assert web.website_mode._is_path_contained(symlink_test_setup["nested_file"]) def test_is_path_contained_symlinks(self, symlink_test_setup, common_obj): """Test that symlinks to outside are correctly identified as NOT contained""" web = Web(common_obj, False, ModeSettings(common_obj), "website") web.website_mode.set_file_info([symlink_test_setup["site_dir"]]) # Symlinks to outside should NOT be contained assert not web.website_mode._is_path_contained( symlink_test_setup["symlink_path"] ) assert not web.website_mode._is_path_contained( symlink_test_setup["nested_symlink"] ) def test_symlink_rejected_in_website_mode_request( self, symlink_test_setup, common_obj ): """Test that requesting a symlink returns 404 in website mode""" web = Web(common_obj, False, ModeSettings(common_obj), "website") web.app.testing = True web.website_mode.set_file_info([symlink_test_setup["site_dir"]]) with web.app.test_client() as c: # Requesting symlink should return 404 res = c.get("/link.txt") assert res.status_code == 404 # Normal file should return 200 res = c.get("/normal.txt") assert res.status_code == 200 assert b"NORMAL_FILE_CONTENT" in res.get_data() def test_symlink_rejected_in_share_mode_individual_download( self, symlink_test_setup, common_obj ): """Test that individual file downloads reject symlinks in share mode""" web = Web(common_obj, False, ModeSettings(common_obj), "share") web.app.testing = True web.settings.set("share", "autostop_sharing", False) web.share_mode.set_file_info([symlink_test_setup["site_dir"]]) with web.app.test_client() as c: # Requesting symlink should return 404 res = c.get("/link.txt") assert res.status_code == 404 # Normal file should return 200 res = c.get("/normal.txt") assert res.status_code == 200 assert b"NORMAL_FILE_CONTENT" in res.get_data() def test_symlink_excluded_from_zip_archive(self, symlink_test_setup, common_obj): """Test that symlinks are excluded from ZIP archives""" import zipfile from io import BytesIO web = Web(common_obj, False, ModeSettings(common_obj), "share") web.app.testing = True web.share_mode.set_file_info([symlink_test_setup["site_dir"]]) with web.app.test_client() as c: res = c.get("/download") assert res.status_code == 200 # Check ZIP contents zip_data = BytesIO(res.get_data()) with zipfile.ZipFile(zip_data, "r") as zf: zip_contents = zf.namelist() # Symlinks should not be in the ZIP assert "link.txt" not in zip_contents assert "nested/nested-link.txt" not in zip_contents # Normal files should be in the ZIP assert "normal.txt" in zip_contents assert "nested/nested.txt" in zip_contents def test_root_level_symlink_handling(self, temp_dir, common_obj): """Test that root-level symlinks (not in subdirectory) are handled correctly""" # Create a directory with only a symlink (no normal files) site_dir = os.path.join(temp_dir.name, "site-only-symlink") os.mkdir(site_dir) outside_secret = os.path.join(temp_dir.name, "secret.txt") with open(outside_secret, "w") as f: f.write("SECRET") symlink_path = os.path.join(site_dir, "link.txt") os.symlink(outside_secret, symlink_path) web = Web(common_obj, False, ModeSettings(common_obj), "website") web.website_mode.set_file_info([site_dir]) # The symlink should not be in the file inventory assert "link.txt" not in web.website_mode.files def test_nested_symlink_chain_handling(self, temp_dir, common_obj): """Test that nested symlinks (symlinks within subdirectories) are handled""" site_dir = os.path.join(temp_dir.name, "site") os.mkdir(site_dir) outside_secret = os.path.join(temp_dir.name, "secret.txt") with open(outside_secret, "w") as f: f.write("SECRET") # Create nested directory structure with symlinks at various levels level1 = os.path.join(site_dir, "level1") os.mkdir(level1) level2 = os.path.join(level1, "level2") os.mkdir(level2) # Symlink in level1 symlink1 = os.path.join(level1, "link1.txt") os.symlink(outside_secret, symlink1) # Symlink in level2 symlink2 = os.path.join(level2, "link2.txt") os.symlink(outside_secret, symlink2) # Normal file in level2 normal_file = os.path.join(level2, "normal.txt") with open(normal_file, "w") as f: f.write("NORMAL") web = Web(common_obj, False, ModeSettings(common_obj), "website") web.website_mode.set_file_info([site_dir]) # Symlinks should not be in the file inventory assert "level1/link1.txt" not in web.website_mode.files assert "level1/level2/link2.txt" not in web.website_mode.files # Normal file should be in the file inventory assert "level1/level2/normal.txt" in web.website_mode.files def test_directory_symlink_handling(self, temp_dir, common_obj): """Test that symlinks to directories are handled correctly""" # Create a unique temp directory for this test test_temp_dir = tempfile.TemporaryDirectory(dir=temp_dir.name) site_dir = os.path.join(test_temp_dir.name, "site") os.mkdir(site_dir) outside_dir = os.path.join(temp_dir.name, "outside-dir") os.mkdir(outside_dir) outside_file = os.path.join(outside_dir, "outside-file.txt") with open(outside_file, "w") as f: f.write("OUTSIDE") # Create a symlink to a directory dir_symlink = os.path.join(site_dir, "link-dir") os.symlink(outside_dir, dir_symlink) # Create a normal file normal_file = os.path.join(site_dir, "normal.txt") with open(normal_file, "w") as f: f.write("NORMAL") web = Web(common_obj, False, ModeSettings(common_obj), "website") web.website_mode.set_file_info([site_dir]) # The directory symlink should not be in root_files assert "link-dir" not in web.website_mode.root_files # Normal file should be in root_files assert "normal.txt" in web.website_mode.root_files def test_symlink_filtered_from_directory_listing( self, symlink_test_setup, common_obj ): """Test that symlinks are filtered from directory listings (not just file inventory)""" web = Web(common_obj, False, ModeSettings(common_obj), "website") web.app.testing = True web.website_mode.set_file_info([symlink_test_setup["site_dir"]]) with web.app.test_client() as c: # Request root directory listing res = c.get("/") assert res.status_code == 200 data = res.get_data(as_text=True) # Symlinks should not appear in directory listing assert "link.txt" not in data or "nested-link.txt" not in data # Normal files should appear in directory listing assert "normal.txt" in data def test_nested_symlink_filtered_from_directory_listing( self, symlink_test_setup, common_obj ): """Test that nested symlinks are filtered from nested directory listings""" web = Web(common_obj, False, ModeSettings(common_obj), "website") web.app.testing = True web.website_mode.set_file_info([symlink_test_setup["site_dir"]]) with web.app.test_client() as c: # Request nested directory listing res = c.get("/nested/") assert res.status_code == 200 data = res.get_data(as_text=True) # Nested symlink should not appear in directory listing assert "nested-link.txt" not in data # Normal nested file should appear in directory listing assert "nested.txt" in data onionshare-onionshare-26fcdc5/cli/tests/test_range_request.py000066400000000000000000000021671521174352300247170ustar00rootroot00000000000000import pytest from werkzeug.exceptions import RequestedRangeNotSatisfiable from onionshare_cli.web.share_mode import parse_range_header VALID_RANGES = [ (None, 500, [(0, 499)]), ("bytes=0", 500, [(0, 499)]), ("bytes=100", 500, [(100, 499)]), ("bytes=100-", 500, [(100, 499)]), # not in the RFC, but how curl sends ("bytes=0-99", 500, [(0, 99)]), ("bytes=0-599", 500, [(0, 499)]), ("bytes=0-0", 500, [(0, 0)]), ("bytes=-100", 500, [(400, 499)]), ("bytes=0-99,100-199", 500, [(0, 199)]), ("bytes=0-100,100-199", 500, [(0, 199)]), ("bytes=0-99,101-199", 500, [(0, 99), (101, 199)]), ("bytes=0-199,100-299", 500, [(0, 299)]), ("bytes=0-99,200-299", 500, [(0, 99), (200, 299)]), ] INVALID_RANGES = [ "bytes=200-100", "bytes=0-100,300-200", ] def test_parse_ranges(): for case in VALID_RANGES: (header, target_size, expected) = case parsed = parse_range_header(header, target_size) assert parsed == expected, case for invalid in INVALID_RANGES: with pytest.raises(RequestedRangeNotSatisfiable): parse_range_header(invalid, 500) onionshare-onionshare-26fcdc5/desktop/000077500000000000000000000000001521174352300201745ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/README.md000066400000000000000000000053471521174352300214640ustar00rootroot00000000000000# OnionShare Desktop ## Building OnionShare If you are running Linux, you can make use of the script `setup-project.sh` in the parent directory, which automates most of the steps below. Otherwise, please continue to read on. Start by getting the source code and changing to the `desktop` folder: ```sh git clone https://github.com/onionshare/onionshare.git cd onionshare/desktop ``` Make sure you have Python 3 installed. If you're using Windows or macOS, install the latest version of 3.11 [from python.org](https://www.python.org/downloads/). For Windows, make sure to check the box to add python to the path on the first page of the installer. Make sure you have [poetry](https://python-poetry.org/) installed: ``` pip3 install poetry ``` And install the poetry dependencies: ```sh poetry install ``` **Windows users:** You may need to install [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/), making sure to check "Desktop development with C++", before `poetry install` will work properly. ### Get Tor **Linux users:** - On Debian/Debian-based distributions you may need the `libxcb-xinerama0` and `libxcb-cursor0` packages installed. - On Fedora/CentOS you may need the `libxcb-*` and `xcb-util-*` packages installed. **Windows users:** - Download and install [7-Zip (x64)](https://7-zip.org/). Add `C:\Program Files\7-Zip` to your path. - Download and install [gpg4win](https://gpg4win.org/). Add `C:\Program Files (x86)\GnuPG\bin` to your path. Download Tor Browser and extract the binaries for your platform. The platform must be `windows-x86_64`, `macos`, or `linux-x86_64`. ```sh poetry run python ./scripts/get-tor.py [platform] ``` ### Compile dependencies Install Go. The simplest way to make sure everything works is to install Go by following [these instructions](https://golang.org/doc/install). Compile pluggable transports: **Windows users, in PowerShell:** ```powershell .\scripts\build-pt-obfs4proxy.ps1 .\scripts\build-pt-snowflake.ps1 .\scripts\build-pt-meek.ps1 ``` **macOS and Linux users:** ```sh ./scripts/build-pt-obfs4proxy.sh ./scripts/build-pt-snowflake.sh ./scripts/build-pt-meek.sh ``` ### Running OnionShare from the source code tree To run OnionShare from the source tree: ```sh poetry run onionshare poetry run onionshare --help poetry run onionshare -v poetry run onionshare -v --local-only ``` You can also run `onionshare-cli` from the source tree, and it will look for Tor binaries in `desktop/onionshare/resources/tor`. ```sh poetry run onionshare-cli --help ``` ## Running tests Run the tests: ```sh poetry run ./tests/run.sh ``` If you want to run tests while hiding the GUI, you must have the `xvfb` package installed, and then: ```sh xvfb-run poetry run ./tests/run.sh ``` onionshare-onionshare-26fcdc5/desktop/onionshare/000077500000000000000000000000001521174352300223415ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/__init__.py000066400000000000000000000217201521174352300244540ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from __future__ import division import os import sys import argparse import signal import json import psutil import getpass from PySide6 import QtCore, QtWidgets, QtGui from PySide6.QtCore import Slot, Qt from PySide6.QtGui import QPalette, QColor from onionshare_cli.common import Common from onionshare_cli.settings import Settings from .gui_common import GuiCommon from .widgets import Alert from .main_window import MainWindow class Application(QtWidgets.QApplication): """ This is Qt's QApplication class. It has been overridden to support threads and the quick keyboard shortcut. """ def __init__(self, common): if common.platform == "Linux" or common.platform == "BSD": self.setDesktopFileName("org.onionshare.OnionShare") self.setOrganizationDomain("org.onionshare.OnionShare") self.setOrganizationName("OnionShare") QtWidgets.QApplication.__init__(self, sys.argv) if common.platform == "Darwin" or common.platform == "Windows": self.setStyle("Fusion") # Check color mode on starting the app self.color_mode = self.get_color_mode(common) # Enable Dark Theme if self.color_mode == "dark": self.setDarkMode() else: self.setLightMode() self.installEventFilter(self) def eventFilter(self, obj, event): if ( event.type() == QtCore.QEvent.KeyPress and event.key() == QtCore.Qt.Key_Q and event.modifiers() == QtCore.Qt.ControlModifier ): self.quit() return False def is_dark_mode(self): baseColor = QtGui.QPalette().color(QtGui.QPalette.Base) if baseColor.name().lower() == "#ffffff": return False return True def setLightMode(self): light_palette = QPalette() light_palette.setColor(QPalette.Window, QColor(236, 236, 236)) light_palette.setColor(QPalette.WindowText, Qt.black) light_palette.setColor(QPalette.Base, Qt.white) light_palette.setColor(QPalette.AlternateBase, QColor(245, 245, 245)) light_palette.setColor(QPalette.ToolTipBase, Qt.white) light_palette.setColor(QPalette.ToolTipText, Qt.black) light_palette.setColor(QPalette.Text, Qt.black) light_palette.setColor(QPalette.Button, QColor(236, 236, 236)) light_palette.setColor(QPalette.ButtonText, Qt.black) light_palette.setColor(QPalette.BrightText, Qt.white) light_palette.setColor(QPalette.Link, QColor(0, 104, 218)) light_palette.setColor(QPalette.Highlight, QColor(179, 215, 255)) light_palette.setColor(QPalette.HighlightedText, Qt.black) light_palette.setColor(QPalette.Light, Qt.white) light_palette.setColor(QPalette.Midlight, QColor(245, 245, 245)) light_palette.setColor(QPalette.Dark, QColor(191, 191, 191)) light_palette.setColor(QPalette.Mid, QColor(169, 169, 169)) light_palette.setColor(QPalette.Shadow, Qt.black) self.setPalette(light_palette) def setDarkMode(self): dark_palette = QPalette() dark_palette.setColor(QPalette.Window, QColor(53, 53, 53)) dark_palette.setColor(QPalette.WindowText, Qt.white) dark_palette.setColor(QPalette.Base, QColor(25, 25, 25)) dark_palette.setColor(QPalette.AlternateBase, QColor(53, 53, 53)) dark_palette.setColor(QPalette.ToolTipBase, Qt.white) dark_palette.setColor(QPalette.ToolTipText, Qt.white) dark_palette.setColor(QPalette.Text, Qt.white) dark_palette.setColor(QPalette.Button, QColor(53, 53, 53)) dark_palette.setColor(QPalette.ButtonText, Qt.white) dark_palette.setColor(QPalette.BrightText, Qt.red) dark_palette.setColor(QPalette.Link, QColor(42, 130, 218)) dark_palette.setColor(QPalette.Highlight, QColor(42, 130, 218)) dark_palette.setColor(QPalette.HighlightedText, Qt.black) self.setPalette(dark_palette) self.setStyleSheet( "QToolTip { color: #ffffff; background-color: #2a82da; border: 1px solid white; }" ) def get_color_mode(self, common): curr_settings = Settings(common) curr_settings.load() current_theme = curr_settings.get("theme") if current_theme == 1: return "light" elif current_theme == 2: return "dark" else: return "dark" if self.is_dark_mode() else "light" def main(): """ The main() function implements all of the logic that the GUI version of onionshare uses. """ common = Common() common.display_banner() # Start the Qt app global qtapp qtapp = Application(common) # Parse arguments parser = argparse.ArgumentParser( formatter_class=lambda prog: argparse.HelpFormatter(prog, max_help_position=48) ) parser.add_argument( "--local-only", action="store_true", dest="local_only", help="Don't use Tor (only for development)", ) parser.add_argument( "-v", "--verbose", action="store_true", dest="verbose", help="Log OnionShare errors to stdout, and web errors to disk", ) parser.add_argument( "--filenames", metavar="filenames", nargs="+", help="List of files or folders to share", ) args = parser.parse_args() filenames = args.filenames if filenames: for i in range(len(filenames)): filenames[i] = os.path.abspath(filenames[i]) local_only = bool(args.local_only) verbose = bool(args.verbose) # Verbose mode? common.verbose = verbose # Attach the GUI common parts to the common object common.gui = GuiCommon(common, qtapp, local_only) # Validation if filenames: valid = True for filename in filenames: if not os.path.isfile(filename) and not os.path.isdir(filename): Alert(common, f"{filename} is not a valid file.") valid = False if not os.access(filename, os.R_OK): Alert(common, f"{filename} is not a readable file.") valid = False if not valid: sys.exit() # Is there another onionshare-gui running? if os.path.exists(common.gui.lock_filename): with open(common.gui.lock_filename, "r") as f: existing_pid = int(f.read()) # Is this process actually still running? still_running = True if not psutil.pid_exists(existing_pid): still_running = False else: for proc in psutil.process_iter(["pid", "name", "username"]): if proc.pid == existing_pid: if ( proc.username() != getpass.getuser() or "onionshare" not in " ".join(proc.cmdline()).lower() ): still_running = False if still_running: print(f"Opening tab in existing OnionShare window (pid {existing_pid})") # Make an event for the existing OnionShare window if filenames: obj = {"type": "new_share_tab", "filenames": filenames} else: obj = {"type": "new_tab"} # Write that event to disk with open(common.gui.events_filename, "a") as f: f.write(json.dumps(obj) + "\n") return else: os.remove(common.gui.lock_filename) # Write the lock file with open(common.gui.lock_filename, "w") as f: f.write(f"{os.getpid()}\n") # Allow Ctrl-C to smoothly quit the program instead of throwing an exception def signal_handler(s, frame): print("\nCtrl-C pressed, quitting") if os.path.exists(common.gui.lock_filename): os.remove(common.gui.lock_filename) sys.exit(0) signal.signal(signal.SIGINT, signal_handler) # Launch the gui main_window = MainWindow(common, filenames) # If filenames were passed in, open them in a tab if filenames: main_window.tabs.new_share_tab(filenames) # Clean up when app quits def shutdown(): main_window.cleanup() os.remove(common.gui.lock_filename) qtapp.aboutToQuit.connect(shutdown) # All done sys.exit(qtapp.exec()) onionshare-onionshare-26fcdc5/desktop/onionshare/__main__.py000066400000000000000000000014461521174352300244400ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from . import main if __name__ == "__main__": main() onionshare-onionshare-26fcdc5/desktop/onionshare/connection_tab.py000066400000000000000000000626031521174352300257070ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2021 Micah Lee, et al. 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 . """ import json import os from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.censorship import ( CensorshipCircumvention, CensorshipCircumventionError, ) from onionshare_cli.meek import ( MeekNotRunning, MeekNotFound, ) from onionshare_cli.settings import Settings from . import strings from .gui_common import GuiCommon, ToggleCheckbox from .tor_connection import TorConnectionWidget from .update_checker import UpdateThread from .widgets import Alert class AutoConnectTab(QtWidgets.QWidget): """ Initial Tab that appears in the very beginning to ask user if should auto connect. """ close_this_tab = QtCore.Signal() tor_is_connected = QtCore.Signal() tor_is_disconnected = QtCore.Signal() def __init__(self, common, tab_id, status_bar, window, parent=None): super(AutoConnectTab, self).__init__() self.common = common self.common.log("AutoConnectTab", "__init__") self.status_bar = status_bar self.tab_id = tab_id self.window = window self.parent = parent # Was auto connected? self.curr_settings = Settings(common) self.curr_settings.load() self.auto_connect_enabled = self.curr_settings.get("auto_connect") # Rocket ship animation images self.anim_stars = AnimStars(self, self.window) self.anim_ship = AnimShip(self, self.window) self.anim_smoke = AnimSmoke(self, self.window) # Onionshare logo self.image_label = QtWidgets.QLabel() self.image_label.setPixmap( QtGui.QPixmap.fromImage( QtGui.QImage( GuiCommon.get_resource_path( os.path.join( "images", f"{common.gui.color_mode}_logo_text_bg.png" ) ) ) ) ) self.image_label.setFixedSize(322, 65) image_layout = QtWidgets.QVBoxLayout() image_layout.addWidget(self.image_label) self.image = QtWidgets.QWidget() self.image.setLayout(image_layout) # First launch widget self.first_launch_widget = AutoConnectFirstLaunchWidget( self.common, self.curr_settings ) self.first_launch_widget.toggle_auto_connect.connect(self.toggle_auto_connect) self.first_launch_widget.connect_clicked.connect( self.first_launch_widget_connect_clicked ) self.first_launch_widget.open_tor_settings.connect(self.open_tor_settings) self.first_launch_widget.show() # Use bridge widget self.use_bridge_widget = AutoConnectUseBridgeWidget(self.common) self.use_bridge_widget.connect_clicked.connect(self.use_bridge_connect_clicked) self.use_bridge_widget.try_again_clicked.connect( self.first_launch_widget_connect_clicked ) self.use_bridge_widget.open_tor_settings.connect(self.open_tor_settings) self.use_bridge_widget.hide() # Tor connection widget self.tor_con = TorConnectionWidget(self.common, self.status_bar) self.tor_con.success.connect(self.tor_con_success) self.tor_con.fail.connect(self.tor_con_fail) self.tor_con.update_progress.connect(self.anim_stars.update) self.tor_con.update_progress.connect(self.anim_ship.update) self.tor_con.update_progress.connect(self.anim_smoke.update) self.tor_con.hide() # Layout content_layout = QtWidgets.QVBoxLayout() content_layout.addStretch() content_layout.addWidget(self.image) content_layout.addWidget(self.first_launch_widget) content_layout.addWidget(self.use_bridge_widget) content_layout.addWidget(self.tor_con) content_layout.addStretch() content_layout.setAlignment(QtCore.Qt.AlignCenter) content_widget = QtWidgets.QWidget() content_widget.setLayout(content_layout) self.layout = QtWidgets.QHBoxLayout() self.layout.addWidget(content_widget) self.layout.addStretch() self.setLayout(self.layout) def check_autoconnect(self): """ After rendering, check if autoconnect was clicked, then start connecting """ self.common.log("AutoConnectTab", "autoconnect_checking") if self.auto_connect_enabled: self.first_launch_widget.enable_autoconnect_checkbox.setChecked(True) self.first_launch_widget_connect_clicked() def toggle_auto_connect(self): """ Auto connect checkbox clicked """ self.common.log("AutoConnectTab", "autoconnect_checkbox_clicked") self.curr_settings.set( "auto_connect", self.first_launch_widget.enable_autoconnect_checkbox.isChecked(), ) self.curr_settings.save() def open_tor_settings(self): self.parent.open_settings_tab(from_autoconnect=True, active_tab="tor") def first_launch_widget_connect_clicked(self): """ Connect button in first launch widget clicked. Try to connect to tor. """ self.common.log("AutoConnectTab", "first_launch_widget_connect_clicked") self.first_launch_widget.hide_buttons() self.tor_con.show() self.tor_con.start(self.curr_settings) def _got_bridges(self): self.use_bridge_widget.progress.hide() self.use_bridge_widget.progress_label.hide() # Try and connect again self.common.log( "AutoConnectTab", "_got_bridges", "Got bridges. Trying to reconnect to Tor", ) self.tor_con.show() self.tor_con.start(self.curr_settings) def _got_no_bridges(self): # If we got no bridges, even after trying the default bridges # provided by the Censorship API, try connecting again using # our built-in obfs4 bridges self.curr_settings.set("bridges_type", "built-in") self.curr_settings.set("bridges_builtin_pt", "obfs4") self.curr_settings.set("bridges_enabled", True) self.curr_settings.save() self._got_bridges() def _censorship_progress_update(self, progress, summary): self.use_bridge_widget.progress.setValue(int(progress)) self.use_bridge_widget.progress_label.setText( f"{strings._('gui_autoconnect_circumventing_censorship')}
{summary}" ) def network_connection_error(self): """ Display an error if there simply seems no network connection. """ self.use_bridge_widget.connection_status_label.setText( strings._("gui_autoconnect_failed_to_connect_to_tor") ) self.use_bridge_widget.progress.hide() self.use_bridge_widget.progress_label.hide() self.use_bridge_widget.error_label.show() self.use_bridge_widget.country_combobox.setEnabled(True) self.use_bridge_widget.show_buttons() self.use_bridge_widget.show() def use_bridge_connect_clicked(self): """ Connect button in use bridge widget clicked. """ self.common.log( "AutoConnectTab", "use_bridge_connect_clicked", "Trying to automatically obtain bridges", ) self.use_bridge_widget.hide_buttons() self.use_bridge_widget.progress.show() self.use_bridge_widget.progress_label.show() if self.use_bridge_widget.detect_automatic_radio.isChecked(): country = False else: country = self.use_bridge_widget.country_combobox.currentData().lower() self._censorship_progress_update( 50, strings._("gui_autoconnect_circumventing_censorship_starting_meek") ) try: self.common.gui.meek.start() self.censorship_circumvention = CensorshipCircumvention( self.common, self.common.gui.meek ) self._censorship_progress_update( 75, strings._( "gui_autoconnect_circumventing_censorship_requesting_bridges" ), ) bridge_settings = self.censorship_circumvention.request_settings( country=country ) if not bridge_settings: # Fall back to trying the default bridges from the API self.common.log( "AutoConnectTab", "use_bridge_connect_clicked", "Falling back to trying default bridges provided by the Censorship Circumvention API", ) bridge_settings = ( self.censorship_circumvention.request_default_bridges() ) self.common.gui.meek.cleanup() if bridge_settings and self.censorship_circumvention.save_settings( self.curr_settings, bridge_settings ): self._censorship_progress_update( 100, strings._("gui_autoconnect_circumventing_censorship_got_bridges"), ) self._got_bridges() else: self._got_no_bridges() except ( MeekNotRunning, MeekNotFound, ) as e: self._got_no_bridges() except CensorshipCircumventionError as e: self.common.log( "AutoConnectTab", "use_bridge_connect_clicked", "Request to the Tor Censorship Circumvention API failed. No network connection?", ) self.network_connection_error() def check_for_updates(self): """ Check for OnionShare updates in a new thread, if enabled. """ if self.common.platform == "Windows" or self.common.platform == "Darwin": if self.common.settings.get("use_autoupdate"): def update_available(update_url, installed_version, latest_version): Alert( self.common, strings._("update_available").format( update_url, installed_version, latest_version ), ) self.update_thread = UpdateThread(self.common, self.common.gui.onion) self.update_thread.update_available.connect(update_available) self.update_thread.start() def tor_con_success(self): """ Finished testing tor connection. """ self.tor_con.hide() self.first_launch_widget.show_buttons() self.use_bridge_widget.show_buttons() self.use_bridge_widget.progress.hide() self.use_bridge_widget.progress_label.hide() if self.common.gui.onion.is_authenticated() and not self.tor_con.wasCanceled(): # Tell the tabs that Tor is connected self.tor_is_connected.emit() # After connecting to Tor, check for updates self.check_for_updates() # Close the tab self.close_this_tab.emit() def tor_con_fail(self, msg): """ Finished testing tor connection. """ self.tor_con.hide() # If there is a message, update the text of the bridge widget if msg: self.use_bridge_widget.connection_error_message.setText(msg) # If we're on first launch, check if wasCanceled # If cancelled, stay in first launch widget and show buttons # Else, switch to use bridge if self.first_launch_widget.isVisible(): if self.tor_con.wasCanceled(): self.first_launch_widget.show_buttons() else: self.first_launch_widget.show_buttons() self.first_launch_widget.hide() self.use_bridge_widget.show() else: self.use_bridge_widget.show_buttons() def reload_settings(self): """ Reload the latest Tor settings, and reset to show the first-launch widget if it had been hidden. """ self.curr_settings.load() self.auto_connect_enabled = self.curr_settings.get("auto_connect") self.first_launch_widget.enable_autoconnect_checkbox.setChecked( self.auto_connect_enabled ) self.use_bridge_widget.hide() self.first_launch_widget.show_buttons() self.first_launch_widget.show() class Anim(QtWidgets.QLabel): """ Rocket ship animation base class """ force_update = QtCore.Signal(int) def __init__(self, parent, window, w, h, filename): super(Anim, self).__init__(parent=parent) self.window = window self.window.window_resized.connect(self.update_same_percent) self.w = w self.h = h self.percent = 0 self.used_percentages = [] self.setPixmap( QtGui.QPixmap.fromImage( QtGui.QImage( GuiCommon.get_resource_path(os.path.join("images", filename)) ) ) ) self.setFixedSize(self.w, self.h) self.update(0) self.force_update.connect(self.update) def update_same_percent(self): self.update(self.percent) def update(self, percent): self.percent = percent self.move() self.setGeometry(int(self.x), int(self.y), int(self.w), int(self.h)) def move(self): # Implement in child pass class AnimStars(Anim): """ Rocket ship animation part: stars """ def __init__(self, parent, window): super(AnimStars, self).__init__( parent, window, 740, 629, "tor-connect-stars.png" ) def move(self): self.x = self.window.width() - self.w self.y = 0 # Stars don't move until 10%, then move down if self.percent >= 10: self.y += self.percent * 6.6 class AnimShip(Anim): """ Rocket ship animation part: ship """ def __init__(self, parent, window): super(AnimShip, self).__init__(parent, window, 239, 545, "tor-connect-ship.png") def move(self): self.x = self.window.width() - self.w - 150 self.y = self.window.height() - self.h - 40 # Ship moves up self.y -= self.percent * 6.6 class AnimSmoke(Anim): """ Rocket ship animation part: smoke """ def __init__(self, parent, window): super(AnimSmoke, self).__init__( parent, window, 522, 158, "tor-connect-smoke.png" ) def move(self): self.x = self.window.width() - self.w self.y = self.window.height() - self.h + 50 # Smoke moves up until 50%, then moves down self.y -= self.percent * 6.6 if self.percent >= 50: self.y += self.percent * 6.7 class AutoConnectFirstLaunchWidget(QtWidgets.QWidget): """ When you first launch OnionShare, this is the widget that is displayed """ toggle_auto_connect = QtCore.Signal() connect_clicked = QtCore.Signal() open_tor_settings = QtCore.Signal() def __init__(self, common, settings): super(AutoConnectFirstLaunchWidget, self).__init__() self.common = common self.common.log("AutoConnectFirstLaunchWidget", "__init__") self.settings = settings # Description and checkbox description_label = QtWidgets.QLabel(strings._("gui_autoconnect_description")) self.enable_autoconnect_checkbox = ToggleCheckbox( strings._("gui_enable_autoconnect_checkbox") ) self.enable_autoconnect_checkbox.setChecked(self.settings.get("auto_connect")) self.enable_autoconnect_checkbox.clicked.connect(self._toggle_auto_connect) self.enable_autoconnect_checkbox.setFixedWidth(400) self.enable_autoconnect_checkbox.setStyleSheet( common.gui.css["enable_autoconnect"] ) description_layout = QtWidgets.QVBoxLayout() description_layout.addWidget(description_label) description_layout.addWidget(self.enable_autoconnect_checkbox) description_widget = QtWidgets.QWidget() description_widget.setLayout(description_layout) # Buttons self.connect_button = QtWidgets.QPushButton(strings._("gui_autoconnect_start")) self.connect_button.clicked.connect(self._connect_clicked) self.connect_button.setFixedWidth(150) self.connect_button.setStyleSheet(common.gui.css["autoconnect_start_button"]) self.configure_button = QtWidgets.QPushButton( strings._("gui_autoconnect_configure") ) self.configure_button.clicked.connect(self._open_tor_settings) self.configure_button.setFlat(True) self.configure_button.setStyleSheet( common.gui.css["autoconnect_configure_button"] ) cta_layout = QtWidgets.QHBoxLayout() cta_layout.addWidget(self.connect_button) cta_layout.addWidget(self.configure_button) cta_widget = QtWidgets.QWidget() cta_widget.setLayout(cta_layout) # Layout layout = QtWidgets.QVBoxLayout() layout.addWidget(description_widget) layout.addWidget(cta_widget) self.setLayout(layout) def hide_buttons(self): self.connect_button.hide() self.configure_button.hide() def show_buttons(self): self.connect_button.show() self.configure_button.show() def _toggle_auto_connect(self): self.toggle_auto_connect.emit() def _connect_clicked(self): self.connect_clicked.emit() def _open_tor_settings(self): self.open_tor_settings.emit() class AutoConnectUseBridgeWidget(QtWidgets.QWidget): """ If connecting fails, this is the widget that helps the user bypass censorship """ connect_clicked = QtCore.Signal() try_again_clicked = QtCore.Signal() open_tor_settings = QtCore.Signal() def __init__(self, common): super(AutoConnectUseBridgeWidget, self).__init__() self.common = common self.common.log("AutoConnectUseBridgeWidget", "__init__") # Heading label when we fail to connect to Tor. self.connection_status_label = QtWidgets.QLabel( strings._("gui_autoconnect_failed_to_connect_to_tor") ) self.connection_status_label.setTextFormat(QtCore.Qt.RichText) self.connection_status_label.setStyleSheet( common.gui.css["autoconnect_failed_to_connect_label"] ) # Tor connection error message self.connection_error_message = QtWidgets.QLabel( strings._("gui_autoconnect_connection_error_msg") ) self.connection_error_message.setTextFormat(QtCore.Qt.RichText) self.connection_error_message.setWordWrap(True) self.connection_error_message.setContentsMargins(0, 0, 0, 10) # Description self.description_label = QtWidgets.QLabel( strings._("gui_autoconnect_bridge_description") ) self.description_label.setTextFormat(QtCore.Qt.RichText) self.description_label.setWordWrap(True) self.description_label.setContentsMargins(0, 0, 0, 20) # Detection preference self.use_bridge = True self.no_bridge = QtWidgets.QRadioButton( strings._("gui_autoconnect_no_bridge") ) self.no_bridge.toggled.connect(self._toggle_no_bridge) self.detect_automatic_radio = QtWidgets.QRadioButton( strings._("gui_autoconnect_bridge_detect_automatic") ) self.detect_automatic_radio.toggled.connect(self._detect_automatic_toggled) self.detect_manual_radio = QtWidgets.QRadioButton( strings._("gui_autoconnect_bridge_detect_manual") ) self.detect_manual_radio.toggled.connect(self._detect_manual_toggled) detect_layout = QtWidgets.QVBoxLayout() detect_layout.addWidget(self.no_bridge) detect_layout.addWidget(self.detect_automatic_radio) detect_layout.addWidget(self.detect_manual_radio) bridge_setting_options = QtWidgets.QGroupBox( strings._("gui_autoconnect_bridge_setting_options") ) bridge_setting_options.setLayout(detect_layout) bridge_setting_options.setFlat(True) bridge_setting_options.setStyleSheet( common.gui.css["autoconnect_bridge_setting_options"] ) # Country list locale = self.common.settings.get("locale") if not locale: locale = "en" with open( GuiCommon.get_resource_path(os.path.join("countries", f"{locale}.json")) ) as f: countries = json.loads(f.read()) self.country_combobox = QtWidgets.QComboBox() self.country_combobox.setStyleSheet( common.gui.css["autoconnect_countries_combobox"] ) self.country_combobox.setIconSize(QtCore.QSize(26, 20)) for country_code in countries: icon = QtGui.QIcon( GuiCommon.get_resource_path(os.path.join("images", "countries", f"{country_code.lower()}.png")) ) self.country_combobox.addItem(icon, countries[country_code], country_code) # Task label self.task_label = QtWidgets.QLabel() self.task_label.setStyleSheet(common.gui.css["autoconnect_task_label"]) self.task_label.setAlignment(QtCore.Qt.AlignCenter) self.task_label.hide() # Buttons self.connect_button = QtWidgets.QPushButton( strings._("gui_autoconnect_start") ) self.connect_button.clicked.connect(self._connect_clicked) self.connect_button.setFixedWidth(150) self.connect_button.setStyleSheet(common.gui.css["autoconnect_start_button"]) self.configure_button = QtWidgets.QPushButton( strings._("gui_autoconnect_configure") ) self.configure_button.clicked.connect(self._open_tor_settings) self.configure_button.setFlat(True) self.configure_button.setStyleSheet( common.gui.css["autoconnect_configure_button"] ) # Error label self.error_label = QtWidgets.QLabel( strings._("gui_autoconnect_could_not_connect_to_tor_api") ) self.error_label.setStyleSheet(self.common.gui.css["tor_settings_error"]) self.error_label.setWordWrap(True) self.error_label.hide() self.progress = QtWidgets.QProgressBar() self.progress.setRange(0, 100) self.progress_label = QtWidgets.QLabel( strings._("gui_autoconnect_circumventing_censorship") ) self.progress_label.setAlignment(QtCore.Qt.AlignHCenter) self.progress.hide() self.progress_label.hide() cta_layout = QtWidgets.QHBoxLayout() cta_layout.addWidget(self.connect_button) cta_layout.addWidget(self.configure_button) cta_layout.addStretch() cta_widget = QtWidgets.QWidget() cta_widget.setLayout(cta_layout) # Layout layout = QtWidgets.QVBoxLayout() layout.addWidget(self.connection_status_label) layout.addWidget(self.connection_error_message) layout.addWidget(self.description_label) layout.addWidget(bridge_setting_options) layout.addWidget(self.country_combobox) layout.addWidget(self.task_label) layout.addWidget(cta_widget) layout.addWidget(self.progress) layout.addWidget(self.progress_label) layout.addWidget(self.error_label) self.setLayout(layout) self.detect_automatic_radio.setChecked(True) def hide_buttons(self): self.connect_button.hide() self.configure_button.hide() self.connection_error_message.hide() self.description_label.hide() self.error_label.hide() self.no_bridge.hide() self.detect_automatic_radio.hide() self.detect_manual_radio.hide() def show_buttons(self): self.connect_button.show() self.connection_error_message.show() self.description_label.show() self.configure_button.show() self.no_bridge.show() self.detect_automatic_radio.show() self.detect_manual_radio.show() def _toggle_no_bridge(self): self.use_bridge = not self.use_bridge def _detect_automatic_toggled(self): self.country_combobox.setEnabled(False) self.country_combobox.hide() def _detect_manual_toggled(self): self.country_combobox.setEnabled(True) self.country_combobox.show() def _connect_clicked(self): self.country_combobox.setEnabled(False) self.hide_buttons() self.connection_status_label.setText( strings._("gui_autoconnect_trying_to_connect_to_tor") ) print(self.use_bridge) if not self.use_bridge: self.try_again_clicked.emit() else: self.connect_clicked.emit() def _open_tor_settings(self): self.open_tor_settings.emit() onionshare-onionshare-26fcdc5/desktop/onionshare/gui_common.py000066400000000000000000000556731521174352300250670ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import importlib.resources as importlib_resources import os import shutil from PySide6 import QtCore, QtWidgets, QtGui from . import strings from onionshare_cli.onion import ( Onion, TorErrorInvalidSetting, TorErrorAutomatic, TorErrorSocketPort, TorErrorSocketFile, TorErrorMissingPassword, TorErrorUnreadableCookieFile, TorErrorAuthError, TorErrorProtocolError, BundledTorTimeout, BundledTorBroken, TorTooOldEphemeral, TorTooOldStealth, PortNotAvailable, ) from onionshare_cli.meek import Meek from onionshare_cli.web.web import WaitressException class GuiCommon: """ The shared code for all of the OnionShare GUI. """ MODE_SHARE = "share" MODE_RECEIVE = "receive" MODE_WEBSITE = "website" MODE_CHAT = "chat" def __init__(self, common, qtapp, local_only): self.common = common self.qtapp = qtapp self.local_only = local_only # Are we running in a flatpak package? self.is_flatpak = os.path.exists("/.flatpak-info") # Load settings self.common.load_settings() # Load strings strings.load_strings(self.common, self.get_resource_path("locale")) # Start the Onion self.onion = Onion(common, get_tor_paths=self.get_tor_paths) # Lock filename self.lock_filename = os.path.join(self.common.build_data_dir(), "lock") # Events filenames self.events_dir = os.path.join(self.common.build_data_dir(), "events") if not os.path.exists(self.events_dir): os.makedirs(self.events_dir, 0o700, True) self.events_filename = os.path.join(self.events_dir, "events") # Instantiate Meek, which is used to bypass censorship self.meek = Meek(self.common, get_tor_paths=self.get_tor_paths) self.css = self.get_css(qtapp.color_mode) self.color_mode = qtapp.color_mode def get_css(self, color_mode): header_color = "#4E064F" # purple in light title_color = "#333333" # dark gray color in main window stop_button_color = "#d0011b" # red button color for stopping server new_tab_button_background = "#ffffff" new_tab_button_border = "#efeff0" new_tab_button_text_color = "#4e0d4e" downloads_uploads_progress_bar_border_color = "#4E064F" downloads_uploads_progress_bar_chunk_color = "#4E064F" share_zip_progess_bar_border_color = "#4E064F" share_zip_progess_bar_chunk_color = "#4E064F" history_background_color = "#ffffff" history_label_color = "#000000" settings_error_color = "#FF0000" if color_mode == "dark": header_color = "#F2F2F2" title_color = "#F2F2F2" stop_button_color = "#C32F2F" new_tab_button_background = "#5F5F5F" new_tab_button_border = "#878787" new_tab_button_text_color = "#FFFFFF" share_zip_progess_bar_border_color = "#F2F2F2" history_background_color = "#191919" history_label_color = "#ffffff" settings_error_color = "#FF9999" return { # OnionShareGui styles "tab_widget": """ QTabBar::tab { width: 170px; height: 30px; } """, "tab_widget_new_tab_button": """ QPushButton { font-weight: bold; font-size: 20px; }""", "settings_subtab_bar": """ QTabBar::tab { background: transparent; } QTabBar::tab:selected { border-bottom: 3px solid; border-color: #4E064F; padding: 3px }""", "mode_new_tab_button": """ QPushButton { font-weight: bold; font-size: 30px; color: #601f61; }""", "mode_header_label": """ QLabel { color: """ + header_color + """; font-size: 48px; margin-bottom: 16px; }""", "settings_button": """ QPushButton { border: 0; border-radius: 0; }""", "server_status_indicator_label": """ QLabel { font-style: italic; color: #666666; padding: 2px; }""", "status_bar": """ QStatusBar { font-style: italic; color: #666666; } QStatusBar::item { border: 0px; }""", "autoconnect_start_button": """ QPushButton { background-color: #5fa416; color: #ffffff; padding: 10px; border: 0; border-radius: 5px; }""", "autoconnect_configure_button": """ QPushButton { padding: 9px 29px; color: #3f7fcf; text-align: left; }""", "enable_autoconnect": """ QCheckBox { margin-top: 30px; background: #FCFCFC; color: #000000; border: 1px solid #DDDBDA; border-radius: 8px; padding: 24px 16px; } QCheckBox::indicator { width: 0; height: 0; }""", "autoconnect_countries_combobox": """ QComboBox { padding: 10px; font-size: 16px; margin-left: 32px; } QComboBox:disabled { color: #666666; } """, "autoconnect_task_label": """ QLabel { font-weight: bold; } """, "autoconnect_failed_to_connect_label": """ QLabel { font-size: 18px; font-weight: bold; }""", "autoconnect_bridge_setting_options": """ QGroupBox { border: 0; border-color: transparent; background-color: transparent; font-weight: bold; margin-top: 16px; } QGroupBox::title { subcontrol-origin: margin; }""", # Common styles between modes and their child widgets "mode_settings_toggle_advanced": """ QPushButton { color: #3f7fcf; text-align: left; } """, "mode_info_label": """ QLabel { font-size: 12px; color: #666666; } """, "server_status_url": """ QLabel { background-color: #ffffff; color: #000000; padding: 10px; border: 1px solid #666666; font-size: 12px; } """, "server_status_url_buttons": """ QPushButton { padding: 4px 8px; text-align: center; } """, "server_status_button_stopped": """ QPushButton { background-color: #5fa416; color: #ffffff; padding: 10px 30px 10px 30px; border: 0; border-radius: 5px; }""", "server_status_button_working": """ QPushButton { background-color: #4c8211; color: #ffffff; padding: 10px 30px 10px 30px; border: 0; border-radius: 5px; font-style: italic; }""", "server_status_button_started": """ QPushButton { background-color: """ + stop_button_color + """; color: #ffffff; padding: 10px 30px 10px 30px; border: 0; border-radius: 5px; }""", "downloads_uploads_not_empty": """ QWidget{ background-color: """ + history_background_color + """; }""", "downloads_uploads_empty": """ QWidget { background-color: """ + history_background_color + """; border: 1px solid #999999; } QWidget QLabel { background-color: none; border: 0px; } """, "downloads_uploads_empty_text": """ QLabel { color: #999999; }""", "downloads_uploads_label": """ QLabel { font-weight: bold; font-size 14px; text-align: center; background-color: none; border: none; }""", "downloads_uploads_clear": """ QPushButton { color: #3f7fcf; } """, "download_uploads_indicator": """ QLabel { color: #ffffff; background-color: #f44449; font-weight: bold; font-size: 10px; padding: 2px; border-radius: 7px; text-align: center; }""", "downloads_uploads_progress_bar": """ QProgressBar { border: 1px solid """ + downloads_uploads_progress_bar_border_color + """; background-color: #ffffff !important; text-align: center; color: #9b9b9b; font-size: 14px; } QProgressBar::chunk { background-color: """ + downloads_uploads_progress_bar_chunk_color + """; width: 10px; }""", "history_default_label": """ QLabel { color: """ + history_label_color + """; }""", "history_individual_file_timestamp_label": """ QLabel { color: #666666; }""", "history_individual_file_status_code_label_2xx": """ QLabel { color: #008800; }""", "history_individual_file_status_code_label_4xx": """ QLabel { color: #cc0000; }""", "tor_not_connected_label": """ QLabel { font-size: 16px; font-style: italic; }""", # New tab "new_tab_button_image": """ QLabel { padding: 30px; text-align: center; } """, "new_tab_button_text": """ QLabel { border: 1px solid """ + new_tab_button_border + """; border-radius: 4px; background-color: """ + new_tab_button_background + """; text-align: center; color: """ + new_tab_button_text_color + """; } """, "new_tab_title_text": """ QLabel { text-align: center; color: """ + title_color + """; font-size: 25px; } """, # Share mode and child widget styles "share_delete_all_files_button": """ QPushButton { color: #3f7fcf; } """, "share_zip_progess_bar": """ QProgressBar { border: 1px solid """ + share_zip_progess_bar_border_color + """; background-color: #ffffff !important; text-align: center; color: #9b9b9b; } QProgressBar::chunk { border: 0px; background-color: """ + share_zip_progess_bar_chunk_color + """; width: 10px; }""", "share_filesize_warning": """ QLabel { padding: 10px 0; font-weight: bold; color: """ + title_color + """; } """, "share_file_selection_drop_here_header_label": """ QLabel { color: """ + header_color + """; font-size: 48px; }""", "share_file_selection_drop_here_label": """ QLabel { color: #666666; }""", "share_file_selection_drop_count_label": """ QLabel { color: #ffffff; background-color: #f44449; font-weight: bold; padding: 5px 10px; border-radius: 10px; }""", "share_file_list_drag_enter": """ FileList { border: 3px solid #538ad0; } """, "share_file_list_drag_leave": """ FileList { border: none; } """, "share_file_list_item_size": """ QLabel { color: #666666; font-size: 11px; }""", # Receive mode and child widget styles "receive_file": """ QWidget { background-color: #ffffff; } """, "receive_file_size": """ QLabel { color: #666666; font-size: 11px; }""", "receive_message_button": """ QPushButton { padding: 5px 10px; }""", "receive_options": """ QCheckBox:disabled { color: #666666; }""", # Tor Settings dialogs "tor_settings_error": """ QLabel { color: """ + settings_error_color + """; } """, } def get_tor_paths(self): if self.common.platform == "Linux": base_path = self.get_resource_path("tor") if base_path and os.path.isdir(base_path): self.common.log( "GuiCommon", "get_tor_paths", "using paths in resources" ) tor_path = os.path.join(base_path, "tor") tor_geo_ip_file_path = os.path.join(base_path, "geoip") tor_geo_ipv6_file_path = os.path.join(base_path, "geoip6") obfs4proxy_file_path = os.path.join(base_path, "obfs4proxy") snowflake_file_path = os.path.join(base_path, "snowflake-client") meek_client_file_path = os.path.join(base_path, "meek-client") else: # Fallback to looking in the path self.common.log("GuiCommon", "get_tor_paths", "using paths from PATH") tor_path = shutil.which("tor") obfs4proxy_file_path = shutil.which("obfs4proxy") snowflake_file_path = shutil.which("snowflake-client") meek_client_file_path = shutil.which("meek-client") prefix = os.path.dirname(os.path.dirname(tor_path)) tor_geo_ip_file_path = os.path.join(prefix, "share/tor/geoip") tor_geo_ipv6_file_path = os.path.join(prefix, "share/tor/geoip6") if self.common.platform == "Windows": base_path = self.get_resource_path("tor") tor_path = os.path.join(base_path, "tor.exe") obfs4proxy_file_path = os.path.join(base_path, "obfs4proxy.exe") snowflake_file_path = os.path.join(base_path, "snowflake-client.exe") meek_client_file_path = os.path.join(base_path, "meek-client.exe") tor_geo_ip_file_path = os.path.join(base_path, "geoip") tor_geo_ipv6_file_path = os.path.join(base_path, "geoip6") elif self.common.platform == "Darwin": base_path = self.get_resource_path("tor") tor_path = os.path.join(base_path, "tor") obfs4proxy_file_path = os.path.join(base_path, "obfs4proxy") snowflake_file_path = os.path.join(base_path, "snowflake-client") meek_client_file_path = os.path.join(base_path, "meek-client") tor_geo_ip_file_path = os.path.join(base_path, "geoip") tor_geo_ipv6_file_path = os.path.join(base_path, "geoip6") elif self.common.platform == "BSD": tor_path = "/usr/local/bin/tor" tor_geo_ip_file_path = "/usr/local/share/tor/geoip" tor_geo_ipv6_file_path = "/usr/local/share/tor/geoip6" obfs4proxy_file_path = "/usr/local/bin/obfs4proxy" meek_client_file_path = "/usr/local/bin/meek-client" snowflake_file_path = "/usr/local/bin/snowflake-client" return ( tor_path, tor_geo_ip_file_path, tor_geo_ipv6_file_path, obfs4proxy_file_path, snowflake_file_path, meek_client_file_path, ) @staticmethod def get_resource_path(filename): """ Returns the absolute path of a resource """ try: ref = importlib_resources.files("onionshare.resources") / filename with importlib_resources.as_file(ref) as path: return str(path) except FileNotFoundError: return None @staticmethod def get_translated_tor_error(e): """ Takes an exception defined in onion.py and returns a translated error message """ if type(e) is TorErrorInvalidSetting: return strings._("settings_error_unknown") elif type(e) is TorErrorAutomatic: return strings._("settings_error_automatic") elif type(e) is TorErrorSocketPort: return strings._("settings_error_socket_port").format(e.args[0], e.args[1]) elif type(e) is TorErrorSocketFile: return strings._("settings_error_socket_file").format(e.args[0]) elif type(e) is TorErrorMissingPassword: return strings._("settings_error_missing_password") elif type(e) is TorErrorUnreadableCookieFile: return strings._("settings_error_unreadable_cookie_file") elif type(e) is TorErrorAuthError: return strings._("settings_error_auth").format(e.args[0], e.args[1]) elif type(e) is TorErrorProtocolError: return strings._("error_tor_protocol_error").format(e.args[0]) elif type(e) is BundledTorTimeout: return strings._("settings_error_bundled_tor_timeout") elif type(e) is BundledTorBroken: return strings._("settings_error_bundled_tor_broken").format(e.args[0]) elif type(e) is TorTooOldEphemeral: return strings._("error_ephemeral_not_supported") elif type(e) is TorTooOldStealth: return strings._("error_stealth_not_supported") elif type(e) is PortNotAvailable: return strings._("error_port_not_available") return None @staticmethod def get_translated_web_error(e): """ Takes an exception defined in web.py and returns a translated error message """ if type(e) is WaitressException: return strings._("waitress_web_server_error") class ToggleCheckbox(QtWidgets.QCheckBox): def __init__(self, text): super(ToggleCheckbox, self).__init__(text) # Set default parameters self.setCursor(QtCore.Qt.PointingHandCursor) self.w = 50 self.h = 24 self.bg_color = "#D4D4D4" self.circle_color = "#BDBDBD" self.active_color = "#4E0D4E" self.inactive_color = "" def hitButton(self, pos): return self.toggleRect.contains(pos) def paintEvent(self, e): painter = QtGui.QPainter(self) painter.setRenderHint(QtGui.QPainter.Antialiasing) painter.setPen(QtCore.Qt.NoPen) opt = QtWidgets.QStyleOptionButton() opt.initFrom(self) self.initStyleOption(opt) s = self.style() s.drawControl(QtWidgets.QStyle.CE_CheckBox, opt, painter, self) rect = QtCore.QRect( s.subElementRect(QtWidgets.QStyle.SE_CheckBoxContents, opt, self) ) x = ( rect.width() - rect.x() - self.w + 20 ) # 20 is the padding between text and toggle y = ( self.height() / 2 - self.h / 2 + 16 ) # 16 is the padding top for the checkbox self.toggleRect = QtCore.QRect(x, y, self.w, self.h) painter.setBrush(QtGui.QColor(self.bg_color)) painter.drawRoundedRect(x, y, self.w, self.h, self.h / 2, self.h / 2) if not self.isChecked(): painter.setBrush(QtGui.QColor(self.circle_color)) painter.drawEllipse(x, y - 3, self.h + 6, self.h + 6) else: painter.setBrush(QtGui.QColor(self.active_color)) painter.drawEllipse( x + self.w - (self.h + 6), y - 3, self.h + 6, self.h + 6 ) painter.end() onionshare-onionshare-26fcdc5/desktop/onionshare/main_window.py000066400000000000000000000301261521174352300252300ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os import time from PySide6 import QtCore, QtWidgets, QtGui from . import strings from .widgets import Alert from .connection_tab import AutoConnectTab from .tab_widget import TabWidget from .settings_tab import SettingsTab from .gui_common import GuiCommon from .threads import OnionCleanupThread class MainWindow(QtWidgets.QMainWindow): """ MainWindow is the OnionShare main window, which contains the GUI elements, including all open tabs """ window_resized = QtCore.Signal() def __init__(self, common, filenames): super(MainWindow, self).__init__() self.common = common self.common.log("MainWindow", "__init__") # Initialize the window self.setMinimumWidth(1040) self.setMinimumHeight(700) self.setWindowTitle("OnionShare") self.setWindowIcon(QtGui.QIcon(GuiCommon.get_resource_path("images/logo.png"))) # System tray menu = QtWidgets.QMenu() self.settings_action = menu.addAction(strings._("gui_settings_window_title")) self.settings_action.triggered.connect(self.open_settings) self.help_action = menu.addAction(strings._("gui_settings_button_help")) self.help_action.triggered.connect(lambda: SettingsTab.open_help()) exit_action = menu.addAction(strings._("systray_menu_exit")) exit_action.triggered.connect(self.close) self.system_tray = QtWidgets.QSystemTrayIcon(self) # The convention is Mac systray icons are always grayscale if self.common.platform == "Darwin": self.system_tray.setIcon( QtGui.QIcon(GuiCommon.get_resource_path("images/logo_grayscale.png")) ) else: self.system_tray.setIcon( QtGui.QIcon(GuiCommon.get_resource_path("images/logo.png")) ) self.system_tray.setContextMenu(menu) self.system_tray.show() # Status bar self.status_bar = QtWidgets.QStatusBar() self.status_bar.setSizeGripEnabled(False) self.status_bar.setStyleSheet(self.common.gui.css["status_bar"]) self.setStatusBar(self.status_bar) # Server status indicator icons self.status_bar.server_status_image_stopped = QtGui.QImage( GuiCommon.get_resource_path(f"images/{self.common.gui.color_mode}_server_stopped.svg") ) self.status_bar.server_status_image_working = QtGui.QImage( GuiCommon.get_resource_path("images/server_working.svg") ) self.status_bar.server_status_image_started = QtGui.QImage( GuiCommon.get_resource_path("images/server_started.svg") ) # Server status indicator on the status bar self.status_bar.server_status_image_label = QtWidgets.QLabel() self.status_bar.server_status_image_label.setFixedWidth(20) self.status_bar.server_status_label = QtWidgets.QLabel("") self.status_bar.server_status_label.setStyleSheet( self.common.gui.css["server_status_indicator_label"] ) server_status_indicator_layout = QtWidgets.QHBoxLayout() server_status_indicator_layout.addWidget( self.status_bar.server_status_image_label ) server_status_indicator_layout.addWidget(self.status_bar.server_status_label) self.status_bar.server_status_indicator = QtWidgets.QWidget() self.status_bar.server_status_indicator.setLayout( server_status_indicator_layout ) self.status_bar.addPermanentWidget(self.status_bar.server_status_indicator) # Settings button self.settings_button = QtWidgets.QPushButton() self.settings_button.setDefault(False) self.settings_button.setFixedSize(40, 50) self.settings_button.setIcon( QtGui.QIcon( GuiCommon.get_resource_path( "images/{}_settings.png".format(self.common.gui.color_mode) ) ) ) sequence = QtGui.QKeySequence(QtCore.Qt.CTRL | QtCore.Qt.Key_H) self.settings_button.setShortcut(sequence) self.settings_button.setAccessibleName(strings._("gui_settings_window_title")) self.settings_button.clicked.connect(self.open_settings) self.settings_button.setStyleSheet(self.common.gui.css["settings_button"]) self.status_bar.addPermanentWidget(self.settings_button) # Tabs self.tabs = TabWidget(self.common, self.system_tray, self.status_bar, self) self.tabs.bring_to_front.connect(self.bring_to_front) # If we have saved persistent tabs, try opening those if len(self.common.settings.get("persistent_tabs")) > 0: for mode_settings_id in self.common.settings.get("persistent_tabs"): self.tabs.load_tab(mode_settings_id) # If not connected to tor in beginning, show autoconnect tab if not self.common.gui.onion.connected_to_tor: self.tabs.new_tab_clicked() else: # Start with opening the first tab self.tabs.new_tab_clicked() # Layout layout = QtWidgets.QVBoxLayout() layout.addWidget(self.tabs) central_widget = QtWidgets.QWidget() central_widget.setLayout(layout) self.setCentralWidget(central_widget) self.show() # Create the close warning dialog -- the dialog widget needs to be in the constructor # in order to test it self.close_dialog = QtWidgets.QMessageBox() self.close_dialog.setWindowTitle(strings._("gui_quit_warning_title")) self.close_dialog.setText(strings._("gui_quit_warning_description")) self.close_dialog.setIcon(QtWidgets.QMessageBox.Critical) self.close_dialog.accept_button = self.close_dialog.addButton( strings._("gui_quit_warning_quit"), QtWidgets.QMessageBox.AcceptRole ) self.close_dialog.reject_button = self.close_dialog.addButton( strings._("gui_quit_warning_cancel"), QtWidgets.QMessageBox.NoRole ) self.close_dialog.setDefaultButton(self.close_dialog.reject_button) # Check for autoconnect self.tabs.check_autoconnect_tab() def tor_connection_canceled(self): """ If the user cancels before Tor finishes connecting, ask if they want to quit, or open settings. """ self.common.log("MainWindow", "tor_connection_canceled") def ask(): a = Alert( self.common, strings._("gui_tor_connection_ask"), QtWidgets.QMessageBox.Question, buttons=QtWidgets.QMessageBox.NoButton, autostart=False, ) settings_button = QtWidgets.QPushButton( strings._("gui_tor_connection_ask_open_settings") ) quit_button = QtWidgets.QPushButton( strings._("gui_tor_connection_ask_quit") ) a.addButton(settings_button, QtWidgets.QMessageBox.AcceptRole) a.addButton(quit_button, QtWidgets.QMessageBox.RejectRole) a.setDefaultButton(settings_button) a.exec() if a.clickedButton() == settings_button: # Open settings self.common.log( "OnionShareGui", "_tor_connection_canceled", "Settings button clicked", ) self.open_tor_settings() if a.clickedButton() == quit_button: # Quit self.common.log( "OnionShareGui", "_tor_connection_canceled", "Quit button clicked" ) # Wait 1ms for the event loop to finish, then quit QtCore.QTimer.singleShot(1, self.common.gui.qtapp.quit) # Wait 100ms before asking QtCore.QTimer.singleShot(100, ask) def tor_connection_open_tor_settings(self): """ The TorConnectionDialog wants to open the Tor Settings dialog """ self.common.log("MainWindow", "tor_connection_open_tor_settings") # Wait 1ms for the event loop to finish closing the TorConnectionDialog QtCore.QTimer.singleShot(1, self.open_tor_settings) def open_tor_settings(self): """ Open the TorSettingsTab """ self._open_settings(active_tab="tor") def open_settings(self): """ Open the general SettingsTab """ self._open_settings(active_tab="general") def _open_settings(self, active_tab): self.common.log("MainWindow", f"open settings with active tab: {active_tab}") from_autoconnect = False for tab_id in self.tabs.tabs: if type(self.tabs.tabs[tab_id]) is AutoConnectTab: from_autoconnect = True break self.tabs.open_settings_tab(from_autoconnect, active_tab=active_tab) def bring_to_front(self): self.common.log("MainWindow", "bring_to_front") self.raise_() self.activateWindow() def closeEvent(self, e): self.common.log("MainWindow", "closeEvent") if self.tabs.are_tabs_active(): # Open the warning dialog self.common.log("MainWindow", "closeEvent, opening warning dialog") self.close_dialog.exec() # Close if self.close_dialog.clickedButton() == self.close_dialog.accept_button: self.system_tray.hide() e.accept() # Cancel else: e.ignore() return self.system_tray.hide() e.accept() def event(self, event): # Check if color mode switched while onionshare was open, if so, ask user to restart if event.type() == QtCore.QEvent.Type.ApplicationPaletteChange: QtCore.QTimer.singleShot(1, self.color_mode_warning) return True return QtWidgets.QMainWindow.event(self, event) def color_mode_warning(self): """ Open the color mode warning alert. """ notice = strings._("gui_color_mode_changed_notice") Alert(self.common, notice, QtWidgets.QMessageBox.Information) def cleanup(self): self.common.log("MainWindow", "cleanup") self.tabs.cleanup() alert = Alert( self.common, strings._("gui_rendezvous_cleanup"), QtWidgets.QMessageBox.Information, buttons=QtWidgets.QMessageBox.NoButton, autostart=False, ) quit_early_button = QtWidgets.QPushButton( strings._("gui_rendezvous_cleanup_quit_early") ) alert.addButton(quit_early_button, QtWidgets.QMessageBox.RejectRole) self.onion_cleanup_thread = OnionCleanupThread(self.common) self.onion_cleanup_thread.finished.connect(alert.accept) self.onion_cleanup_thread.start() alert.exec() if alert.clickedButton() == quit_early_button: self.common.log("MainWindow", "cleanup", "quitting early") if self.onion_cleanup_thread.isRunning(): self.onion_cleanup_thread.terminate() self.onion_cleanup_thread.wait() self.common.gui.onion.cleanup(wait=False) # Wait 1 second for threads to close gracefully, so tests finally pass time.sleep(1) def resizeEvent(self, event: QtGui.QResizeEvent): self.window_resized.emit() return super(MainWindow, self).resizeEvent(event) onionshare-onionshare-26fcdc5/desktop/onionshare/moat_dialog.py000066400000000000000000000306651521174352300252040ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from PySide6 import QtCore, QtWidgets, QtGui import requests import os import base64 import json from . import strings from .gui_common import GuiCommon from onionshare_cli.meek import MeekNotFound, MeekNotRunning class MoatDialog(QtWidgets.QDialog): """ Moat dialog: Request a bridge from torproject.org """ got_bridges = QtCore.Signal(str) def __init__(self, common, meek): super(MoatDialog, self).__init__() self.common = common self.common.log("MoatDialog", "__init__") self.meek = meek self.setModal(True) self.setWindowTitle(strings._("gui_settings_bridge_moat_button")) self.setWindowIcon(QtGui.QIcon(GuiCommon.get_resource_path("images/logo.png"))) # Label self.label = QtWidgets.QLabel() # CAPTCHA image self.captcha = QtWidgets.QLabel() self.captcha.setFixedSize(400, 125) # this is the size of the CAPTCHA image # Solution input self.solution_lineedit = QtWidgets.QLineEdit() self.solution_lineedit.setPlaceholderText(strings._("moat_captcha_placeholder")) self.solution_lineedit.editingFinished.connect( self.solution_lineedit_editing_finished ) self.submit_button = QtWidgets.QPushButton(strings._("moat_captcha_submit")) self.submit_button.clicked.connect(self.submit_clicked) solution_layout = QtWidgets.QHBoxLayout() solution_layout.addWidget(self.solution_lineedit) solution_layout.addWidget(self.submit_button) # Error label self.error_label = QtWidgets.QLabel() self.error_label.setStyleSheet(self.common.gui.css["tor_settings_error"]) self.error_label.hide() # Buttons self.reload_button = QtWidgets.QPushButton(strings._("moat_captcha_reload")) self.reload_button.clicked.connect(self.reload_clicked) self.cancel_button = QtWidgets.QPushButton( strings._("gui_settings_button_cancel") ) self.cancel_button.clicked.connect(self.cancel_clicked) buttons_layout = QtWidgets.QHBoxLayout() buttons_layout.addStretch() buttons_layout.addWidget(self.reload_button) buttons_layout.addWidget(self.cancel_button) # Layout layout = QtWidgets.QVBoxLayout() layout.addWidget(self.label) layout.addWidget(self.captcha) layout.addLayout(solution_layout) layout.addStretch() layout.addWidget(self.error_label) layout.addLayout(buttons_layout) self.setLayout(layout) self.cancel_button.setFocus() self.reload_clicked() def reload_clicked(self): """ Reload button clicked. """ self.common.log("MoatDialog", "reload_clicked") self.label.setText(strings._("moat_contact_label")) self.error_label.hide() self.captcha.hide() self.solution_lineedit.hide() self.reload_button.hide() self.submit_button.hide() # BridgeDB fetch self.t_fetch = MoatThread(self.common, self.meek, "fetch") self.t_fetch.bridgedb_error.connect(self.bridgedb_error) self.t_fetch.captcha_ready.connect(self.captcha_ready) self.t_fetch.start() def submit_clicked(self): """ Submit button clicked. """ self.error_label.hide() self.solution_lineedit.setEnabled(False) solution = self.solution_lineedit.text().strip() if len(solution) == 0: self.common.log("MoatDialog", "submit_clicked", "solution is blank") self.error_label.setText(strings._("moat_solution_empty_error")) self.error_label.show() return # BridgeDB check self.t_check = MoatThread( self.common, self.meek, "check", { "transport": self.transport, "challenge": self.challenge, "solution": self.solution_lineedit.text(), }, ) self.t_check.bridgedb_error.connect(self.bridgedb_error) self.t_check.captcha_error.connect(self.captcha_error) self.t_check.bridges_ready.connect(self.bridges_ready) self.t_check.start() def cancel_clicked(self): """ Cancel button clicked. """ self.common.log("MoatDialog", "cancel_clicked") self.close() def bridgedb_error(self): self.common.log("MoatDialog", "bridgedb_error") self.error_label.setText(strings._("moat_bridgedb_error")) self.error_label.show() self.solution_lineedit.setEnabled(True) def captcha_error(self, msg): self.common.log("MoatDialog", "captcha_error") if msg == "": self.error_label.setText(strings._("moat_captcha_error")) else: self.error_label.setText(msg) self.error_label.show() self.solution_lineedit.setEnabled(True) def captcha_ready(self, transport, image, challenge): self.common.log("MoatDialog", "captcha_ready") self.transport = transport self.challenge = challenge # Save captcha image to disk, so we can load it captcha_data = base64.b64decode(image) captcha_filename = os.path.join(self.common.build_tmp_dir(), "captcha.jpg") with open(captcha_filename, "wb") as f: f.write(captcha_data) self.captcha.setPixmap(QtGui.QPixmap.fromImage(QtGui.QImage(captcha_filename))) os.remove(captcha_filename) self.label.setText(strings._("moat_captcha_label")) self.captcha.show() self.solution_lineedit.setEnabled(True) self.solution_lineedit.setText("") self.solution_lineedit.show() self.solution_lineedit.setFocus() self.reload_button.show() self.submit_button.show() def solution_lineedit_editing_finished(self): self.common.log("MoatDialog", "solution_lineedit_editing_finished") def bridges_ready(self, bridges): self.common.log("MoatDialog", "bridges_ready", bridges) self.got_bridges.emit(bridges) self.close() class MoatThread(QtCore.QThread): """ This does all of the communicating with BridgeDB in a separate thread. Valid actions are: - "fetch": requests a new CAPTCHA - "check": sends a CAPTCHA solution """ bridgedb_error = QtCore.Signal() captcha_error = QtCore.Signal(str) captcha_ready = QtCore.Signal(str, str, str) bridges_ready = QtCore.Signal(str) def __init__(self, common, meek, action, data={}): super(MoatThread, self).__init__() self.common = common self.common.log("MoatThread", "__init__", f"action={action}") self.meek = meek self.transport = "obfs4" self.action = action self.data = data def run(self): # Start Meek so that we can do domain fronting try: self.meek.start() except ( MeekNotFound, MeekNotRunning, ): self.bridgedb_error.emit() return # We should only fetch bridges if we can domain front, # but we can override this in local-only mode. if not self.meek.meek_proxies and not self.common.gui.local_only: self.common.log( "MoatThread", "run", f"Could not identify meek proxies to make request" ) self.bridgedb_error.emit() return if self.action == "fetch": self.common.log("MoatThread", "run", f"starting fetch") # Request a bridge r = requests.post( "https://bridges.torproject.org/moat/fetch", headers={"Content-Type": "application/vnd.api+json"}, proxies=self.meek.meek_proxies, json={ "data": [ { "version": "0.1.0", "type": "client-transports", "supported": ["obfs4", "snowflake"], } ] }, ) self.meek.cleanup() if r.status_code != 200: self.common.log("MoatThread", "run", f"status_code={r.status_code}") self.bridgedb_error.emit() return try: moat_res = r.json() if "errors" in moat_res: self.common.log("MoatThread", "run", f"errors={moat_res['errors']}") self.bridgedb_error.emit() return if "data" not in moat_res: self.common.log("MoatThread", "run", f"no data") self.bridgedb_error.emit() return if moat_res["data"][0]["type"] != "moat-challenge": self.common.log("MoatThread", "run", f"type != moat-challenge") self.bridgedb_error.emit() return transport = moat_res["data"][0]["transport"] image = moat_res["data"][0]["image"] challenge = moat_res["data"][0]["challenge"] self.captcha_ready.emit(transport, image, challenge) except Exception as e: self.common.log("MoatThread", "run", f"hit exception: {e}") self.bridgedb_error.emit() return elif self.action == "check": self.common.log("MoatThread", "run", f"starting check") # Check the CAPTCHA r = requests.post( "https://bridges.torproject.org/moat/check", headers={"Content-Type": "application/vnd.api+json"}, proxies=self.meek.meek_proxies, json={ "data": [ { "id": "2", "type": "moat-solution", "version": "0.1.0", "transport": self.data["transport"], "challenge": self.data["challenge"], "solution": self.data["solution"], "qrcode": "false", } ] }, ) self.meek.cleanup() if r.status_code != 200: self.common.log("MoatThread", "run", f"status_code={r.status_code}") self.bridgedb_error.emit() return try: moat_res = r.json() self.common.log( "MoatThread", "run", f"got bridges:\n{json.dumps(moat_res,indent=2)}", ) if "errors" in moat_res: self.common.log("MoatThread", "run", f"errors={moat_res['errors']}") if moat_res["errors"][0]["code"] == 419: self.captcha_error.emit("") return else: errors = " ".join([e["detail"] for e in moat_res["errors"]]) self.captcha_error.emit(errors) return if moat_res["data"][0]["type"] != "moat-bridges": self.common.log("MoatThread", "run", f"type != moat-bridges") self.bridgedb_error.emit() return bridges = moat_res["data"][0]["bridges"] self.bridges_ready.emit("\n".join(bridges)) except Exception as e: self.common.log("MoatThread", "run", f"hit exception: {e}") self.bridgedb_error.emit() return else: self.common.log("MoatThread", "run", f"invalid action: {self.action}") onionshare-onionshare-26fcdc5/desktop/onionshare/resources/000077500000000000000000000000001521174352300243535ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/__init__.py000066400000000000000000000000001521174352300264520ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/000077500000000000000000000000001521174352300263665ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/af.json000066400000000000000000000116741521174352300276600ustar00rootroot00000000000000{"AF": "Afganistan", "AX": "\u00c5landeilande", "AL": "Albani\u00eb", "DZ": "Algeri\u00eb", "AS": "Amerikaanse Samoa", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarktika", "AG": "Antigua en Barbuda", "AR": "Argentini\u00eb", "AM": "Armeni\u00eb", "AW": "Aruba", "AU": "Australi\u00eb", "AZ": "Azerbeidjan", "BS": "Bahamas", "BH": "Bahrein", "BD": "Bangladesj", "BB": "Barbados", "BY": "Belarus", "BE": "Belgi\u00eb", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhoetan", "BO": "Bolivi\u00eb", "BA": "Bosni\u00eb en Herzegowina", "BW": "Botswana", "BV": "Bouvet-eiland", "BR": "Brasili\u00eb", "IO": "Brits-Indiese Oseaangebied", "VG": "Britse Maagde-eilande", "BN": "Broenei", "BG": "Bulgarye", "BF": "Burkina Faso", "BI": "Burundi", "CL": "Chili", "CO": "Colombi\u00eb", "KM": "Comore", "CK": "Cookeilande", "CR": "Costa Rica", "CW": "Cura\u00e7ao", "CD": "Demokratiese Republiek van die Kongo", "DK": "Denemarke", "DJ": "Djiboeti", "DM": "Dominica", "DO": "Dominikaanse Republiek", "DE": "Duitsland", "EC": "Ecuador", "EG": "Egipte", "IM": "Eiland Man", "GQ": "Ekwatoriaal-Guinee", "SV": "El Salvador", "ER": "Eritrea", "EE": "Estland", "SZ": "Eswatini", "ET": "Ethiopi\u00eb", "FK": "Falklandeilande", "FO": "Faro\u00ebreilande", "FJ": "Fidji", "PH": "Filippyne", "FI": "Finland", "FR": "Frankryk", "GF": "Frans-Guyana", "PF": "Frans-Polinesi\u00eb", "TF": "Franse Suidelike Gebiede", "GA": "Gaboen", "GM": "Gambi\u00eb", "GE": "Georgi\u00eb", "GH": "Ghana", "GI": "Gibraltar", "GD": "Grenada", "GR": "Griekeland", "GL": "Groenland", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinee", "GW": "Guinee-Bissau", "GY": "Guyana", "HT": "Ha\u00efti", "HM": "Heardeiland en McDonaldeilande", "HN": "Honduras", "HU": "Hongarye", "HK": "Hongkong SAS Sjina", "IE": "Ierland", "IN": "Indi\u00eb", "ID": "Indonesi\u00eb", "IQ": "Irak", "IR": "Iran", "IL": "Israel", "IT": "Itali\u00eb", "CI": "Ivoorkus", "JM": "Jamaika", "JP": "Japan", "YE": "Jemen", "JO": "Jordani\u00eb", "KY": "Kaaimanseilande", "CV": "Kaap Verde", "KH": "Kambodja", "CM": "Kameroen", "CA": "Kanada", "BQ": "Karibiese Nederland", "QA": "Katar", "KZ": "Kazakstan", "KE": "Kenia", "CX": "Kerseiland", "KG": "Kirgistan", "KI": "Kiribati", "KW": "Koeweit", "CC": "Kokoseilande", "CG": "Kongo - Brazzaville", "HR": "Kroasi\u00eb", "CU": "Kuba", "LA": "Laos", "LS": "Lesotho", "LV": "Letland", "LB": "Libanon", "LR": "Liberi\u00eb", "LY": "Libi\u00eb", "LI": "Liechtenstein", "LT": "Litaue", "LU": "Luxemburg", "MO": "Macau SAS Sjina", "MG": "Madagaskar", "MW": "Malawi", "MV": "Maledive", "MY": "Maleisi\u00eb", "ML": "Mali", "MT": "Malta", "MA": "Marokko", "MQ": "Martinique", "MR": "Mauritani\u00eb", "MU": "Mauritius", "YT": "Mayotte", "MX": "Meksiko", "MM": "Mianmar (Birma)", "MD": "Moldowa", "MC": "Monaco", "MN": "Mongoli\u00eb", "ME": "Montenegro", "MS": "Montserrat", "MZ": "Mosambiek", "NA": "Namibi\u00eb", "NR": "Nauru", "NL": "Nederland", "NP": "Nepal", "NI": "Nicaragua", "NC": "Nieu-Kaledoni\u00eb", "NZ": "Nieu-Seeland", "NE": "Niger", "NG": "Nigeri\u00eb", "NU": "Niue", "KP": "Noord-Korea", "MK": "Noord-Macedoni\u00eb", "NO": "Noorwe\u00eb", "NF": "Norfolkeiland", "UA": "Oekra\u00efne", "UZ": "Oesbekistan", "OM": "Oman", "TL": "Oos-Timor", "AT": "Oostenryk", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papoea-Nieu-Guinee", "PY": "Paraguay", "PE": "Peru", "PN": "Pitcairneilande", "PL": "Pole", "PT": "Portugal", "PR": "Puerto Rico", "RE": "R\u00e9union", "RO": "Roemeni\u00eb", "RU": "Rusland", "RW": "Rwanda", "SB": "Salomonseilande", "WS": "Samoa", "SM": "San Marino", "ST": "S\u00e3o Tom\u00e9 en Pr\u00edncipe", "SA": "Saoedi-Arabi\u00eb", "SN": "Senegal", "CF": "Sentraal-Afrikaanse Republiek", "RS": "Serwi\u00eb", "SC": "Seychelle", "SL": "Sierra Leone", "SG": "Singapoer", "BL": "Sint Barth\u00e9lemy", "SH": "Sint Helena", "KN": "Sint Kitts en Nevis", "LC": "Sint Lucia", "SX": "Sint Maarten", "MF": "Sint Martin", "PM": "Sint Pierre en Miquelon", "VC": "Sint Vincent en die Grenadine", "CY": "Siprus", "SY": "Siri\u00eb", "CN": "Sjina", "SK": "Slowakye", "SI": "Sloweni\u00eb", "SD": "Soedan", "SO": "Somali\u00eb", "ES": "Spanje", "LK": "Sri Lanka", "ZA": "Suid-Afrika", "GS": "Suid-Georgi\u00eb en die Suidelike Sandwicheilande", "KR": "Suid-Korea", "SS": "Suid-Soedan", "SR": "Suriname", "SJ": "Svalbard en Jan Mayen", "SE": "Swede", "CH": "Switserland", "TJ": "Tadjikistan", "TW": "Taiwan", "TZ": "Tanzani\u00eb", "TH": "Thailand", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad en Tobago", "TD": "Tsjad", "CZ": "Tsjeggi\u00eb", "TN": "Tunisi\u00eb", "TM": "Turkmenistan", "TC": "Turks- en Caicoseilande", "TR": "Turkye", "UG": "Uganda", "UY": "Uruguay", "VU": "Vanuatu", "VA": "Vatikaanstad", "VE": "Venezuela", "AE": "Verenigde Arabiese Emirate", "GB": "Verenigde Koninkryk", "US": "Verenigde State van Amerika", "VN": "Vi\u00ebtnam", "VI": "VSA se Maagde-eilande", "WF": "Wallis en Futuna", "EH": "Wes-Sahara", "IS": "Ysland", "ZM": "Zambi\u00eb", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/ar.json000066400000000000000000000356331521174352300276750ustar00rootroot00000000000000{"IS": "\u0622\u064a\u0633\u0644\u0646\u062f\u0627", "ET": "\u0625\u062b\u064a\u0648\u0628\u064a\u0627", "AZ": "\u0623\u0630\u0631\u0628\u064a\u062c\u0627\u0646", "AM": "\u0623\u0631\u0645\u064a\u0646\u064a\u0627", "AW": "\u0623\u0631\u0648\u0628\u0627", "ER": "\u0625\u0631\u064a\u062a\u0631\u064a\u0627", "ES": "\u0625\u0633\u0628\u0627\u0646\u064a\u0627", "AU": "\u0623\u0633\u062a\u0631\u0627\u0644\u064a\u0627", "EE": "\u0625\u0633\u062a\u0648\u0646\u064a\u0627", "IL": "\u0625\u0633\u0631\u0627\u0626\u064a\u0644", "SZ": "\u0625\u0633\u0648\u0627\u062a\u064a\u0646\u064a", "AF": "\u0623\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646", "AR": "\u0627\u0644\u0623\u0631\u062c\u0646\u062a\u064a\u0646", "JO": "\u0627\u0644\u0623\u0631\u062f\u0646", "TF": "\u0627\u0644\u0623\u0642\u0627\u0644\u064a\u0645 \u0627\u0644\u062c\u0646\u0648\u0628\u064a\u0629 \u0627\u0644\u0641\u0631\u0646\u0633\u064a\u0629", "IO": "\u0627\u0644\u0625\u0642\u0644\u064a\u0645 \u0627\u0644\u0628\u0631\u064a\u0637\u0627\u0646\u064a \u0641\u064a \u0627\u0644\u0645\u062d\u064a\u0637 \u0627\u0644\u0647\u0646\u062f\u064a", "EC": "\u0627\u0644\u0625\u0643\u0648\u0627\u062f\u0648\u0631", "AE": "\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629", "AL": "\u0623\u0644\u0628\u0627\u0646\u064a\u0627", "BH": "\u0627\u0644\u0628\u062d\u0631\u064a\u0646", "BR": "\u0627\u0644\u0628\u0631\u0627\u0632\u064a\u0644", "PT": "\u0627\u0644\u0628\u0631\u062a\u063a\u0627\u0644", "BA": "\u0627\u0644\u0628\u0648\u0633\u0646\u0629 \u0648\u0627\u0644\u0647\u0631\u0633\u0643", "CZ": "\u0627\u0644\u062a\u0634\u064a\u0643", "ME": "\u0627\u0644\u062c\u0628\u0644 \u0627\u0644\u0623\u0633\u0648\u062f", "DZ": "\u0627\u0644\u062c\u0632\u0627\u0626\u0631", "DK": "\u0627\u0644\u062f\u0627\u0646\u0645\u0631\u0643", "CV": "\u0627\u0644\u0631\u0623\u0633 \u0627\u0644\u0623\u062e\u0636\u0631", "SV": "\u0627\u0644\u0633\u0644\u0641\u0627\u062f\u0648\u0631", "SN": "\u0627\u0644\u0633\u0646\u063a\u0627\u0644", "SD": "\u0627\u0644\u0633\u0648\u062f\u0627\u0646", "SE": "\u0627\u0644\u0633\u0648\u064a\u062f", "EH": "\u0627\u0644\u0635\u062d\u0631\u0627\u0621 \u0627\u0644\u063a\u0631\u0628\u064a\u0629", "SO": "\u0627\u0644\u0635\u0648\u0645\u0627\u0644", "CN": "\u0627\u0644\u0635\u064a\u0646", "IQ": "\u0627\u0644\u0639\u0631\u0627\u0642", "GA": "\u0627\u0644\u063a\u0627\u0628\u0648\u0646", "VA": "\u0627\u0644\u0641\u0627\u062a\u064a\u0643\u0627\u0646", "PH": "\u0627\u0644\u0641\u0644\u0628\u064a\u0646", "CM": "\u0627\u0644\u0643\u0627\u0645\u064a\u0631\u0648\u0646", "CG": "\u0627\u0644\u0643\u0648\u0646\u063a\u0648 - \u0628\u0631\u0627\u0632\u0627\u0641\u064a\u0644", "CD": "\u0627\u0644\u0643\u0648\u0646\u063a\u0648 - \u0643\u064a\u0646\u0634\u0627\u0633\u0627", "KW": "\u0627\u0644\u0643\u0648\u064a\u062a", "DE": "\u0623\u0644\u0645\u0627\u0646\u064a\u0627", "MA": "\u0627\u0644\u0645\u063a\u0631\u0628", "MX": "\u0627\u0644\u0645\u0643\u0633\u064a\u0643", "SA": "\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629", "GB": "\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629", "NO": "\u0627\u0644\u0646\u0631\u0648\u064a\u062c", "AT": "\u0627\u0644\u0646\u0645\u0633\u0627", "NE": "\u0627\u0644\u0646\u064a\u062c\u0631", "IN": "\u0627\u0644\u0647\u0646\u062f", "US": "\u0627\u0644\u0648\u0644\u0627\u064a\u0627\u062a \u0627\u0644\u0645\u062a\u062d\u062f\u0629", "JP": "\u0627\u0644\u064a\u0627\u0628\u0627\u0646", "YE": "\u0627\u0644\u064a\u0645\u0646", "GR": "\u0627\u0644\u064a\u0648\u0646\u0627\u0646", "AQ": "\u0623\u0646\u062a\u0627\u0631\u0643\u062a\u064a\u0643\u0627", "AG": "\u0623\u0646\u062a\u064a\u063a\u0648\u0627 \u0648\u0628\u0631\u0628\u0648\u062f\u0627", "AD": "\u0623\u0646\u062f\u0648\u0631\u0627", "ID": "\u0625\u0646\u062f\u0648\u0646\u064a\u0633\u064a\u0627", "AO": "\u0623\u0646\u063a\u0648\u0644\u0627", "AI": "\u0623\u0646\u063a\u0648\u064a\u0644\u0627", "UY": "\u0623\u0648\u0631\u063a\u0648\u0627\u064a", "UZ": "\u0623\u0648\u0632\u0628\u0643\u0633\u062a\u0627\u0646", "UG": "\u0623\u0648\u063a\u0646\u062f\u0627", "UA": "\u0623\u0648\u0643\u0631\u0627\u0646\u064a\u0627", "IR": "\u0625\u064a\u0631\u0627\u0646", "IE": "\u0623\u064a\u0631\u0644\u0646\u062f\u0627", "IT": "\u0625\u064a\u0637\u0627\u0644\u064a\u0627", "PG": "\u0628\u0627\u0628\u0648\u0627 \u063a\u064a\u0646\u064a\u0627 \u0627\u0644\u062c\u062f\u064a\u062f\u0629", "PY": "\u0628\u0627\u0631\u0627\u063a\u0648\u0627\u064a", "PK": "\u0628\u0627\u0643\u0633\u062a\u0627\u0646", "PW": "\u0628\u0627\u0644\u0627\u0648", "BB": "\u0628\u0631\u0628\u0627\u062f\u0648\u0633", "BM": "\u0628\u0631\u0645\u0648\u062f\u0627", "BN": "\u0628\u0631\u0648\u0646\u0627\u064a", "BE": "\u0628\u0644\u062c\u064a\u0643\u0627", "BG": "\u0628\u0644\u063a\u0627\u0631\u064a\u0627", "BZ": "\u0628\u0644\u064a\u0632", "BD": "\u0628\u0646\u063a\u0644\u0627\u062f\u064a\u0634", "PA": "\u0628\u0646\u0645\u0627", "BJ": "\u0628\u0646\u064a\u0646", "BT": "\u0628\u0648\u062a\u0627\u0646", "BW": "\u0628\u0648\u062a\u0633\u0648\u0627\u0646\u0627", "PR": "\u0628\u0648\u0631\u062a\u0648\u0631\u064a\u0643\u0648", "BF": "\u0628\u0648\u0631\u0643\u064a\u0646\u0627 \u0641\u0627\u0633\u0648", "BI": "\u0628\u0648\u0631\u0648\u0646\u062f\u064a", "PL": "\u0628\u0648\u0644\u0646\u062f\u0627", "BO": "\u0628\u0648\u0644\u064a\u0641\u064a\u0627", "PF": "\u0628\u0648\u0644\u064a\u0646\u064a\u0632\u064a\u0627 \u0627\u0644\u0641\u0631\u0646\u0633\u064a\u0629", "PE": "\u0628\u064a\u0631\u0648", "BY": "\u0628\u064a\u0644\u0627\u0631\u0648\u0633", "TH": "\u062a\u0627\u064a\u0644\u0627\u0646\u062f", "TW": "\u062a\u0627\u064a\u0648\u0627\u0646", "TM": "\u062a\u0631\u0643\u0645\u0627\u0646\u0633\u062a\u0627\u0646", "TR": "\u062a\u0631\u0643\u064a\u0627", "TT": "\u062a\u0631\u064a\u0646\u064a\u062f\u0627\u062f \u0648\u062a\u0648\u0628\u0627\u063a\u0648", "TD": "\u062a\u0634\u0627\u062f", "CL": "\u062a\u0634\u064a\u0644\u064a", "TZ": "\u062a\u0646\u0632\u0627\u0646\u064a\u0627", "TG": "\u062a\u0648\u063a\u0648", "TK": "\u062a\u0648\u0643\u064a\u0644\u0648", "TN": "\u062a\u0648\u0646\u0633", "TO": "\u062a\u0648\u0646\u063a\u0627", "TL": "\u062a\u064a\u0645\u0648\u0631 - \u0644\u064a\u0634\u062a\u064a", "JM": "\u062c\u0627\u0645\u0627\u064a\u0643\u0627", "GI": "\u062c\u0628\u0644 \u0637\u0627\u0631\u0642", "AX": "\u062c\u0632\u0631 \u0622\u0644\u0627\u0646\u062f", "BS": "\u062c\u0632\u0631 \u0627\u0644\u0628\u0647\u0627\u0645\u0627", "KM": "\u062c\u0632\u0631 \u0627\u0644\u0642\u0645\u0631", "MQ": "\u062c\u0632\u0631 \u0627\u0644\u0645\u0627\u0631\u062a\u064a\u0646\u064a\u0643", "MV": "\u062c\u0632\u0631 \u0627\u0644\u0645\u0627\u0644\u062f\u064a\u0641", "PN": "\u062c\u0632\u0631 \u0628\u064a\u062a\u0643\u064a\u0631\u0646", "TC": "\u062c\u0632\u0631 \u062a\u0648\u0631\u0643\u0633 \u0648\u0643\u0627\u064a\u0643\u0648\u0633", "SB": "\u062c\u0632\u0631 \u0633\u0644\u064a\u0645\u0627\u0646", "FO": "\u062c\u0632\u0631 \u0641\u0627\u0631\u0648", "FK": "\u062c\u0632\u0631 \u0641\u0648\u0643\u0644\u0627\u0646\u062f", "VG": "\u062c\u0632\u0631 \u0641\u064a\u0631\u062c\u0646 \u0627\u0644\u0628\u0631\u064a\u0637\u0627\u0646\u064a\u0629", "VI": "\u062c\u0632\u0631 \u0641\u064a\u0631\u062c\u0646 \u0627\u0644\u062a\u0627\u0628\u0639\u0629 \u0644\u0644\u0648\u0644\u0627\u064a\u0627\u062a \u0627\u0644\u0645\u062a\u062d\u062f\u0629", "KY": "\u062c\u0632\u0631 \u0643\u0627\u064a\u0645\u0627\u0646", "CK": "\u062c\u0632\u0631 \u0643\u0648\u0643", "CC": "\u062c\u0632\u0631 \u0643\u0648\u0643\u0648\u0633 (\u0643\u064a\u0644\u064a\u0646\u063a)", "WF": "\u062c\u0632\u0631 \u0648\u0627\u0644\u0633 \u0648\u0641\u0648\u062a\u0648\u0646\u0627", "BV": "\u062c\u0632\u064a\u0631\u0629 \u0628\u0648\u0641\u064a\u0647", "CX": "\u062c\u0632\u064a\u0631\u0629 \u0643\u0631\u064a\u0633\u0645\u0627\u0633", "IM": "\u062c\u0632\u064a\u0631\u0629 \u0645\u0627\u0646", "NF": "\u062c\u0632\u064a\u0631\u0629 \u0646\u0648\u0631\u0641\u0648\u0644\u0643", "HM": "\u062c\u0632\u064a\u0631\u0629 \u0647\u064a\u0631\u062f \u0648\u062c\u0632\u0631 \u0645\u0627\u0643\u062f\u0648\u0646\u0627\u0644\u062f", "CF": "\u062c\u0645\u0647\u0648\u0631\u064a\u0629 \u0623\u0641\u0631\u064a\u0642\u064a\u0627 \u0627\u0644\u0648\u0633\u0637\u0649", "DO": "\u062c\u0645\u0647\u0648\u0631\u064a\u0629 \u0627\u0644\u062f\u0648\u0645\u064a\u0646\u064a\u0643\u0627\u0646", "ZA": "\u062c\u0646\u0648\u0628 \u0623\u0641\u0631\u064a\u0642\u064a\u0627", "SS": "\u062c\u0646\u0648\u0628 \u0627\u0644\u0633\u0648\u062f\u0627\u0646", "GE": "\u062c\u0648\u0631\u062c\u064a\u0627", "GS": "\u062c\u0648\u0631\u062c\u064a\u0627 \u0627\u0644\u062c\u0646\u0648\u0628\u064a\u0629 \u0648\u062c\u0632\u0631 \u0633\u0627\u0646\u062f\u0648\u064a\u062a\u0634 \u0627\u0644\u062c\u0646\u0648\u0628\u064a\u0629", "DJ": "\u062c\u064a\u0628\u0648\u062a\u064a", "DM": "\u062f\u0648\u0645\u064a\u0646\u064a\u0643\u0627", "RW": "\u0631\u0648\u0627\u0646\u062f\u0627", "RU": "\u0631\u0648\u0633\u064a\u0627", "RO": "\u0631\u0648\u0645\u0627\u0646\u064a\u0627", "RE": "\u0631\u0648\u064a\u0646\u064a\u0648\u0646", "ZM": "\u0632\u0627\u0645\u0628\u064a\u0627", "ZW": "\u0632\u064a\u0645\u0628\u0627\u0628\u0648\u064a", "CI": "\u0633\u0627\u062d\u0644 \u0627\u0644\u0639\u0627\u062c", "WS": "\u0633\u0627\u0645\u0648\u0627", "AS": "\u0633\u0627\u0645\u0648\u0627 \u0627\u0644\u0623\u0645\u0631\u064a\u0643\u064a\u0629", "BL": "\u0633\u0627\u0646 \u0628\u0627\u0631\u062a\u0644\u064a\u0645\u064a", "PM": "\u0633\u0627\u0646 \u0628\u064a\u064a\u0631 \u0648\u0645\u0643\u0648\u064a\u0644\u0648\u0646", "MF": "\u0633\u0627\u0646 \u0645\u0627\u0631\u062a\u0646", "SM": "\u0633\u0627\u0646 \u0645\u0627\u0631\u064a\u0646\u0648", "VC": "\u0633\u0627\u0646\u062a \u0641\u0646\u0633\u0646\u062a \u0648\u062c\u0632\u0631 \u063a\u0631\u064a\u0646\u0627\u062f\u064a\u0646", "KN": "\u0633\u0627\u0646\u062a \u0643\u064a\u062a\u0633 \u0648\u0646\u064a\u0641\u064a\u0633", "LC": "\u0633\u0627\u0646\u062a \u0644\u0648\u0633\u064a\u0627", "SX": "\u0633\u0627\u0646\u062a \u0645\u0627\u0631\u062a\u0646", "SH": "\u0633\u0627\u0646\u062a \u0647\u064a\u0644\u064a\u0646\u0627", "ST": "\u0633\u0627\u0648 \u062a\u0648\u0645\u064a \u0648\u0628\u0631\u064a\u0646\u0633\u064a\u0628\u064a", "LK": "\u0633\u0631\u064a\u0644\u0627\u0646\u0643\u0627", "SJ": "\u0633\u0641\u0627\u0644\u0628\u0627\u0631\u062f \u0648\u062c\u0627\u0646 \u0645\u0627\u064a\u0646", "SK": "\u0633\u0644\u0648\u0641\u0627\u0643\u064a\u0627", "SI": "\u0633\u0644\u0648\u0641\u064a\u0646\u064a\u0627", "SG": "\u0633\u0646\u063a\u0627\u0641\u0648\u0631\u0629", "SY": "\u0633\u0648\u0631\u064a\u0627", "SR": "\u0633\u0648\u0631\u064a\u0646\u0627\u0645", "CH": "\u0633\u0648\u064a\u0633\u0631\u0627", "SL": "\u0633\u064a\u0631\u0627\u0644\u064a\u0648\u0646", "SC": "\u0633\u064a\u0634\u0644", "RS": "\u0635\u0631\u0628\u064a\u0627", "TJ": "\u0637\u0627\u062c\u064a\u0643\u0633\u062a\u0627\u0646", "OM": "\u0639\u064f\u0645\u0627\u0646", "GM": "\u063a\u0627\u0645\u0628\u064a\u0627", "GH": "\u063a\u0627\u0646\u0627", "GD": "\u063a\u0631\u064a\u0646\u0627\u062f\u0627", "GL": "\u063a\u0631\u064a\u0646\u0644\u0627\u0646\u062f", "GT": "\u063a\u0648\u0627\u062a\u064a\u0645\u0627\u0644\u0627", "GP": "\u063a\u0648\u0627\u062f\u0644\u0648\u0628", "GU": "\u063a\u0648\u0627\u0645", "GF": "\u063a\u0648\u064a\u0627\u0646\u0627 \u0627\u0644\u0641\u0631\u0646\u0633\u064a\u0629", "GY": "\u063a\u064a\u0627\u0646\u0627", "GG": "\u063a\u064a\u0631\u0646\u0632\u064a", "GN": "\u063a\u064a\u0646\u064a\u0627", "GQ": "\u063a\u064a\u0646\u064a\u0627 \u0627\u0644\u0627\u0633\u062a\u0648\u0627\u0626\u064a\u0629", "GW": "\u063a\u064a\u0646\u064a\u0627 \u0628\u064a\u0633\u0627\u0648", "VU": "\u0641\u0627\u0646\u0648\u0627\u062a\u0648", "FR": "\u0641\u0631\u0646\u0633\u0627", "VE": "\u0641\u0646\u0632\u0648\u064a\u0644\u0627", "FI": "\u0641\u0646\u0644\u0646\u062f\u0627", "VN": "\u0641\u064a\u062a\u0646\u0627\u0645", "FJ": "\u0641\u064a\u062c\u064a", "CY": "\u0642\u0628\u0631\u0635", "QA": "\u0642\u0637\u0631", "KG": "\u0642\u064a\u0631\u063a\u064a\u0632\u0633\u062a\u0627\u0646", "KZ": "\u0643\u0627\u0632\u0627\u062e\u0633\u062a\u0627\u0646", "NC": "\u0643\u0627\u0644\u064a\u062f\u0648\u0646\u064a\u0627 \u0627\u0644\u062c\u062f\u064a\u062f\u0629", "HR": "\u0643\u0631\u0648\u0627\u062a\u064a\u0627", "KH": "\u0643\u0645\u0628\u0648\u062f\u064a\u0627", "CA": "\u0643\u0646\u062f\u0627", "CU": "\u0643\u0648\u0628\u0627", "CW": "\u0643\u0648\u0631\u0627\u0633\u0627\u0648", "KR": "\u0643\u0648\u0631\u064a\u0627 \u0627\u0644\u062c\u0646\u0648\u0628\u064a\u0629", "KP": "\u0643\u0648\u0631\u064a\u0627 \u0627\u0644\u0634\u0645\u0627\u0644\u064a\u0629", "CR": "\u0643\u0648\u0633\u062a\u0627\u0631\u064a\u0643\u0627", "CO": "\u0643\u0648\u0644\u0648\u0645\u0628\u064a\u0627", "KI": "\u0643\u064a\u0631\u064a\u0628\u0627\u062a\u064a", "KE": "\u0643\u064a\u0646\u064a\u0627", "LV": "\u0644\u0627\u062a\u0641\u064a\u0627", "LA": "\u0644\u0627\u0648\u0633", "LB": "\u0644\u0628\u0646\u0627\u0646", "LU": "\u0644\u0648\u0643\u0633\u0645\u0628\u0648\u0631\u063a", "LY": "\u0644\u064a\u0628\u064a\u0627", "LR": "\u0644\u064a\u0628\u064a\u0631\u064a\u0627", "LT": "\u0644\u064a\u062a\u0648\u0627\u0646\u064a\u0627", "LI": "\u0644\u064a\u062e\u062a\u0646\u0634\u062a\u0627\u064a\u0646", "LS": "\u0644\u064a\u0633\u0648\u062a\u0648", "MT": "\u0645\u0627\u0644\u0637\u0627", "ML": "\u0645\u0627\u0644\u064a", "MY": "\u0645\u0627\u0644\u064a\u0632\u064a\u0627", "YT": "\u0645\u0627\u064a\u0648\u062a", "MG": "\u0645\u062f\u063a\u0634\u0642\u0631", "EG": "\u0645\u0635\u0631", "MK": "\u0645\u0642\u062f\u0648\u0646\u064a\u0627 \u0627\u0644\u0634\u0645\u0627\u0644\u064a\u0629", "MW": "\u0645\u0644\u0627\u0648\u064a", "MO": "\u0645\u0646\u0637\u0642\u0629 \u0645\u0627\u0643\u0627\u0648 \u0627\u0644\u0625\u062f\u0627\u0631\u064a\u0629 \u0627\u0644\u062e\u0627\u0635\u0629", "MN": "\u0645\u0646\u063a\u0648\u0644\u064a\u0627", "MR": "\u0645\u0648\u0631\u064a\u062a\u0627\u0646\u064a\u0627", "MU": "\u0645\u0648\u0631\u064a\u0634\u064a\u0648\u0633", "MZ": "\u0645\u0648\u0632\u0645\u0628\u064a\u0642", "MD": "\u0645\u0648\u0644\u062f\u0648\u0641\u0627", "MC": "\u0645\u0648\u0646\u0627\u0643\u0648", "MS": "\u0645\u0648\u0646\u062a\u0633\u0631\u0627\u062a", "MM": "\u0645\u064a\u0627\u0646\u0645\u0627\u0631 (\u0628\u0648\u0631\u0645\u0627)", "NA": "\u0646\u0627\u0645\u064a\u0628\u064a\u0627", "NR": "\u0646\u0627\u0648\u0631\u0648", "NP": "\u0646\u064a\u0628\u0627\u0644", "NG": "\u0646\u064a\u062c\u064a\u0631\u064a\u0627", "NI": "\u0646\u064a\u0643\u0627\u0631\u0627\u063a\u0648\u0627", "NZ": "\u0646\u064a\u0648\u0632\u064a\u0644\u0646\u062f\u0627", "NU": "\u0646\u064a\u0648\u064a", "HT": "\u0647\u0627\u064a\u062a\u064a", "HN": "\u0647\u0646\u062f\u0648\u0631\u0627\u0633", "HU": "\u0647\u0646\u063a\u0627\u0631\u064a\u0627", "NL": "\u0647\u0648\u0644\u0646\u062f\u0627", "BQ": "\u0647\u0648\u0644\u0646\u062f\u0627 \u0627\u0644\u0643\u0627\u0631\u064a\u0628\u064a\u0629", "HK": "\u0647\u0648\u0646\u063a \u0643\u0648\u0646\u063a \u0627\u0644\u0635\u064a\u0646\u064a\u0629 (\u0645\u0646\u0637\u0642\u0629 \u0625\u062f\u0627\u0631\u064a\u0629 \u062e\u0627\u0635\u0629)"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/be.json000066400000000000000000000403211521174352300276470ustar00rootroot00000000000000{"AE": "\u0410\u0431\u2019\u044f\u0434\u043d\u0430\u043d\u044b\u044f \u0410\u0440\u0430\u0431\u0441\u043a\u0456\u044f \u042d\u043c\u0456\u0440\u0430\u0442\u044b", "AZ": "\u0410\u0437\u0435\u0440\u0431\u0430\u0439\u0434\u0436\u0430\u043d", "AX": "\u0410\u043b\u0430\u043d\u0434\u0441\u043a\u0456\u044f \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "AL": "\u0410\u043b\u0431\u0430\u043d\u0456\u044f", "DZ": "\u0410\u043b\u0436\u044b\u0440", "OM": "\u0410\u043c\u0430\u043d", "AS": "\u0410\u043c\u0435\u0440\u044b\u043a\u0430\u043d\u0441\u043a\u0430\u0435 \u0421\u0430\u043c\u043e\u0430", "VI": "\u0410\u043c\u0435\u0440\u044b\u043a\u0430\u043d\u0441\u043a\u0456\u044f \u0412\u0456\u0440\u0433\u0456\u043d\u0441\u043a\u0456\u044f \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "AI": "\u0410\u043d\u0433\u0456\u043b\u044c\u044f", "AO": "\u0410\u043d\u0433\u043e\u043b\u0430", "AD": "\u0410\u043d\u0434\u043e\u0440\u0430", "AQ": "\u0410\u043d\u0442\u0430\u0440\u043a\u0442\u044b\u043a\u0430", "AG": "\u0410\u043d\u0442\u044b\u0433\u0443\u0430 \u0456 \u0411\u0430\u0440\u0431\u0443\u0434\u0430", "AR": "\u0410\u0440\u0433\u0435\u043d\u0446\u0456\u043d\u0430", "AM": "\u0410\u0440\u043c\u0435\u043d\u0456\u044f", "AW": "\u0410\u0440\u0443\u0431\u0430", "CK": "\u0410\u0441\u0442\u0440\u0430\u0432\u044b \u041a\u0443\u043a\u0430", "PN": "\u0410\u0441\u0442\u0440\u0430\u0432\u044b \u041f\u0456\u0442\u043a\u044d\u0440\u043d", "HM": "\u0410\u0441\u0442\u0440\u0430\u0432\u044b \u0425\u0435\u0440\u0434 \u0456 \u041c\u0430\u043a\u0434\u043e\u043d\u0430\u043b\u044c\u0434", "TC": "\u0410\u0441\u0442\u0440\u0430\u0432\u044b \u0426\u0451\u0440\u043a\u0441 \u0456 \u041a\u0430\u0439\u043a\u0430\u0441", "AU": "\u0410\u045e\u0441\u0442\u0440\u0430\u043b\u0456\u044f", "AT": "\u0410\u045e\u0441\u0442\u0440\u044b\u044f", "AF": "\u0410\u0444\u0433\u0430\u043d\u0456\u0441\u0442\u0430\u043d", "BS": "\u0411\u0430\u0433\u0430\u043c\u0441\u043a\u0456\u044f \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "BG": "\u0411\u0430\u043b\u0433\u0430\u0440\u044b\u044f", "BO": "\u0411\u0430\u043b\u0456\u0432\u0456\u044f", "BD": "\u0411\u0430\u043d\u0433\u043b\u0430\u0434\u044d\u0448", "BB": "\u0411\u0430\u0440\u0431\u0430\u0434\u0430\u0441", "BW": "\u0411\u0430\u0442\u0441\u0432\u0430\u043d\u0430", "BH": "\u0411\u0430\u0445\u0440\u044d\u0439\u043d", "BY": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u044c", "BZ": "\u0411\u0435\u043b\u0456\u0437", "BE": "\u0411\u0435\u043b\u044c\u0433\u0456\u044f", "BJ": "\u0411\u0435\u043d\u0456\u043d", "BM": "\u0411\u0435\u0440\u043c\u0443\u0434\u0441\u043a\u0456\u044f \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "BA": "\u0411\u043e\u0441\u043d\u0456\u044f \u0456 \u0413\u0435\u0440\u0446\u0430\u0433\u0430\u0432\u0456\u043d\u0430", "BR": "\u0411\u0440\u0430\u0437\u0456\u043b\u0456\u044f", "BN": "\u0411\u0440\u0443\u043d\u0435\u0439", "IO": "\u0411\u0440\u044b\u0442\u0430\u043d\u0441\u043a\u0430\u044f \u0442\u044d\u0440\u044b\u0442\u043e\u0440\u044b\u044f \u045e \u0406\u043d\u0434\u044b\u0439\u0441\u043a\u0456\u043c \u0430\u043a\u0456\u044f\u043d\u0435", "VG": "\u0411\u0440\u044b\u0442\u0430\u043d\u0441\u043a\u0456\u044f \u0412\u0456\u0440\u0433\u0456\u043d\u0441\u043a\u0456\u044f \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "BF": "\u0411\u0443\u0440\u043a\u0456\u043d\u0430-\u0424\u0430\u0441\u043e", "BI": "\u0411\u0443\u0440\u0443\u043d\u0434\u0437\u0456", "BT": "\u0411\u0443\u0442\u0430\u043d", "VN": "\u0412\u2019\u0435\u0442\u043d\u0430\u043c", "VU": "\u0412\u0430\u043d\u0443\u0430\u0442\u0443", "VA": "\u0412\u0430\u0442\u044b\u043a\u0430\u043d", "HU": "\u0412\u0435\u043d\u0433\u0440\u044b\u044f", "VE": "\u0412\u0435\u043d\u0435\u0441\u0443\u044d\u043b\u0430", "BV": "\u0412\u043e\u0441\u0442\u0440\u0430\u045e \u0411\u0443\u0432\u044d", "CX": "\u0412\u043e\u0441\u0442\u0440\u0430\u045e \u041a\u0430\u043b\u044f\u0434", "IM": "\u0412\u043e\u0441\u0442\u0440\u0430\u045e \u041c\u044d\u043d", "NF": "\u0412\u043e\u0441\u0442\u0440\u0430\u045e \u041d\u043e\u0440\u0444\u0430\u043b\u043a", "SH": "\u0412\u043e\u0441\u0442\u0440\u0430\u045e \u0421\u0432\u044f\u0442\u043e\u0439 \u0410\u043b\u0435\u043d\u044b", "GB": "\u0412\u044f\u043b\u0456\u043a\u0430\u0431\u0440\u044b\u0442\u0430\u043d\u0456\u044f", "GA": "\u0413\u0430\u0431\u043e\u043d", "HT": "\u0413\u0430\u0456\u0446\u0456", "GM": "\u0413\u0430\u043c\u0431\u0456\u044f", "GH": "\u0413\u0430\u043d\u0430", "HN": "\u0413\u0430\u043d\u0434\u0443\u0440\u0430\u0441", "HK": "\u0413\u0430\u043d\u043a\u043e\u043d\u0433, \u0421\u0410\u0420 (\u041a\u0456\u0442\u0430\u0439)", "GY": "\u0413\u0430\u044f\u043d\u0430", "GP": "\u0413\u0432\u0430\u0434\u044d\u043b\u0443\u043f\u0430", "GT": "\u0413\u0432\u0430\u0442\u044d\u043c\u0430\u043b\u0430", "GN": "\u0413\u0432\u0456\u043d\u0435\u044f", "GW": "\u0413\u0432\u0456\u043d\u0435\u044f-\u0411\u0456\u0441\u0430\u0443", "DE": "\u0413\u0435\u0440\u043c\u0430\u043d\u0456\u044f", "GG": "\u0413\u0435\u0440\u043d\u0441\u0456", "GI": "\u0413\u0456\u0431\u0440\u0430\u043b\u0442\u0430\u0440", "GE": "\u0413\u0440\u0443\u0437\u0456\u044f", "GD": "\u0413\u0440\u044d\u043d\u0430\u0434\u0430", "GL": "\u0413\u0440\u044d\u043d\u043b\u0430\u043d\u0434\u044b\u044f", "GR": "\u0413\u0440\u044d\u0446\u044b\u044f", "GU": "\u0413\u0443\u0430\u043c", "DM": "\u0414\u0430\u043c\u0456\u043d\u0456\u043a\u0430", "DO": "\u0414\u0430\u043c\u0456\u043d\u0456\u043a\u0430\u043d\u0441\u043a\u0430\u044f \u0420\u044d\u0441\u043f\u0443\u0431\u043b\u0456\u043a\u0430", "DK": "\u0414\u0430\u043d\u0456\u044f", "DJ": "\u0414\u0436\u044b\u0431\u0443\u0446\u0456", "EG": "\u0415\u0433\u0456\u043f\u0435\u0442", "YE": "\u0415\u043c\u0435\u043d", "ZM": "\u0417\u0430\u043c\u0431\u0456\u044f", "EH": "\u0417\u0430\u0445\u043e\u0434\u043d\u044f\u044f \u0421\u0430\u0445\u0430\u0440\u0430", "ZW": "\u0417\u0456\u043c\u0431\u0430\u0431\u0432\u044d", "US": "\u0417\u043b\u0443\u0447\u0430\u043d\u044b\u044f \u0428\u0442\u0430\u0442\u044b", "JO": "\u0406\u0430\u0440\u0434\u0430\u043d\u0456\u044f", "IL": "\u0406\u0437\u0440\u0430\u0456\u043b\u044c", "ID": "\u0406\u043d\u0434\u0430\u043d\u0435\u0437\u0456\u044f", "IN": "\u0406\u043d\u0434\u044b\u044f", "IQ": "\u0406\u0440\u0430\u043a", "IR": "\u0406\u0440\u0430\u043d", "IE": "\u0406\u0440\u043b\u0430\u043d\u0434\u044b\u044f", "IS": "\u0406\u0441\u043b\u0430\u043d\u0434\u044b\u044f", "ES": "\u0406\u0441\u043f\u0430\u043d\u0456\u044f", "IT": "\u0406\u0442\u0430\u043b\u0456\u044f", "CV": "\u041a\u0430\u0431\u0430-\u0412\u0435\u0440\u0434\u044d", "KZ": "\u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d", "KY": "\u041a\u0430\u0439\u043c\u0430\u043d\u0430\u0432\u044b \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "CC": "\u041a\u0430\u043a\u043e\u0441\u0430\u0432\u044b\u044f (\u041a\u0456\u043b\u0456\u043d\u0433) \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "CO": "\u041a\u0430\u043b\u0443\u043c\u0431\u0456\u044f", "KH": "\u041a\u0430\u043c\u0431\u043e\u0434\u0436\u0430", "CM": "\u041a\u0430\u043c\u0435\u0440\u0443\u043d", "KM": "\u041a\u0430\u043c\u043e\u0440\u0441\u043a\u0456\u044f \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "CA": "\u041a\u0430\u043d\u0430\u0434\u0430", "BQ": "\u041a\u0430\u0440\u044b\u0431\u0441\u043a\u0456\u044f \u041d\u0456\u0434\u044d\u0440\u043b\u0430\u043d\u0434\u044b", "QA": "\u041a\u0430\u0442\u0430\u0440", "KE": "\u041a\u0435\u043d\u0456\u044f", "CY": "\u041a\u0456\u043f\u0440", "KI": "\u041a\u0456\u0440\u044b\u0431\u0430\u0446\u0456", "CN": "\u041a\u0456\u0442\u0430\u0439", "CG": "\u041a\u043e\u043d\u0433\u0430 - \u0411\u0440\u0430\u0437\u0430\u0432\u0456\u043b\u044c", "CD": "\u041a\u043e\u043d\u0433\u0430 (\u041a\u0456\u043d\u0448\u0430\u0441\u0430)", "CR": "\u041a\u043e\u0441\u0442\u0430-\u0420\u044b\u043a\u0430", "CI": "\u041a\u043e\u0442-\u0434\u2019\u0406\u0432\u0443\u0430\u0440", "CU": "\u041a\u0443\u0431\u0430", "KW": "\u041a\u0443\u0432\u0435\u0439\u0442", "KG": "\u041a\u044b\u0440\u0433\u044b\u0437\u0441\u0442\u0430\u043d", "CW": "\u041a\u044e\u0440\u0430\u0441\u0430\u0430", "LA": "\u041b\u0430\u043e\u0441", "LV": "\u041b\u0430\u0442\u0432\u0456\u044f", "LS": "\u041b\u0435\u0441\u043e\u0442\u0430", "LR": "\u041b\u0456\u0431\u0435\u0440\u044b\u044f", "LB": "\u041b\u0456\u0432\u0430\u043d", "LY": "\u041b\u0456\u0432\u0456\u044f", "LT": "\u041b\u0456\u0442\u0432\u0430", "LI": "\u041b\u0456\u0445\u0442\u044d\u043d\u0448\u0442\u044d\u0439\u043d", "LU": "\u041b\u044e\u043a\u0441\u0435\u043c\u0431\u0443\u0440\u0433", "MM": "\u041c\u2019\u044f\u043d\u043c\u0430 (\u0411\u0456\u0440\u043c\u0430)", "MG": "\u041c\u0430\u0434\u0430\u0433\u0430\u0441\u043a\u0430\u0440", "YT": "\u041c\u0430\u0451\u0442\u0430", "MZ": "\u041c\u0430\u0437\u0430\u043c\u0431\u0456\u043a", "MO": "\u041c\u0430\u043a\u0430\u0430, \u0421\u0410\u0420 (\u041a\u0456\u0442\u0430\u0439)", "MW": "\u041c\u0430\u043b\u0430\u0432\u0456", "MY": "\u041c\u0430\u043b\u0430\u0439\u0437\u0456\u044f", "MD": "\u041c\u0430\u043b\u0434\u043e\u0432\u0430", "ML": "\u041c\u0430\u043b\u0456", "MV": "\u041c\u0430\u043b\u044c\u0434\u044b\u0432\u044b", "MT": "\u041c\u0430\u043b\u044c\u0442\u0430", "MC": "\u041c\u0430\u043d\u0430\u043a\u0430", "MN": "\u041c\u0430\u043d\u0433\u043e\u043b\u0456\u044f", "MS": "\u041c\u0430\u043d\u0442\u0441\u0435\u0440\u0430\u0442", "MA": "\u041c\u0430\u0440\u043e\u043a\u0430", "MQ": "\u041c\u0430\u0440\u0446\u0456\u043d\u0456\u043a\u0430", "MU": "\u041c\u0430\u045e\u0440\u044b\u043a\u0456\u0439", "MR": "\u041c\u0430\u045e\u0440\u044b\u0442\u0430\u043d\u0456\u044f", "MX": "\u041c\u0435\u043a\u0441\u0456\u043a\u0430", "NA": "\u041d\u0430\u043c\u0456\u0431\u0456\u044f", "NO": "\u041d\u0430\u0440\u0432\u0435\u0433\u0456\u044f", "NR": "\u041d\u0430\u0443\u0440\u0443", "NP": "\u041d\u0435\u043f\u0430\u043b", "NE": "\u041d\u0456\u0433\u0435\u0440", "NG": "\u041d\u0456\u0433\u0435\u0440\u044b\u044f", "NL": "\u041d\u0456\u0434\u044d\u0440\u043b\u0430\u043d\u0434\u044b", "NI": "\u041d\u0456\u043a\u0430\u0440\u0430\u0433\u0443\u0430", "NU": "\u041d\u0456\u0443\u044d", "NZ": "\u041d\u043e\u0432\u0430\u044f \u0417\u0435\u043b\u0430\u043d\u0434\u044b\u044f", "NC": "\u041d\u043e\u0432\u0430\u044f \u041a\u0430\u043b\u0435\u0434\u043e\u043d\u0456\u044f", "PK": "\u041f\u0430\u043a\u0456\u0441\u0442\u0430\u043d", "PW": "\u041f\u0430\u043b\u0430\u0443", "PA": "\u041f\u0430\u043d\u0430\u043c\u0430", "PG": "\u041f\u0430\u043f\u0443\u0430-\u041d\u043e\u0432\u0430\u044f \u0413\u0432\u0456\u043d\u0435\u044f", "PY": "\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439", "PT": "\u041f\u0430\u0440\u0442\u0443\u0433\u0430\u043b\u0456\u044f", "ZA": "\u041f\u0430\u045e\u0434\u043d\u0451\u0432\u0430-\u0410\u0444\u0440\u044b\u043a\u0430\u043d\u0441\u043a\u0430\u044f \u0420\u044d\u0441\u043f\u0443\u0431\u043b\u0456\u043a\u0430", "GS": "\u041f\u0430\u045e\u0434\u043d\u0451\u0432\u0430\u044f \u0413\u0435\u043e\u0440\u0433\u0456\u044f \u0456 \u041f\u0430\u045e\u0434\u043d\u0451\u0432\u044b\u044f \u0421\u0430\u043d\u0434\u0432\u0456\u0447\u0430\u0432\u044b \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "KR": "\u041f\u0430\u045e\u0434\u043d\u0451\u0432\u0430\u044f \u041a\u0430\u0440\u044d\u044f", "SS": "\u041f\u0430\u045e\u0434\u043d\u0451\u0432\u044b \u0421\u0443\u0434\u0430\u043d", "KP": "\u041f\u0430\u045e\u043d\u043e\u0447\u043d\u0430\u044f \u041a\u0430\u0440\u044d\u044f", "MK": "\u041f\u0430\u045e\u043d\u043e\u0447\u043d\u0430\u044f \u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0456\u044f", "PE": "\u041f\u0435\u0440\u0443", "PL": "\u041f\u043e\u043b\u044c\u0448\u0447\u0430", "PR": "\u041f\u0443\u044d\u0440\u0442\u0430-\u0420\u044b\u043a\u0430", "RU": "\u0420\u0430\u0441\u0456\u044f", "RW": "\u0420\u0443\u0430\u043d\u0434\u0430", "RO": "\u0420\u0443\u043c\u044b\u043d\u0456\u044f", "RE": "\u0420\u044d\u044e\u043d\u044c\u0451\u043d", "SB": "\u0421\u0430\u043b\u0430\u043c\u043e\u043d\u0430\u0432\u044b \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "SV": "\u0421\u0430\u043b\u044c\u0432\u0430\u0434\u043e\u0440", "SO": "\u0421\u0430\u043c\u0430\u043b\u0456", "WS": "\u0421\u0430\u043c\u043e\u0430", "SM": "\u0421\u0430\u043d-\u041c\u0430\u0440\u044b\u043d\u0430", "ST": "\u0421\u0430\u043d-\u0422\u0430\u043c\u044d \u0456 \u041f\u0440\u044b\u043d\u0441\u0456\u043f\u0456", "SA": "\u0421\u0430\u0443\u0434\u0430\u045e\u0441\u043a\u0430\u044f \u0410\u0440\u0430\u0432\u0456\u044f", "SC": "\u0421\u0435\u0439\u0448\u044d\u043b\u044c\u0441\u043a\u0456\u044f \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "BL": "\u0421\u0435\u043d-\u0411\u0430\u0440\u0442\u044d\u043b\u044c\u043c\u0456", "MF": "\u0421\u0435\u043d-\u041c\u0430\u0440\u0442\u044d\u043d", "PM": "\u0421\u0435\u043d-\u041f\u2019\u0435\u0440 \u0456 \u041c\u0456\u043a\u0435\u043b\u043e\u043d", "SN": "\u0421\u0435\u043d\u0435\u0433\u0430\u043b", "VC": "\u0421\u0435\u043d\u0442-\u0412\u0456\u043d\u0441\u0435\u043d\u0442 \u0456 \u0413\u0440\u044d\u043d\u0430\u0434\u0437\u0456\u043d\u044b", "KN": "\u0421\u0435\u043d\u0442-\u041a\u0456\u0442\u0441 \u0456 \u041d\u0435\u0432\u0456\u0441", "LC": "\u0421\u0435\u043d\u0442-\u041b\u044e\u0441\u0456\u044f", "RS": "\u0421\u0435\u0440\u0431\u0456\u044f", "SG": "\u0421\u0456\u043d\u0433\u0430\u043f\u0443\u0440", "SX": "\u0421\u0456\u043d\u0442-\u041c\u0430\u0440\u0442\u044d\u043d", "SY": "\u0421\u0456\u0440\u044b\u044f", "SK": "\u0421\u043b\u0430\u0432\u0430\u043a\u0456\u044f", "SI": "\u0421\u043b\u0430\u0432\u0435\u043d\u0456\u044f", "SD": "\u0421\u0443\u0434\u0430\u043d", "SR": "\u0421\u0443\u0440\u044b\u043d\u0430\u043c", "SL": "\u0421\u044c\u0435\u0440\u0430-\u041b\u0435\u043e\u043d\u044d", "TJ": "\u0422\u0430\u0434\u0436\u044b\u043a\u0456\u0441\u0442\u0430\u043d", "TW": "\u0422\u0430\u0439\u0432\u0430\u043d\u044c", "TH": "\u0422\u0430\u0439\u043b\u0430\u043d\u0434", "TK": "\u0422\u0430\u043a\u0435\u043b\u0430\u0443", "TZ": "\u0422\u0430\u043d\u0437\u0430\u043d\u0456\u044f", "TG": "\u0422\u043e\u0433\u0430", "TO": "\u0422\u043e\u043d\u0433\u0430", "TT": "\u0422\u0440\u044b\u043d\u0456\u0434\u0430\u0434 \u0456 \u0422\u0430\u0431\u0430\u0433\u0430", "TN": "\u0422\u0443\u043d\u0456\u0441", "TM": "\u0422\u0443\u0440\u043a\u043c\u0435\u043d\u0456\u0441\u0442\u0430\u043d", "TR": "\u0422\u0443\u0440\u0446\u044b\u044f", "TL": "\u0422\u044b\u043c\u043e\u0440-\u041b\u0435\u0448\u0446\u0456", "UG": "\u0423\u0433\u0430\u043d\u0434\u0430", "UZ": "\u0423\u0437\u0431\u0435\u043a\u0456\u0441\u0442\u0430\u043d", "UA": "\u0423\u043a\u0440\u0430\u0456\u043d\u0430", "WF": "\u0423\u043e\u043b\u0456\u0441 \u0456 \u0424\u0443\u0442\u0443\u043d\u0430", "UY": "\u0423\u0440\u0443\u0433\u0432\u0430\u0439", "FK": "\u0424\u0430\u043b\u043a\u043b\u0435\u043d\u0434\u0441\u043a\u0456\u044f \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "FO": "\u0424\u0430\u0440\u044d\u0440\u0441\u043a\u0456\u044f \u0430\u0441\u0442\u0440\u0430\u0432\u044b", "FJ": "\u0424\u0456\u0434\u0436\u044b", "PH": "\u0424\u0456\u043b\u0456\u043f\u0456\u043d\u044b", "FI": "\u0424\u0456\u043d\u043b\u044f\u043d\u0434\u044b\u044f", "GF": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0430\u044f \u0413\u0432\u0456\u044f\u043d\u0430", "PF": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0430\u044f \u041f\u0430\u043b\u0456\u043d\u0435\u0437\u0456\u044f", "TF": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0456\u044f \u043f\u0430\u045e\u0434\u043d\u0451\u0432\u044b\u044f \u0442\u044d\u0440\u044b\u0442\u043e\u0440\u044b\u0456", "FR": "\u0424\u0440\u0430\u043d\u0446\u044b\u044f", "HR": "\u0425\u0430\u0440\u0432\u0430\u0442\u044b\u044f", "CF": "\u0426\u044d\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430-\u0410\u0444\u0440\u044b\u043a\u0430\u043d\u0441\u043a\u0430\u044f \u0420\u044d\u0441\u043f\u0443\u0431\u043b\u0456\u043a\u0430", "TD": "\u0427\u0430\u0434", "ME": "\u0427\u0430\u0440\u043d\u0430\u0433\u043e\u0440\u044b\u044f", "CL": "\u0427\u044b\u043b\u0456", "CZ": "\u0427\u044d\u0445\u0456\u044f", "CH": "\u0428\u0432\u0435\u0439\u0446\u0430\u0440\u044b\u044f", "SE": "\u0428\u0432\u0435\u0446\u044b\u044f", "SJ": "\u0428\u043f\u0456\u0446\u0431\u0435\u0440\u0433\u0435\u043d \u0456 \u042f\u043d-\u041c\u0430\u0435\u043d", "LK": "\u0428\u0440\u044b-\u041b\u0430\u043d\u043a\u0430", "EC": "\u042d\u043a\u0432\u0430\u0434\u043e\u0440", "GQ": "\u042d\u043a\u0432\u0430\u0442\u0430\u0440\u044b\u044f\u043b\u044c\u043d\u0430\u044f \u0413\u0432\u0456\u043d\u0435\u044f", "ER": "\u042d\u0440\u044b\u0442\u0440\u044d\u044f", "SZ": "\u042d\u0441\u0432\u0430\u0442\u044b\u043d\u0456", "EE": "\u042d\u0441\u0442\u043e\u043d\u0456\u044f", "ET": "\u042d\u0444\u0456\u043e\u043f\u0456\u044f", "JM": "\u042f\u043c\u0430\u0439\u043a\u0430", "JP": "\u042f\u043f\u043e\u043d\u0456\u044f"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/bg.json000066400000000000000000000373431521174352300276630ustar00rootroot00000000000000{"AU": "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f", "AT": "\u0410\u0432\u0441\u0442\u0440\u0438\u044f", "AZ": "\u0410\u0437\u0435\u0440\u0431\u0430\u0439\u0434\u0436\u0430\u043d", "AL": "\u0410\u043b\u0431\u0430\u043d\u0438\u044f", "DZ": "\u0410\u043b\u0436\u0438\u0440", "AS": "\u0410\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0430 \u0421\u0430\u043c\u043e\u0430", "VI": "\u0410\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438 \u0412\u0438\u0440\u0434\u0436\u0438\u043d\u0441\u043a\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "AO": "\u0410\u043d\u0433\u043e\u043b\u0430", "AI": "\u0410\u043d\u0433\u0443\u0438\u043b\u0430", "AD": "\u0410\u043d\u0434\u043e\u0440\u0430", "AQ": "\u0410\u043d\u0442\u0430\u0440\u043a\u0442\u0438\u043a\u0430", "AG": "\u0410\u043d\u0442\u0438\u0433\u0443\u0430 \u0438 \u0411\u0430\u0440\u0431\u0443\u0434\u0430", "AR": "\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430", "AM": "\u0410\u0440\u043c\u0435\u043d\u0438\u044f", "AW": "\u0410\u0440\u0443\u0431\u0430", "AF": "\u0410\u0444\u0433\u0430\u043d\u0438\u0441\u0442\u0430\u043d", "BD": "\u0411\u0430\u043d\u0433\u043b\u0430\u0434\u0435\u0448", "BB": "\u0411\u0430\u0440\u0431\u0430\u0434\u043e\u0441", "BS": "\u0411\u0430\u0445\u0430\u043c\u0441\u043a\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "BH": "\u0411\u0430\u0445\u0440\u0435\u0439\u043d", "BY": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441", "BE": "\u0411\u0435\u043b\u0433\u0438\u044f", "BZ": "\u0411\u0435\u043b\u0438\u0437", "BJ": "\u0411\u0435\u043d\u0438\u043d", "BM": "\u0411\u0435\u0440\u043c\u0443\u0434\u0441\u043a\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "BO": "\u0411\u043e\u043b\u0438\u0432\u0438\u044f", "BA": "\u0411\u043e\u0441\u043d\u0430 \u0438 \u0425\u0435\u0440\u0446\u0435\u0433\u043e\u0432\u0438\u043d\u0430", "BW": "\u0411\u043e\u0442\u0441\u0432\u0430\u043d\u0430", "BR": "\u0411\u0440\u0430\u0437\u0438\u043b\u0438\u044f", "IO": "\u0411\u0440\u0438\u0442\u0430\u043d\u0441\u043a\u0430 \u0442\u0435\u0440\u0438\u0442\u043e\u0440\u0438\u044f \u0432 \u0418\u043d\u0434\u0438\u0439\u0441\u043a\u0438\u044f \u043e\u043a\u0435\u0430\u043d", "VG": "\u0411\u0440\u0438\u0442\u0430\u043d\u0441\u043a\u0438 \u0412\u0438\u0440\u0434\u0436\u0438\u043d\u0441\u043a\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "BN": "\u0411\u0440\u0443\u043d\u0435\u0439 \u0414\u0430\u0440\u0443\u0441\u0441\u0430\u043b\u0430\u043c", "BF": "\u0411\u0443\u0440\u043a\u0438\u043d\u0430 \u0424\u0430\u0441\u043e", "BI": "\u0411\u0443\u0440\u0443\u043d\u0434\u0438", "BT": "\u0411\u0443\u0442\u0430\u043d", "BG": "\u0411\u044a\u043b\u0433\u0430\u0440\u0438\u044f", "VU": "\u0412\u0430\u043d\u0443\u0430\u0442\u0443", "VA": "\u0412\u0430\u0442\u0438\u043a\u0430\u043d", "VE": "\u0412\u0435\u043d\u0435\u0446\u0443\u0435\u043b\u0430", "VN": "\u0412\u0438\u0435\u0442\u043d\u0430\u043c", "GA": "\u0413\u0430\u0431\u043e\u043d", "GM": "\u0413\u0430\u043c\u0431\u0438\u044f", "GH": "\u0413\u0430\u043d\u0430", "GY": "\u0413\u0430\u044f\u043d\u0430", "GP": "\u0413\u0432\u0430\u0434\u0435\u043b\u0443\u043f\u0430", "GT": "\u0413\u0432\u0430\u0442\u0435\u043c\u0430\u043b\u0430", "GN": "\u0413\u0432\u0438\u043d\u0435\u044f", "GW": "\u0413\u0432\u0438\u043d\u0435\u044f-\u0411\u0438\u0441\u0430\u0443", "DE": "\u0413\u0435\u0440\u043c\u0430\u043d\u0438\u044f", "GI": "\u0413\u0438\u0431\u0440\u0430\u043b\u0442\u0430\u0440", "GD": "\u0413\u0440\u0435\u043d\u0430\u0434\u0430", "GL": "\u0413\u0440\u0435\u043d\u043b\u0430\u043d\u0434\u0438\u044f", "GE": "\u0413\u0440\u0443\u0437\u0438\u044f", "GU": "\u0413\u0443\u0430\u043c", "GG": "\u0413\u044a\u0440\u043d\u0437\u0438", "GR": "\u0413\u044a\u0440\u0446\u0438\u044f", "DK": "\u0414\u0430\u043d\u0438\u044f", "DJ": "\u0414\u0436\u0438\u0431\u0443\u0442\u0438", "DM": "\u0414\u043e\u043c\u0438\u043d\u0438\u043a\u0430", "DO": "\u0414\u043e\u043c\u0438\u043d\u0438\u043a\u0430\u043d\u0441\u043a\u0430 \u0440\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430", "EG": "\u0415\u0433\u0438\u043f\u0435\u0442", "EC": "\u0415\u043a\u0432\u0430\u0434\u043e\u0440", "GQ": "\u0415\u043a\u0432\u0430\u0442\u043e\u0440\u0438\u0430\u043b\u043d\u0430 \u0413\u0432\u0438\u043d\u0435\u044f", "ER": "\u0415\u0440\u0438\u0442\u0440\u0435\u044f", "SZ": "\u0415\u0441\u0432\u0430\u0442\u0438\u043d\u0438", "EE": "\u0415\u0441\u0442\u043e\u043d\u0438\u044f", "ET": "\u0415\u0442\u0438\u043e\u043f\u0438\u044f", "ZM": "\u0417\u0430\u043c\u0431\u0438\u044f", "EH": "\u0417\u0430\u043f\u0430\u0434\u043d\u0430 \u0421\u0430\u0445\u0430\u0440\u0430", "ZW": "\u0417\u0438\u043c\u0431\u0430\u0431\u0432\u0435", "IL": "\u0418\u0437\u0440\u0430\u0435\u043b", "TL": "\u0418\u0437\u0442\u043e\u0447\u0435\u043d \u0422\u0438\u043c\u043e\u0440", "IN": "\u0418\u043d\u0434\u0438\u044f", "ID": "\u0418\u043d\u0434\u043e\u043d\u0435\u0437\u0438\u044f", "IQ": "\u0418\u0440\u0430\u043a", "IR": "\u0418\u0440\u0430\u043d", "IE": "\u0418\u0440\u043b\u0430\u043d\u0434\u0438\u044f", "IS": "\u0418\u0441\u043b\u0430\u043d\u0434\u0438\u044f", "ES": "\u0418\u0441\u043f\u0430\u043d\u0438\u044f", "IT": "\u0418\u0442\u0430\u043b\u0438\u044f", "YE": "\u0419\u0435\u043c\u0435\u043d", "JO": "\u0419\u043e\u0440\u0434\u0430\u043d\u0438\u044f", "CV": "\u041a\u0430\u0431\u043e \u0412\u0435\u0440\u0434\u0435", "KZ": "\u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d", "KY": "\u041a\u0430\u0439\u043c\u0430\u043d\u043e\u0432\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "KH": "\u041a\u0430\u043c\u0431\u043e\u0434\u0436\u0430", "CM": "\u041a\u0430\u043c\u0435\u0440\u0443\u043d", "CA": "\u041a\u0430\u043d\u0430\u0434\u0430", "BQ": "\u041a\u0430\u0440\u0438\u0431\u0441\u043a\u0430 \u041d\u0438\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u0438\u044f", "QA": "\u041a\u0430\u0442\u0430\u0440", "KE": "\u041a\u0435\u043d\u0438\u044f", "CY": "\u041a\u0438\u043f\u044a\u0440", "KG": "\u041a\u0438\u0440\u0433\u0438\u0437\u0441\u0442\u0430\u043d", "KI": "\u041a\u0438\u0440\u0438\u0431\u0430\u0442\u0438", "CN": "\u041a\u0438\u0442\u0430\u0439", "CC": "\u041a\u043e\u043a\u043e\u0441\u043e\u0432\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438 (\u043e\u0441\u0442\u0440\u043e\u0432\u0438 \u041a\u0438\u0439\u043b\u0438\u043d\u0433)", "CO": "\u041a\u043e\u043b\u0443\u043c\u0431\u0438\u044f", "KM": "\u041a\u043e\u043c\u043e\u0440\u0441\u043a\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "CG": "\u041a\u043e\u043d\u0433\u043e (\u0411\u0440\u0430\u0437\u0430\u0432\u0438\u043b)", "CD": "\u041a\u043e\u043d\u0433\u043e (\u041a\u0438\u043d\u0448\u0430\u0441\u0430)", "CR": "\u041a\u043e\u0441\u0442\u0430 \u0420\u0438\u043a\u0430", "CI": "\u041a\u043e\u0442 \u0434\u2019\u0418\u0432\u043e\u0430\u0440", "CU": "\u041a\u0443\u0431\u0430", "KW": "\u041a\u0443\u0432\u0435\u0439\u0442", "CW": "\u041a\u044e\u0440\u0430\u0441\u0430\u043e", "LA": "\u041b\u0430\u043e\u0441", "LV": "\u041b\u0430\u0442\u0432\u0438\u044f", "LS": "\u041b\u0435\u0441\u043e\u0442\u043e", "LR": "\u041b\u0438\u0431\u0435\u0440\u0438\u044f", "LY": "\u041b\u0438\u0431\u0438\u044f", "LB": "\u041b\u0438\u0432\u0430\u043d", "LT": "\u041b\u0438\u0442\u0432\u0430", "LI": "\u041b\u0438\u0445\u0442\u0435\u043d\u0449\u0430\u0439\u043d", "LU": "\u041b\u044e\u043a\u0441\u0435\u043c\u0431\u0443\u0440\u0433", "MR": "\u041c\u0430\u0432\u0440\u0438\u0442\u0430\u043d\u0438\u044f", "MU": "\u041c\u0430\u0432\u0440\u0438\u0446\u0438\u0439", "MG": "\u041c\u0430\u0434\u0430\u0433\u0430\u0441\u043a\u0430\u0440", "YT": "\u041c\u0430\u0439\u043e\u0442", "MO": "\u041c\u0430\u043a\u0430\u043e, \u0421\u0410\u0420 \u043d\u0430 \u041a\u0438\u0442\u0430\u0439", "MW": "\u041c\u0430\u043b\u0430\u0432\u0438", "MY": "\u041c\u0430\u043b\u0430\u0439\u0437\u0438\u044f", "MV": "\u041c\u0430\u043b\u0434\u0438\u0432\u0438", "ML": "\u041c\u0430\u043b\u0438", "MT": "\u041c\u0430\u043b\u0442\u0430", "MA": "\u041c\u0430\u0440\u043e\u043a\u043e", "MQ": "\u041c\u0430\u0440\u0442\u0438\u043d\u0438\u043a\u0430", "MX": "\u041c\u0435\u043a\u0441\u0438\u043a\u043e", "MM": "\u041c\u0438\u0430\u043d\u043c\u0430\u0440 (\u0411\u0438\u0440\u043c\u0430)", "MZ": "\u041c\u043e\u0437\u0430\u043c\u0431\u0438\u043a", "MD": "\u041c\u043e\u043b\u0434\u043e\u0432\u0430", "MC": "\u041c\u043e\u043d\u0430\u043a\u043e", "MN": "\u041c\u043e\u043d\u0433\u043e\u043b\u0438\u044f", "MS": "\u041c\u043e\u043d\u0442\u0441\u0435\u0440\u0430\u0442", "NA": "\u041d\u0430\u043c\u0438\u0431\u0438\u044f", "NR": "\u041d\u0430\u0443\u0440\u0443", "NP": "\u041d\u0435\u043f\u0430\u043b", "NE": "\u041d\u0438\u0433\u0435\u0440", "NG": "\u041d\u0438\u0433\u0435\u0440\u0438\u044f", "NL": "\u041d\u0438\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u0438\u044f", "NI": "\u041d\u0438\u043a\u0430\u0440\u0430\u0433\u0443\u0430", "NU": "\u041d\u0438\u0443\u0435", "NZ": "\u041d\u043e\u0432\u0430 \u0417\u0435\u043b\u0430\u043d\u0434\u0438\u044f", "NC": "\u041d\u043e\u0432\u0430 \u041a\u0430\u043b\u0435\u0434\u043e\u043d\u0438\u044f", "NO": "\u041d\u043e\u0440\u0432\u0435\u0433\u0438\u044f", "AE": "\u041e\u0431\u0435\u0434\u0438\u043d\u0435\u043d\u0438 \u0430\u0440\u0430\u0431\u0441\u043a\u0438 \u0435\u043c\u0438\u0440\u0441\u0442\u0432\u0430", "GB": "\u041e\u0431\u0435\u0434\u0438\u043d\u0435\u043d\u043e\u0442\u043e \u043a\u0440\u0430\u043b\u0441\u0442\u0432\u043e", "AX": "\u041e\u043b\u0430\u043d\u0434\u0441\u043a\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "OM": "\u041e\u043c\u0430\u043d", "BV": "\u043e\u0441\u0442\u0440\u043e\u0432 \u0411\u0443\u0432\u0435", "IM": "\u043e\u0441\u0442\u0440\u043e\u0432 \u041c\u0430\u043d", "NF": "\u043e\u0441\u0442\u0440\u043e\u0432 \u041d\u043e\u0440\u0444\u043e\u043b\u043a", "CX": "\u043e\u0441\u0442\u0440\u043e\u0432 \u0420\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u043e", "CK": "\u043e\u0441\u0442\u0440\u043e\u0432\u0438 \u041a\u0443\u043a", "PN": "\u041e\u0441\u0442\u0440\u043e\u0432\u0438 \u041f\u0438\u0442\u043a\u0435\u0440\u043d", "TC": "\u043e\u0441\u0442\u0440\u043e\u0432\u0438 \u0422\u044a\u0440\u043a\u0441 \u0438 \u041a\u0430\u0439\u043a\u043e\u0441", "HM": "\u043e\u0441\u0442\u0440\u043e\u0432\u0438 \u0425\u044a\u0440\u0434 \u0438 \u041c\u0430\u043a\u0434\u043e\u043d\u0430\u043b\u0434", "PK": "\u041f\u0430\u043a\u0438\u0441\u0442\u0430\u043d", "PW": "\u041f\u0430\u043b\u0430\u0443", "PA": "\u041f\u0430\u043d\u0430\u043c\u0430", "PG": "\u041f\u0430\u043f\u0443\u0430-\u041d\u043e\u0432\u0430 \u0413\u0432\u0438\u043d\u0435\u044f", "PY": "\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439", "PE": "\u041f\u0435\u0440\u0443", "PL": "\u041f\u043e\u043b\u0448\u0430", "PT": "\u041f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u0438\u044f", "PR": "\u041f\u0443\u0435\u0440\u0442\u043e \u0420\u0438\u043a\u043e", "RE": "\u0420\u0435\u044e\u043d\u0438\u043e\u043d", "RW": "\u0420\u0443\u0430\u043d\u0434\u0430", "RO": "\u0420\u0443\u043c\u044a\u043d\u0438\u044f", "RU": "\u0420\u0443\u0441\u0438\u044f", "SV": "\u0421\u0430\u043b\u0432\u0430\u0434\u043e\u0440", "WS": "\u0421\u0430\u043c\u043e\u0430", "SM": "\u0421\u0430\u043d \u041c\u0430\u0440\u0438\u043d\u043e", "ST": "\u0421\u0430\u043e \u0422\u043e\u043c\u0435 \u0438 \u041f\u0440\u0438\u043d\u0441\u0438\u043f\u0438", "SA": "\u0421\u0430\u0443\u0434\u0438\u0442\u0441\u043a\u0430 \u0410\u0440\u0430\u0431\u0438\u044f", "SJ": "\u0421\u0432\u0430\u043b\u0431\u0430\u0440\u0434 \u0438 \u042f\u043d \u041c\u0430\u0439\u0435\u043d", "SH": "\u0421\u0432\u0435\u0442\u0430 \u0415\u043b\u0435\u043d\u0430", "KP": "\u0421\u0435\u0432\u0435\u0440\u043d\u0430 \u041a\u043e\u0440\u0435\u044f", "MK": "\u0421\u0435\u0432\u0435\u0440\u043d\u0430 \u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0438\u044f", "VC": "\u0421\u0435\u0439\u043d\u0442 \u0412\u0438\u043d\u0441\u044a\u043d\u0442 \u0438 \u0413\u0440\u0435\u043d\u0430\u0434\u0438\u043d\u0438", "KN": "\u0421\u0435\u0439\u043d\u0442 \u041a\u0438\u0442\u0441 \u0438 \u041d\u0435\u0432\u0438\u0441", "LC": "\u0421\u0435\u0439\u043d\u0442 \u041b\u0443\u0441\u0438\u044f", "SC": "\u0421\u0435\u0439\u0448\u0435\u043b\u0438", "BL": "\u0421\u0435\u043d \u0411\u0430\u0440\u0442\u0435\u043b\u0435\u043c\u0438", "MF": "\u0421\u0435\u043d \u041c\u0430\u0440\u0442\u0435\u043d", "PM": "\u0421\u0435\u043d \u041f\u0438\u0435\u0440 \u0438 \u041c\u0438\u043a\u0435\u043b\u043e\u043d", "SN": "\u0421\u0435\u043d\u0435\u0433\u0430\u043b", "SL": "\u0421\u0438\u0435\u0440\u0430 \u041b\u0435\u043e\u043d\u0435", "SG": "\u0421\u0438\u043d\u0433\u0430\u043f\u0443\u0440", "SX": "\u0421\u0438\u043d\u0442 \u041c\u0430\u0440\u0442\u0435\u043d", "SY": "\u0421\u0438\u0440\u0438\u044f", "SK": "\u0421\u043b\u043e\u0432\u0430\u043a\u0438\u044f", "SI": "\u0421\u043b\u043e\u0432\u0435\u043d\u0438\u044f", "SB": "\u0421\u043e\u043b\u043e\u043c\u043e\u043d\u043e\u0432\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "SO": "\u0421\u043e\u043c\u0430\u043b\u0438\u044f", "SD": "\u0421\u0443\u0434\u0430\u043d", "SR": "\u0421\u0443\u0440\u0438\u043d\u0430\u043c", "US": "\u0421\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438 \u0449\u0430\u0442\u0438", "RS": "\u0421\u044a\u0440\u0431\u0438\u044f", "TJ": "\u0422\u0430\u0434\u0436\u0438\u043a\u0438\u0441\u0442\u0430\u043d", "TW": "\u0422\u0430\u0439\u0432\u0430\u043d", "TH": "\u0422\u0430\u0439\u043b\u0430\u043d\u0434", "TZ": "\u0422\u0430\u043d\u0437\u0430\u043d\u0438\u044f", "TG": "\u0422\u043e\u0433\u043e", "TK": "\u0422\u043e\u043a\u0435\u043b\u0430\u0443", "TO": "\u0422\u043e\u043d\u0433\u0430", "TT": "\u0422\u0440\u0438\u043d\u0438\u0434\u0430\u0434 \u0438 \u0422\u043e\u0431\u0430\u0433\u043e", "TN": "\u0422\u0443\u043d\u0438\u0441", "TM": "\u0422\u0443\u0440\u043a\u043c\u0435\u043d\u0438\u0441\u0442\u0430\u043d", "TR": "\u0422\u0443\u0440\u0446\u0438\u044f", "UG": "\u0423\u0433\u0430\u043d\u0434\u0430", "UZ": "\u0423\u0437\u0431\u0435\u043a\u0438\u0441\u0442\u0430\u043d", "UA": "\u0423\u043a\u0440\u0430\u0439\u043d\u0430", "HU": "\u0423\u043d\u0433\u0430\u0440\u0438\u044f", "WF": "\u0423\u043e\u043b\u0438\u0441 \u0438 \u0424\u0443\u0442\u0443\u043d\u0430", "UY": "\u0423\u0440\u0443\u0433\u0432\u0430\u0439", "FO": "\u0424\u0430\u0440\u044c\u043e\u0440\u0441\u043a\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "FJ": "\u0424\u0438\u0434\u0436\u0438", "PH": "\u0424\u0438\u043b\u0438\u043f\u0438\u043d\u0438", "FI": "\u0424\u0438\u043d\u043b\u0430\u043d\u0434\u0438\u044f", "FK": "\u0424\u043e\u043b\u043a\u043b\u0430\u043d\u0434\u0441\u043a\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "FR": "\u0424\u0440\u0430\u043d\u0446\u0438\u044f", "GF": "\u0424\u0440\u0435\u043d\u0441\u043a\u0430 \u0413\u0432\u0438\u0430\u043d\u0430", "PF": "\u0424\u0440\u0435\u043d\u0441\u043a\u0430 \u041f\u043e\u043b\u0438\u043d\u0435\u0437\u0438\u044f", "TF": "\u0424\u0440\u0435\u043d\u0441\u043a\u0438 \u044e\u0436\u043d\u0438 \u0442\u0435\u0440\u0438\u0442\u043e\u0440\u0438\u0438", "HT": "\u0425\u0430\u0438\u0442\u0438", "HN": "\u0425\u043e\u043d\u0434\u0443\u0440\u0430\u0441", "HK": "\u0425\u043e\u043d\u043a\u043e\u043d\u0433, \u0421\u0410\u0420 \u043d\u0430 \u041a\u0438\u0442\u0430\u0439", "HR": "\u0425\u044a\u0440\u0432\u0430\u0442\u0438\u044f", "CF": "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u043d\u043e\u0430\u0444\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0430 \u0440\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430", "TD": "\u0427\u0430\u0434", "ME": "\u0427\u0435\u0440\u043d\u0430 \u0433\u043e\u0440\u0430", "CZ": "\u0427\u0435\u0445\u0438\u044f", "CL": "\u0427\u0438\u043b\u0438", "CH": "\u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0438\u044f", "SE": "\u0428\u0432\u0435\u0446\u0438\u044f", "LK": "\u0428\u0440\u0438 \u041b\u0430\u043d\u043a\u0430", "SS": "\u042e\u0436\u0435\u043d \u0421\u0443\u0434\u0430\u043d", "ZA": "\u042e\u0436\u043d\u0430 \u0410\u0444\u0440\u0438\u043a\u0430", "GS": "\u042e\u0436\u043d\u0430 \u0414\u0436\u043e\u0440\u0434\u0436\u0438\u044f \u0438 \u042e\u0436\u043d\u0438 \u0421\u0430\u043d\u0434\u0432\u0438\u0447\u0435\u0432\u0438 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "KR": "\u042e\u0436\u043d\u0430 \u041a\u043e\u0440\u0435\u044f", "JM": "\u042f\u043c\u0430\u0439\u043a\u0430", "JP": "\u042f\u043f\u043e\u043d\u0438\u044f"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/bn.json000066400000000000000000000420251521174352300276630ustar00rootroot00000000000000{"AT": "\u0985\u09b8\u09cd\u099f\u09cd\u09b0\u09bf\u09af\u09bc\u09be", "AU": "\u0985\u09b8\u09cd\u099f\u09cd\u09b0\u09c7\u09b2\u09bf\u09af\u09bc\u09be", "AO": "\u0985\u09cd\u09af\u09be\u0999\u09cd\u0997\u09cb\u09b2\u09be", "AQ": "\u0985\u09cd\u09af\u09be\u09a8\u09cd\u099f\u09be\u09b0\u09cd\u0995\u099f\u09bf\u0995\u09be", "AG": "\u0985\u09cd\u09af\u09be\u09a8\u09cd\u099f\u09bf\u0997\u09c1\u09af\u09bc\u09be \u0993 \u09ac\u09be\u09b0\u09ac\u09c1\u09a1\u09be", "IM": "\u0986\u0987\u09b2 \u0985\u09ab \u09ae\u09cd\u09af\u09be\u09a8", "IS": "\u0986\u0987\u09b8\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1", "AZ": "\u0986\u099c\u09be\u09b0\u09ac\u09be\u0987\u099c\u09be\u09a8", "AD": "\u0986\u09a8\u09cd\u09a1\u09cb\u09b0\u09be", "AF": "\u0986\u09ab\u0997\u09be\u09a8\u09bf\u09b8\u09cd\u09a4\u09be\u09a8", "AS": "\u0986\u09ae\u09c7\u09b0\u09bf\u0995\u09be\u09a8 \u09b8\u09be\u09ae\u09cb\u09af\u09bc\u09be", "IE": "\u0986\u09af\u09bc\u09be\u09b0\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1", "AW": "\u0986\u09b0\u09c1\u09ac\u09be", "AR": "\u0986\u09b0\u09cd\u099c\u09c7\u09a8\u09cd\u099f\u09bf\u09a8\u09be", "AM": "\u0986\u09b0\u09cd\u09ae\u09c7\u09a8\u09bf\u09af\u09bc\u09be", "DZ": "\u0986\u09b2\u099c\u09c7\u09b0\u09bf\u09af\u09bc\u09be", "AL": "\u0986\u09b2\u09ac\u09c7\u09a8\u09bf\u09af\u09bc\u09be", "AX": "\u0986\u09b2\u09be\u09a8\u09cd\u09a1 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "UA": "\u0987\u0989\u0995\u09cd\u09b0\u09c7\u09a8", "EC": "\u0987\u0995\u09c1\u09af\u09bc\u09c7\u09a1\u09b0", "IL": "\u0987\u099c\u09b0\u09be\u09af\u09bc\u09c7\u09b2", "IT": "\u0987\u09a4\u09be\u09b2\u09bf", "ET": "\u0987\u09a5\u09bf\u0993\u09aa\u09bf\u09af\u09bc\u09be", "ID": "\u0987\u09a8\u09cd\u09a6\u09cb\u09a8\u09c7\u09b6\u09bf\u09af\u09bc\u09be", "YE": "\u0987\u09af\u09bc\u09c7\u09ae\u09c7\u09a8", "IQ": "\u0987\u09b0\u09be\u0995", "IR": "\u0987\u09b0\u09be\u09a8", "ER": "\u0987\u09b0\u09bf\u09a4\u09cd\u09b0\u09bf\u09af\u09bc\u09be", "SZ": "\u0987\u09b8\u0993\u09af\u09bc\u09be\u09a4\u09bf\u09a8\u09bf", "UG": "\u0989\u0997\u09be\u09a8\u09cd\u09a1\u09be", "UZ": "\u0989\u099c\u09ac\u09c7\u0995\u09bf\u09b8\u09cd\u09a4\u09be\u09a8", "KP": "\u0989\u09a4\u09cd\u09a4\u09b0 \u0995\u09cb\u09b0\u09bf\u09af\u09bc\u09be", "MK": "\u0989\u09a4\u09cd\u09a4\u09b0 \u09ae\u09cd\u09af\u09be\u09b8\u09c7\u09a1\u09cb\u09a8\u09bf\u09af\u09bc\u09be", "UY": "\u0989\u09b0\u09c1\u0997\u09c1\u09af\u09bc\u09c7", "SV": "\u098f\u09b2 \u09b8\u09be\u09b2\u09ad\u09c7\u09a6\u09b0", "EE": "\u098f\u09b8\u09cd\u09a4\u09cb\u09a8\u09bf\u09af\u09bc\u09be", "AI": "\u098f\u09cd\u09af\u09be\u0999\u09cd\u0997\u09c1\u0987\u09b2\u09be", "OM": "\u0993\u09ae\u09be\u09a8", "WF": "\u0993\u09af\u09bc\u09be\u09b2\u09bf\u09b8 \u0993 \u09ab\u09c1\u099f\u09c1\u09a8\u09be", "CG": "\u0995\u0999\u09cd\u0997\u09cb - \u09ac\u09cd\u09b0\u09be\u099c\u09be\u09ad\u09bf\u09b2", "CD": "\u0995\u0999\u09cd\u0997\u09cb-\u0995\u09bf\u09a8\u09b6\u09be\u09b8\u09be", "KM": "\u0995\u09ae\u09cb\u09b0\u09cb\u09b8", "KH": "\u0995\u09ae\u09cd\u09ac\u09cb\u09a1\u09bf\u09af\u09bc\u09be", "CO": "\u0995\u09b2\u09ae\u09cd\u09ac\u09bf\u09af\u09bc\u09be", "KZ": "\u0995\u09be\u099c\u09be\u0996\u09b8\u09cd\u09a4\u09be\u09a8", "QA": "\u0995\u09be\u09a4\u09be\u09b0", "CA": "\u0995\u09be\u09a8\u09be\u09a1\u09be", "CU": "\u0995\u09bf\u0989\u09ac\u09be", "KG": "\u0995\u09bf\u09b0\u0997\u09bf\u099c\u09bf\u09b8\u09cd\u09a4\u09be\u09a8", "KI": "\u0995\u09bf\u09b0\u09bf\u09ac\u09be\u09a4\u09bf", "CK": "\u0995\u09c1\u0995 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "KW": "\u0995\u09c1\u09af\u09bc\u09c7\u09a4", "CW": "\u0995\u09c1\u09b0\u09be\u09b8\u09be\u0993", "KE": "\u0995\u09c7\u09a8\u09bf\u09af\u09bc\u09be", "CV": "\u0995\u09c7\u09aa\u09ad\u09be\u09b0\u09cd\u09a6\u09c7", "KY": "\u0995\u09c7\u09ae\u09cd\u09af\u09be\u09a8 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "CC": "\u0995\u09cb\u0995\u09cb\u09b8 (\u0995\u09bf\u09b2\u09bf\u0982) \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "CI": "\u0995\u09cb\u09a4 \u09a6\u09bf\u09ad\u09cb\u09af\u09bc\u09be\u09b0", "CR": "\u0995\u09cb\u09b8\u09cd\u099f\u09be\u09b0\u09bf\u0995\u09be", "CM": "\u0995\u09cd\u09af\u09be\u09ae\u09c7\u09b0\u09c1\u09a8", "BQ": "\u0995\u09cd\u09af\u09be\u09b0\u09bf\u09ac\u09bf\u09af\u09bc\u09be\u09a8 \u09a8\u09c7\u09a6\u09be\u09b0\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1\u09b8", "CX": "\u0995\u09cd\u09b0\u09bf\u09b8\u09ae\u09be\u09b8 \u09a6\u09cd\u09ac\u09c0\u09aa", "HR": "\u0995\u09cd\u09b0\u09cb\u09af\u09bc\u09c7\u09b6\u09bf\u09af\u09bc\u09be", "GM": "\u0997\u09be\u09ae\u09cd\u09ac\u09bf\u09af\u09bc\u09be", "GN": "\u0997\u09bf\u09a8\u09bf", "GW": "\u0997\u09bf\u09a8\u09bf-\u09ac\u09bf\u09b8\u09be\u0989", "GY": "\u0997\u09bf\u09af\u09bc\u09be\u09a8\u09be", "GT": "\u0997\u09c1\u09af\u09bc\u09be\u09a4\u09c7\u09ae\u09be\u09b2\u09be", "GP": "\u0997\u09c1\u09af\u09bc\u09be\u09a6\u09c7\u09b2\u09cc\u09aa", "GU": "\u0997\u09c1\u09af\u09bc\u09be\u09ae", "GG": "\u0997\u09c1\u09af\u09bc\u09be\u09b0\u09cd\u09a8\u09b8\u09bf", "GA": "\u0997\u09cd\u09af\u09be\u09ac\u09a8", "GL": "\u0997\u09cd\u09b0\u09c0\u09a8\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1", "GR": "\u0997\u09cd\u09b0\u09c0\u09b8", "GD": "\u0997\u09cd\u09b0\u09c7\u09a8\u09be\u09a1\u09be", "GH": "\u0998\u09be\u09a8\u09be", "TD": "\u099a\u09be\u09a6", "CL": "\u099a\u09bf\u09b2\u09bf", "CN": "\u099a\u09c0\u09a8", "CZ": "\u099a\u09c7\u099a\u09bf\u09af\u09bc\u09be", "GE": "\u099c\u09b0\u09cd\u099c\u09bf\u09af\u09bc\u09be", "JO": "\u099c\u09b0\u09cd\u09a1\u09a8", "JP": "\u099c\u09be\u09aa\u09be\u09a8", "JM": "\u099c\u09be\u09ae\u09be\u0987\u0995\u09be", "ZM": "\u099c\u09be\u09ae\u09cd\u09ac\u09bf\u09af\u09bc\u09be", "DE": "\u099c\u09be\u09b0\u09cd\u09ae\u09be\u09a8\u09bf", "DJ": "\u099c\u09bf\u09ac\u09c1\u09a4\u09bf", "GI": "\u099c\u09bf\u09ac\u09cd\u09b0\u09be\u09b2\u09cd\u099f\u09be\u09b0", "ZW": "\u099c\u09bf\u09ae\u09cd\u09ac\u09be\u09ac\u09cb\u09af\u09bc\u09c7", "TK": "\u099f\u09cb\u0995\u09c7\u09b2\u09be\u0989", "TG": "\u099f\u09cb\u0997\u09cb", "TO": "\u099f\u09cb\u0999\u09cd\u0997\u09be", "DK": "\u09a1\u09c7\u09a8\u09ae\u09be\u09b0\u09cd\u0995", "DM": "\u09a1\u09cb\u09ae\u09bf\u09a8\u09bf\u0995\u09be", "DO": "\u09a1\u09cb\u09ae\u09c7\u09a8\u09bf\u0995\u09be\u09a8 \u09aa\u09cd\u09b0\u099c\u09be\u09a4\u09a8\u09cd\u09a4\u09cd\u09b0", "TW": "\u09a4\u09be\u0987\u0993\u09af\u09bc\u09be\u09a8", "TJ": "\u09a4\u09be\u099c\u09bf\u0995\u09bf\u09b8\u09cd\u09a4\u09be\u09a8", "TZ": "\u09a4\u09be\u099e\u09cd\u099c\u09be\u09a8\u09bf\u09af\u09bc\u09be", "TN": "\u09a4\u09bf\u0989\u09a8\u09bf\u09b8\u09bf\u09af\u09bc\u09be", "TL": "\u09a4\u09bf\u09ae\u09c1\u09b0-\u09b2\u09c7\u09b8\u09cd\u09a4\u09c7", "TR": "\u09a4\u09c1\u09b0\u09b8\u09cd\u0995", "TM": "\u09a4\u09c1\u09b0\u09cd\u0995\u09ae\u09c7\u09a8\u09bf\u09b8\u09cd\u09a4\u09be\u09a8", "TC": "\u09a4\u09c1\u09b0\u09cd\u0995\u09b8 \u0993 \u0995\u09be\u0987\u0995\u09cb\u09b8 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "TT": "\u09a4\u09cd\u09b0\u09bf\u09a8\u09bf\u09a8\u09be\u09a6 \u0993 \u099f\u09cb\u09ac\u09cd\u09af\u09be\u0997\u09cb", "TH": "\u09a5\u09be\u0987\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1", "ZA": "\u09a6\u0995\u09cd\u09b7\u09bf\u09a3 \u0986\u09ab\u09cd\u09b0\u09bf\u0995\u09be", "KR": "\u09a6\u0995\u09cd\u09b7\u09bf\u09a3 \u0995\u09cb\u09b0\u09bf\u09af\u09bc\u09be", "GS": "\u09a6\u0995\u09cd\u09b7\u09bf\u09a3 \u099c\u09b0\u09cd\u099c\u09bf\u09af\u09bc\u09be \u0993 \u09a6\u0995\u09cd\u09b7\u09bf\u09a3 \u09b8\u09cd\u09af\u09be\u09a8\u09cd\u09a1\u0989\u0987\u099a \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "SS": "\u09a6\u0995\u09cd\u09b7\u09bf\u09a3 \u09b8\u09c1\u09a6\u09be\u09a8", "NO": "\u09a8\u09b0\u0993\u09af\u09bc\u09c7", "NF": "\u09a8\u09b0\u09ab\u09cb\u0995 \u09a6\u09cd\u09ac\u09c0\u09aa", "NE": "\u09a8\u09be\u0987\u099c\u09be\u09b0", "NG": "\u09a8\u09be\u0987\u099c\u09c7\u09b0\u09bf\u09af\u09bc\u09be", "NR": "\u09a8\u09be\u0989\u09b0\u09c1", "NA": "\u09a8\u09be\u09ae\u09bf\u09ac\u09bf\u09af\u09bc\u09be", "NC": "\u09a8\u09bf\u0989 \u0995\u09cd\u09af\u09be\u09b2\u09c7\u09a1\u09cb\u09a8\u09bf\u09af\u09bc\u09be", "NZ": "\u09a8\u09bf\u0989\u099c\u09bf\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1", "NU": "\u09a8\u09bf\u0989\u09af\u09bc\u09c7", "NI": "\u09a8\u09bf\u0995\u09be\u09b0\u09be\u0997\u09c1\u09af\u09bc\u09be", "GQ": "\u09a8\u09bf\u09b0\u0995\u09cd\u09b7\u09c0\u09af\u09bc \u0997\u09bf\u09a8\u09bf", "NL": "\u09a8\u09c7\u09a6\u09be\u09b0\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1\u09b8", "NP": "\u09a8\u09c7\u09aa\u09be\u09b2", "PT": "\u09aa\u09b0\u09cd\u09a4\u09c1\u0997\u09be\u09b2", "EH": "\u09aa\u09b6\u09cd\u099a\u09bf\u09ae \u09b8\u09be\u09b9\u09be\u09b0\u09be", "PK": "\u09aa\u09be\u0995\u09bf\u09b8\u09cd\u09a4\u09be\u09a8", "PA": "\u09aa\u09be\u09a8\u09be\u09ae\u09be", "PG": "\u09aa\u09be\u09aa\u09c1\u09af\u09bc\u09be \u09a8\u09bf\u0989 \u0997\u09bf\u09a8\u09bf", "PW": "\u09aa\u09be\u09b2\u09be\u0989", "PN": "\u09aa\u09bf\u099f\u0995\u09c7\u09af\u09bc\u09be\u09b0\u09cd\u09a8 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "PR": "\u09aa\u09c1\u09af\u09bc\u09c7\u09b0\u09cd\u09a4\u09cb \u09b0\u09bf\u0995\u09cb", "PE": "\u09aa\u09c7\u09b0\u09c1", "PL": "\u09aa\u09cb\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1", "PY": "\u09aa\u09cd\u09af\u09be\u09b0\u09be\u0997\u09c1\u09af\u09bc\u09c7", "FK": "\u09ab\u0995\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "GF": "\u09ab\u09b0\u09be\u09b8\u09c0 \u0997\u09be\u09af\u09bc\u09be\u09a8\u09be", "TF": "\u09ab\u09b0\u09be\u09b8\u09c0 \u09a6\u0995\u09cd\u09b7\u09bf\u09a3\u09be\u099e\u09cd\u099a\u09b2", "PF": "\u09ab\u09b0\u09be\u09b8\u09c0 \u09aa\u09b2\u09bf\u09a8\u09c7\u09b6\u09bf\u09af\u09bc\u09be", "FJ": "\u09ab\u09bf\u099c\u09bf", "FI": "\u09ab\u09bf\u09a8\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1", "PH": "\u09ab\u09bf\u09b2\u09bf\u09aa\u09be\u0987\u09a8", "FO": "\u09ab\u09cd\u09af\u09be\u09b0\u0993 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "FR": "\u09ab\u09cd\u09b0\u09be\u09a8\u09cd\u09b8", "BW": "\u09ac\u09a4\u09b8\u09cb\u09af\u09bc\u09be\u09a8\u09be", "BO": "\u09ac\u09b2\u09bf\u09ad\u09bf\u09af\u09bc\u09be", "BA": "\u09ac\u09b8\u09a8\u09bf\u09af\u09bc\u09be \u0993 \u09b9\u09be\u09b0\u09cd\u099c\u09c7\u0997\u09cb\u09ad\u09bf\u09a8\u09be", "BD": "\u09ac\u09be\u0982\u09b2\u09be\u09a6\u09c7\u09b6", "BB": "\u09ac\u09be\u09b0\u09ac\u09be\u09a6\u09cb\u09b8", "BM": "\u09ac\u09be\u09b0\u09ae\u09c1\u09a1\u09be", "BH": "\u09ac\u09be\u09b9\u09b0\u09be\u0987\u09a8", "BS": "\u09ac\u09be\u09b9\u09be\u09ae\u09be \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "BF": "\u09ac\u09c1\u09b0\u0995\u09bf\u09a8\u09be \u09ab\u09be\u09b8\u09cb", "BI": "\u09ac\u09c1\u09b0\u09c1\u09a8\u09cd\u09a1\u09bf", "BG": "\u09ac\u09c1\u09b2\u0997\u09c7\u09b0\u09bf\u09af\u09bc\u09be", "BJ": "\u09ac\u09c7\u09a8\u09bf\u09a8", "BE": "\u09ac\u09c7\u09b2\u099c\u09bf\u09af\u09bc\u09be\u09ae", "BY": "\u09ac\u09c7\u09b2\u09be\u09b0\u09c1\u09b6", "BZ": "\u09ac\u09c7\u09b2\u09bf\u099c", "BV": "\u09ac\u09cb\u09ad\u09c7\u099f \u09a6\u09cd\u09ac\u09c0\u09aa", "BR": "\u09ac\u09cd\u09b0\u09be\u099c\u09bf\u09b2", "IO": "\u09ac\u09cd\u09b0\u09bf\u099f\u09bf\u09b6 \u09ad\u09be\u09b0\u09a4 \u09ae\u09b9\u09be\u09b8\u09be\u0997\u09b0\u09c0\u09af\u09bc \u0985\u099e\u09cd\u099a\u09b2", "VG": "\u09ac\u09cd\u09b0\u09bf\u099f\u09bf\u09b6 \u09ad\u09be\u09b0\u09cd\u099c\u09bf\u09a8 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "BN": "\u09ac\u09cd\u09b0\u09c1\u09a8\u09c7\u0987", "VU": "\u09ad\u09be\u09a8\u09c1\u09af\u09bc\u09be\u099f\u09c1", "IN": "\u09ad\u09be\u09b0\u09a4", "VN": "\u09ad\u09bf\u09af\u09bc\u09c7\u09a4\u09a8\u09be\u09ae", "BT": "\u09ad\u09c1\u099f\u09be\u09a8", "VE": "\u09ad\u09c7\u09a8\u09c7\u099c\u09c1\u09af\u09bc\u09c7\u09b2\u09be", "VA": "\u09ad\u09cd\u09af\u09be\u099f\u09bf\u0995\u09be\u09a8 \u09b8\u09bf\u099f\u09bf", "MN": "\u09ae\u0999\u09cd\u0997\u09cb\u09b2\u09bf\u09af\u09bc\u09be", "CF": "\u09ae\u09a7\u09cd\u09af \u0986\u09ab\u09cd\u09b0\u09bf\u0995\u09be\u09b0 \u09aa\u09cd\u09b0\u099c\u09be\u09a4\u09a8\u09cd\u09a4\u09cd\u09b0", "MS": "\u09ae\u09a8\u09cd\u099f\u09b8\u09c7\u09b0\u09be\u099f", "ME": "\u09ae\u09a8\u09cd\u099f\u09bf\u09a8\u09bf\u0997\u09cd\u09b0\u09cb", "MR": "\u09ae\u09b0\u09bf\u09a4\u09be\u09a8\u09bf\u09af\u09bc\u09be", "MU": "\u09ae\u09b0\u09bf\u09b6\u09be\u09b8", "MD": "\u09ae\u09b2\u09a1\u09cb\u09ad\u09be", "MG": "\u09ae\u09be\u09a6\u09be\u0997\u09be\u09b8\u09cd\u0995\u09be\u09b0", "MM": "\u09ae\u09be\u09af\u09bc\u09be\u09a8\u09ae\u09be\u09b0 (\u09ac\u09be\u09b0\u09cd\u09ae\u09be)", "YT": "\u09ae\u09be\u09af\u09bc\u09cb\u09a4\u09cd\u09a4\u09c7", "US": "\u09ae\u09be\u09b0\u09cd\u0995\u09bf\u09a8 \u09af\u09c1\u0995\u09cd\u09a4\u09b0\u09be\u09b7\u09cd\u099f\u09cd\u09b0", "VI": "\u09ae\u09be\u09b0\u09cd\u0995\u09bf\u09a8 \u09af\u09c1\u0995\u09cd\u09a4\u09b0\u09be\u09b7\u09cd\u099f\u09cd\u09b0\u09c7\u09b0 \u09ad\u09be\u09b0\u09cd\u099c\u09bf\u09a8 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "MQ": "\u09ae\u09be\u09b0\u09cd\u099f\u09bf\u09a8\u09bf\u0995", "MV": "\u09ae\u09be\u09b2\u09a6\u09cd\u09ac\u09c0\u09aa", "MY": "\u09ae\u09be\u09b2\u09af\u09bc\u09c7\u09b6\u09bf\u09af\u09bc\u09be", "MW": "\u09ae\u09be\u09b2\u09be\u0989\u0987", "ML": "\u09ae\u09be\u09b2\u09bf", "MT": "\u09ae\u09be\u09b2\u09cd\u099f\u09be", "EG": "\u09ae\u09bf\u09b6\u09b0", "MX": "\u09ae\u09c7\u0995\u09cd\u09b8\u09bf\u0995\u09cb", "MZ": "\u09ae\u09cb\u099c\u09be\u09ae\u09cd\u09ac\u09bf\u0995", "MC": "\u09ae\u09cb\u09a8\u09be\u0995\u09cb", "MA": "\u09ae\u09cb\u09b0\u0995\u09cd\u0995\u09cb", "MO": "\u09ae\u09cd\u09af\u09be\u0995\u09be\u0993 \u098f\u09b8\u098f\u0986\u09b0 \u099a\u09c0\u09a8\u09be", "GB": "\u09af\u09c1\u0995\u09cd\u09a4\u09b0\u09be\u099c\u09cd\u09af", "RU": "\u09b0\u09be\u09b6\u09bf\u09af\u09bc\u09be", "RE": "\u09b0\u09bf\u0987\u0989\u09a8\u09bf\u09af\u09bc\u09a8", "RW": "\u09b0\u09c1\u09af\u09bc\u09be\u09a8\u09cd\u09a1\u09be", "RO": "\u09b0\u09cb\u09ae\u09be\u09a8\u09bf\u09af\u09bc\u09be", "LR": "\u09b2\u09be\u0987\u09ac\u09c7\u09b0\u09bf\u09af\u09bc\u09be", "LA": "\u09b2\u09be\u0993\u09b8", "LU": "\u09b2\u09be\u0995\u09cd\u09b8\u09c7\u09ae\u09ac\u09be\u09b0\u09cd\u0997", "LV": "\u09b2\u09be\u09a4\u09cd\u09ad\u09bf\u09af\u09bc\u09be", "LI": "\u09b2\u09bf\u099a\u09c7\u09a8\u09b8\u09cd\u099f\u09c7\u0987\u09a8", "LT": "\u09b2\u09bf\u09a5\u09c1\u09af\u09bc\u09be\u09a8\u09bf\u09af\u09bc\u09be", "LY": "\u09b2\u09bf\u09ac\u09bf\u09af\u09bc\u09be", "LB": "\u09b2\u09c7\u09ac\u09be\u09a8\u09a8", "LS": "\u09b2\u09c7\u09b8\u09cb\u09a5\u09cb", "LK": "\u09b6\u09cd\u09b0\u09c0\u09b2\u0999\u09cd\u0995\u09be", "AE": "\u09b8\u0982\u09af\u09c1\u0995\u09cd\u09a4 \u0986\u09b0\u09ac \u0986\u09ae\u09bf\u09b0\u09be\u09a4", "SB": "\u09b8\u09b2\u09cb\u09ae\u09a8 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c", "CY": "\u09b8\u09be\u0987\u09aa\u09cd\u09b0\u09be\u09b8", "ST": "\u09b8\u09be\u0993\u099f\u09cb\u09ae\u09be \u0993 \u09aa\u09cd\u09b0\u09bf\u09a8\u09cd\u09b8\u09bf\u09aa\u09bf", "SM": "\u09b8\u09be\u09a8 \u09ae\u09be\u09b0\u09bf\u09a8\u09cb", "WS": "\u09b8\u09be\u09ae\u09cb\u09af\u09bc\u09be", "RS": "\u09b8\u09be\u09b0\u09cd\u09ac\u09bf\u09af\u09bc\u09be", "SG": "\u09b8\u09bf\u0999\u09cd\u0997\u09be\u09aa\u09c1\u09b0", "SX": "\u09b8\u09bf\u09a8\u09cd\u099f \u09ae\u09be\u09b0\u09cd\u099f\u09c7\u09a8", "SL": "\u09b8\u09bf\u09af\u09bc\u09c7\u09b0\u09be \u09b2\u09bf\u0993\u09a8", "SY": "\u09b8\u09bf\u09b0\u09bf\u09af\u09bc\u09be", "SC": "\u09b8\u09bf\u09b8\u09bf\u09b2\u09bf", "CH": "\u09b8\u09c1\u0987\u099c\u09be\u09b0\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1", "SE": "\u09b8\u09c1\u0987\u09a1\u09c7\u09a8", "SD": "\u09b8\u09c1\u09a6\u09be\u09a8", "SR": "\u09b8\u09c1\u09b0\u09bf\u09a8\u09be\u09ae", "SN": "\u09b8\u09c7\u09a8\u09c7\u0997\u09be\u09b2", "KN": "\u09b8\u09c7\u09a8\u09cd\u099f \u0995\u09bf\u099f\u09b8 \u0993 \u09a8\u09c7\u09ad\u09bf\u09b8", "PM": "\u09b8\u09c7\u09a8\u09cd\u099f \u09aa\u09bf\u09af\u09bc\u09c7\u09b0 \u0993 \u09ae\u09bf\u0995\u09c1\u09af\u09bc\u09c7\u09b2\u09a8", "BL": "\u09b8\u09c7\u09a8\u09cd\u099f \u09ac\u09be\u09b0\u09a5\u09c7\u09b2\u09bf\u09ae\u09bf", "VC": "\u09b8\u09c7\u09a8\u09cd\u099f \u09ad\u09bf\u09a8\u09b8\u09c7\u09a8\u09cd\u099f \u0993 \u0997\u09cd\u09b0\u09c7\u09a8\u09be\u09a1\u09bf\u09a8\u09b8", "MF": "\u09b8\u09c7\u09a8\u09cd\u099f \u09ae\u09be\u09b0\u09cd\u099f\u09bf\u09a8", "LC": "\u09b8\u09c7\u09a8\u09cd\u099f \u09b2\u09c1\u09b8\u09bf\u09af\u09bc\u09be", "SH": "\u09b8\u09c7\u09a8\u09cd\u099f \u09b9\u09c7\u09b2\u09c7\u09a8\u09be", "SO": "\u09b8\u09cb\u09ae\u09be\u09b2\u09bf\u09af\u09bc\u09be", "SA": "\u09b8\u09cc\u09a6\u09bf \u0986\u09b0\u09ac", "ES": "\u09b8\u09cd\u09aa\u09c7\u09a8", "SJ": "\u09b8\u09cd\u09ac\u09be\u09b2\u09ac\u09be\u09b0\u09cd\u09a1 \u0993 \u099c\u09be\u09a8 \u09ae\u09c7\u09af\u09bc\u09c7\u09a8", "SK": "\u09b8\u09cd\u09b2\u09cb\u09ad\u09be\u0995\u09bf\u09af\u09bc\u09be", "SI": "\u09b8\u09cd\u09b2\u09cb\u09ad\u09be\u09a8\u09bf\u09af\u09bc\u09be", "HK": "\u09b9\u0982\u0995\u0982 \u098f\u09b8\u098f\u0986\u09b0 \u099a\u09c0\u09a8\u09be", "HN": "\u09b9\u09a8\u09cd\u09a1\u09c1\u09b0\u09be\u09b8", "HT": "\u09b9\u09be\u0987\u09a4\u09bf", "HU": "\u09b9\u09be\u0999\u09cd\u0997\u09c7\u09b0\u09bf", "HM": "\u09b9\u09be\u09b0\u09cd\u09a1 \u098f\u09ac\u0982 \u09ae\u09cd\u09af\u09be\u0995\u09a1\u09cb\u09a8\u09be\u09b2\u09cd\u09a1 \u09a6\u09cd\u09ac\u09c0\u09aa\u09aa\u09c1\u099e\u09cd\u099c"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/ca.json000066400000000000000000000122131521174352300276430ustar00rootroot00000000000000{"AF": "Afganistan", "AL": "Alb\u00e0nia", "DE": "Alemanya", "DZ": "Alg\u00e8ria", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Ant\u00e0rtida", "AG": "Antigua i Barbuda", "SA": "Ar\u00e0bia Saudita", "AR": "Argentina", "AM": "Arm\u00e8nia", "AW": "Aruba", "AU": "Austr\u00e0lia", "AT": "\u00c0ustria", "AZ": "Azerbaidjan", "BS": "Bahames", "BH": "Bahrain", "BD": "Bangladesh", "BB": "Barbados", "BY": "Belar\u00fas", "BE": "B\u00e8lgica", "BZ": "Belize", "BJ": "Ben\u00edn", "BM": "Bermudes", "BT": "Bhutan", "BO": "Bol\u00edvia", "BA": "B\u00f2snia i Hercegovina", "BW": "Botswana", "BV": "Bouvet", "BR": "Brasil", "BN": "Brunei", "BG": "Bulg\u00e0ria", "BF": "Burkina Faso", "BI": "Burundi", "KH": "Cambodja", "CM": "Camerun", "CA": "Canad\u00e0", "CV": "Cap Verd", "BQ": "Carib Neerland\u00e8s", "VA": "Ciutat del Vatic\u00e0", "CO": "Col\u00f2mbia", "KM": "Comores", "CG": "Congo - Brazzaville", "CD": "Congo - Kinshasa", "KP": "Corea del Nord", "KR": "Corea del Sud", "CR": "Costa Rica", "CI": "C\u00f4te d\u2019Ivoire", "HR": "Cro\u00e0cia", "CU": "Cuba", "CW": "Cura\u00e7ao", "DK": "Dinamarca", "DJ": "Djibouti", "DM": "Dominica", "EG": "Egipte", "SV": "El Salvador", "AE": "Emirats \u00c0rabs Units", "EC": "Equador", "ER": "Eritrea", "SK": "Eslov\u00e0quia", "SI": "Eslov\u00e8nia", "ES": "Espanya", "US": "Estats Units", "EE": "Est\u00f2nia", "SZ": "eSwatini", "ET": "Eti\u00f2pia", "FJ": "Fiji", "PH": "Filipines", "FI": "Finl\u00e0ndia", "FR": "Fran\u00e7a", "GA": "Gabon", "GM": "G\u00e0mbia", "GE": "Ge\u00f2rgia", "GH": "Ghana", "GI": "Gibraltar", "GR": "Gr\u00e8cia", "GD": "Grenada", "GL": "Groenl\u00e0ndia", "GP": "Guadeloupe", "GF": "Guaiana Francesa", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GW": "Guinea Bissau", "GQ": "Guinea Equatorial", "GY": "Guyana", "HT": "Hait\u00ed", "HN": "Hondures", "HK": "Hong Kong (RAE Xina)", "HU": "Hongria", "YE": "Iemen", "CX": "Illa Christmas", "RE": "Illa de la Reuni\u00f3", "IM": "Illa de Man", "HM": "Illa Heard i Illes McDonald", "AX": "Illes \u00c5land", "KY": "Illes Caiman", "CC": "Illes Cocos", "CK": "Illes Cook", "FO": "Illes F\u00e8roe", "GS": "Illes Ge\u00f2rgia del Sud i Sandwich del Sud", "FK": "Illes Malvines", "PN": "Illes Pitcairn", "SB": "Illes Salom\u00f3", "TC": "Illes Turks i Caicos", "VG": "Illes Verges Brit\u00e0niques", "VI": "Illes Verges Nord-americanes", "IN": "\u00cdndia", "ID": "Indon\u00e8sia", "IR": "Iran", "IQ": "Iraq", "IE": "Irlanda", "IS": "Isl\u00e0ndia", "IL": "Israel", "IT": "It\u00e0lia", "JM": "Jamaica", "JP": "Jap\u00f3", "JO": "Jord\u00e0nia", "KZ": "Kazakhstan", "KE": "Kenya", "KG": "Kirguizistan", "KI": "Kiribati", "KW": "Kuwait", "LA": "Laos", "LS": "Lesotho", "LV": "Let\u00f2nia", "LB": "L\u00edban", "LR": "Lib\u00e8ria", "LY": "L\u00edbia", "LI": "Liechtenstein", "LT": "Litu\u00e0nia", "LU": "Luxemburg", "MO": "Macau (RAE Xina)", "MK": "Maced\u00f2nia del Nord", "MG": "Madagascar", "MY": "Mal\u00e0isia", "MW": "Malawi", "MV": "Maldives", "ML": "Mali", "MT": "Malta", "MA": "Marroc", "MQ": "Martinica", "MU": "Maurici", "MR": "Maurit\u00e0nia", "YT": "Mayotte", "MX": "M\u00e8xic", "MZ": "Mo\u00e7ambic", "MD": "Mold\u00e0via", "MC": "M\u00f2naco", "MN": "Mong\u00f2lia", "ME": "Montenegro", "MS": "Montserrat", "MM": "Myanmar (Birm\u00e0nia)", "NA": "Nam\u00edbia", "NR": "Nauru", "NP": "Nepal", "NI": "Nicaragua", "NE": "N\u00edger", "NG": "Nig\u00e8ria", "NU": "Niue", "NF": "Norfolk", "NO": "Noruega", "NC": "Nova Caled\u00f2nia", "NZ": "Nova Zelanda", "OM": "Oman", "NL": "Pa\u00efsos Baixos", "PK": "Pakistan", "PW": "Palau", "PA": "Panam\u00e0", "PG": "Papua Nova Guinea", "PY": "Paraguai", "PE": "Per\u00fa", "PF": "Polin\u00e8sia Francesa", "PL": "Pol\u00f2nia", "PT": "Portugal", "PR": "Puerto Rico", "QA": "Qatar", "GB": "Regne Unit", "CF": "Rep\u00fablica Centreafricana", "ZA": "Rep\u00fablica de Sud-\u00e0frica", "DO": "Rep\u00fablica Dominicana", "RO": "Romania", "RW": "Ruanda", "RU": "R\u00fassia", "EH": "S\u00e0hara Occidental", "BL": "Saint Barth\u00e9lemy", "KN": "Saint Christopher i Nevis", "SH": "Saint Helena", "LC": "Saint Lucia", "MF": "Saint Martin", "VC": "Saint Vincent i les Grenadines", "PM": "Saint-Pierre-et-Miquelon", "WS": "Samoa", "AS": "Samoa Nord-americana", "SM": "San Marino", "ST": "S\u00e3o Tom\u00e9 i Pr\u00edncipe", "SN": "Senegal", "RS": "S\u00e8rbia", "SC": "Seychelles", "SL": "Sierra Leone", "SG": "Singapur", "SX": "Sint Maarten", "SY": "S\u00edria", "SO": "Som\u00e0lia", "LK": "Sri Lanka", "SD": "Sudan", "SS": "Sudan del Sud", "SE": "Su\u00e8cia", "CH": "Su\u00efssa", "SR": "Surinam", "SJ": "Svalbard i Jan Mayen", "TJ": "Tadjikistan", "TH": "Tail\u00e0ndia", "TW": "Taiwan", "TZ": "Tanz\u00e0nia", "IO": "Territori Brit\u00e0nic de l\u2019Oce\u00e0 \u00cdndic", "TF": "Territoris Australs Francesos", "TL": "Timor Oriental", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinitat i Tobago", "TN": "Tun\u00edsia", "TM": "Turkmenistan", "TR": "Turquia", "TD": "Txad", "CZ": "Tx\u00e8quia", "UA": "Ucra\u00efna", "UG": "Uganda", "UY": "Uruguai", "UZ": "Uzbekistan", "VU": "Vanuatu", "VE": "Vene\u00e7uela", "VN": "Vietnam", "WF": "Wallis i Futuna", "CL": "Xile", "CN": "Xina", "CY": "Xipre", "ZM": "Z\u00e0mbia", "ZW": "Zimb\u00e0bue"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/cs.json000066400000000000000000000130051521174352300276650ustar00rootroot00000000000000{"AF": "Afgh\u00e1nist\u00e1n", "AX": "\u00c5landy", "AL": "Alb\u00e1nie", "DZ": "Al\u017e\u00edrsko", "AS": "Americk\u00e1 Samoa", "VI": "Americk\u00e9 Panensk\u00e9 ostrovy", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarktida", "AG": "Antigua a Barbuda", "AR": "Argentina", "AM": "Arm\u00e9nie", "AW": "Aruba", "AU": "Austr\u00e1lie", "AZ": "\u00c1zerb\u00e1jd\u017e\u00e1n", "BS": "Bahamy", "BH": "Bahrajn", "BD": "Banglad\u00e9\u0161", "BB": "Barbados", "BE": "Belgie", "BZ": "Belize", "BY": "B\u011blorusko", "BJ": "Benin", "BM": "Bermudy", "BT": "Bh\u00fat\u00e1n", "BO": "Bol\u00edvie", "BA": "Bosna a Hercegovina", "BW": "Botswana", "BV": "Bouvet\u016fv ostrov", "BR": "Braz\u00edlie", "IO": "Britsk\u00e9 indickooce\u00e1nsk\u00e9 \u00fazem\u00ed", "VG": "Britsk\u00e9 Panensk\u00e9 ostrovy", "BN": "Brunej", "BG": "Bulharsko", "BF": "Burkina Faso", "BI": "Burundi", "CK": "Cookovy ostrovy", "CW": "Cura\u00e7ao", "TD": "\u010cad", "ME": "\u010cern\u00e1 Hora", "CZ": "\u010cesko", "CN": "\u010c\u00edna", "DK": "D\u00e1nsko", "DM": "Dominika", "DO": "Dominik\u00e1nsk\u00e1 republika", "DJ": "D\u017eibutsko", "EG": "Egypt", "EC": "Ekv\u00e1dor", "ER": "Eritrea", "EE": "Estonsko", "ET": "Etiopie", "FO": "Faersk\u00e9 ostrovy", "FK": "Falklandsk\u00e9 ostrovy", "FJ": "Fid\u017ei", "PH": "Filip\u00edny", "FI": "Finsko", "FR": "Francie", "GF": "Francouzsk\u00e1 Guyana", "TF": "Francouzsk\u00e1 ji\u017en\u00ed \u00fazem\u00ed", "PF": "Francouzsk\u00e1 Polyn\u00e9sie", "GA": "Gabon", "GM": "Gambie", "GH": "Ghana", "GI": "Gibraltar", "GD": "Grenada", "GL": "Gr\u00f3nsko", "GE": "Gruzie", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GW": "Guinea-Bissau", "GY": "Guyana", "HT": "Haiti", "HM": "Heard\u016fv ostrov a McDonaldovy ostrovy", "HN": "Honduras", "HK": "Hongkong \u2013 ZAO \u010c\u00edny", "CL": "Chile", "HR": "Chorvatsko", "IN": "Indie", "ID": "Indon\u00e9sie", "IQ": "Ir\u00e1k", "IR": "\u00cdr\u00e1n", "IE": "Irsko", "IS": "Island", "IT": "It\u00e1lie", "IL": "Izrael", "JM": "Jamajka", "JP": "Japonsko", "YE": "Jemen", "ZA": "Jihoafrick\u00e1 republika", "GS": "Ji\u017en\u00ed Georgie a Ji\u017en\u00ed Sandwichovy ostrovy", "KR": "Ji\u017en\u00ed Korea", "SS": "Ji\u017en\u00ed S\u00fad\u00e1n", "JO": "Jord\u00e1nsko", "KY": "Kajmansk\u00e9 ostrovy", "KH": "Kambod\u017ea", "CM": "Kamerun", "CA": "Kanada", "CV": "Kapverdy", "BQ": "Karibsk\u00e9 Nizozemsko", "QA": "Katar", "KZ": "Kazachst\u00e1n", "KE": "Ke\u0148a", "KI": "Kiribati", "CC": "Kokosov\u00e9 ostrovy", "CO": "Kolumbie", "KM": "Komory", "CG": "Kongo \u2013 Brazzaville", "CD": "Kongo \u2013 Kinshasa", "CR": "Kostarika", "CU": "Kuba", "KW": "Kuvajt", "CY": "Kypr", "KG": "Kyrgyzst\u00e1n", "LA": "Laos", "LS": "Lesotho", "LB": "Libanon", "LR": "Lib\u00e9rie", "LY": "Libye", "LI": "Lichten\u0161tejnsko", "LT": "Litva", "LV": "Loty\u0161sko", "LU": "Lucembursko", "MO": "Macao \u2013 ZAO \u010c\u00edny", "MG": "Madagaskar", "HU": "Ma\u010farsko", "MY": "Malajsie", "MW": "Malawi", "MV": "Maledivy", "ML": "Mali", "MT": "Malta", "MA": "Maroko", "MQ": "Martinik", "MU": "Mauricius", "MR": "Maurit\u00e1nie", "YT": "Mayotte", "MX": "Mexiko", "MD": "Moldavsko", "MC": "Monako", "MN": "Mongolsko", "MS": "Montserrat", "MZ": "Mosambik", "MM": "Myanmar (Barma)", "NA": "Namibie", "NR": "Nauru", "DE": "N\u011bmecko", "NP": "Nep\u00e1l", "NE": "Niger", "NG": "Nig\u00e9rie", "NI": "Nikaragua", "NU": "Niue", "NL": "Nizozemsko", "NF": "Norfolk", "NO": "Norsko", "NC": "Nov\u00e1 Kaledonie", "NZ": "Nov\u00fd Z\u00e9land", "OM": "Om\u00e1n", "IM": "Ostrov Man", "PK": "P\u00e1kist\u00e1n", "PW": "Palau", "PA": "Panama", "PG": "Papua-Nov\u00e1 Guinea", "PY": "Paraguay", "PE": "Peru", "PN": "Pitcairnovy ostrovy", "CI": "Pob\u0159e\u017e\u00ed slonoviny", "PL": "Polsko", "PR": "Portoriko", "PT": "Portugalsko", "AT": "Rakousko", "RE": "R\u00e9union", "GQ": "Rovn\u00edkov\u00e1 Guinea", "RO": "Rumunsko", "RU": "Rusko", "RW": "Rwanda", "GR": "\u0158ecko", "PM": "Saint-Pierre a Miquelon", "SV": "Salvador", "WS": "Samoa", "SM": "San Marino", "SA": "Sa\u00fadsk\u00e1 Ar\u00e1bie", "SN": "Senegal", "KP": "Severn\u00ed Korea", "MK": "Severn\u00ed Makedonie", "SC": "Seychely", "SL": "Sierra Leone", "SG": "Singapur", "SK": "Slovensko", "SI": "Slovinsko", "SO": "Som\u00e1lsko", "AE": "Spojen\u00e9 arabsk\u00e9 emir\u00e1ty", "GB": "Spojen\u00e9 kr\u00e1lovstv\u00ed", "US": "Spojen\u00e9 st\u00e1ty", "RS": "Srbsko", "LK": "Sr\u00ed Lanka", "CF": "St\u0159edoafrick\u00e1 republika", "SD": "S\u00fad\u00e1n", "SR": "Surinam", "SH": "Svat\u00e1 Helena", "LC": "Svat\u00e1 Lucie", "BL": "Svat\u00fd Bartolom\u011bj", "KN": "Svat\u00fd Kry\u0161tof a Nevis", "MF": "Svat\u00fd Martin (Francie)", "SX": "Svat\u00fd Martin (Nizozemsko)", "ST": "Svat\u00fd Tom\u00e1\u0161 a Princ\u016fv ostrov", "VC": "Svat\u00fd Vincenc a Grenadiny", "SZ": "Svazijsko", "SY": "S\u00fdrie", "SB": "\u0160alamounovy ostrovy", "ES": "\u0160pan\u011blsko", "SJ": "\u0160picberky a Jan Mayen", "SE": "\u0160v\u00e9dsko", "CH": "\u0160v\u00fdcarsko", "TJ": "T\u00e1d\u017eikist\u00e1n", "TZ": "Tanzanie", "TH": "Thajsko", "TW": "Tchaj-wan", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad a Tobago", "TN": "Tunisko", "TR": "Turecko", "TM": "Turkmenist\u00e1n", "TC": "Turks a Caicos", "UG": "Uganda", "UA": "Ukrajina", "UY": "Uruguay", "UZ": "Uzbekist\u00e1n", "CX": "V\u00e1no\u010dn\u00ed ostrov", "VU": "Vanuatu", "VA": "Vatik\u00e1n", "VE": "Venezuela", "VN": "Vietnam", "TL": "V\u00fdchodn\u00ed Timor", "WF": "Wallis a Futuna", "ZM": "Zambie", "EH": "Z\u00e1padn\u00ed Sahara", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/da.json000066400000000000000000000114571521174352300276550ustar00rootroot00000000000000{"AF": "Afghanistan", "AL": "Albanien", "DZ": "Algeriet", "AS": "Amerikansk Samoa", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarktis", "AG": "Antigua og Barbuda", "AR": "Argentina", "AM": "Armenien", "AW": "Aruba", "AZ": "Aserbajdsjan", "AU": "Australien", "BS": "Bahamas", "BH": "Bahrain", "BD": "Bangladesh", "BB": "Barbados", "BE": "Belgien", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhutan", "BO": "Bolivia", "BA": "Bosnien-Hercegovina", "BW": "Botswana", "BV": "Bouvet\u00f8en", "BR": "Brasilien", "BN": "Brunei", "BG": "Bulgarien", "BF": "Burkina Faso", "BI": "Burundi", "KH": "Cambodja", "CM": "Cameroun", "CA": "Canada", "KY": "Cayman\u00f8erne", "CL": "Chile", "CC": "Cocos\u00f8erne", "CO": "Colombia", "KM": "Comorerne", "CG": "Congo-Brazzaville", "CD": "Congo-Kinshasa", "CK": "Cook\u00f8erne", "CR": "Costa Rica", "CU": "Cuba", "CW": "Cura\u00e7ao", "CY": "Cypern", "DK": "Danmark", "VI": "De Amerikanske Jomfru\u00f8er", "VG": "De Britiske Jomfru\u00f8er", "AE": "De Forenede Arabiske Emirater", "TF": "De Franske Besiddelser i Det Sydlige Indiske Ocean og Antarktis", "BQ": "De tidligere Nederlandske Antiller", "CF": "Den Centralafrikanske Republik", "DO": "Den Dominikanske Republik", "IO": "Det Britiske Territorium i Det Indiske Ocean", "DJ": "Djibouti", "DM": "Dominica", "EC": "Ecuador", "EG": "Egypten", "SV": "El Salvador", "CI": "Elfenbenskysten", "ER": "Eritrea", "EE": "Estland", "SZ": "Eswatini", "ET": "Etiopien", "FK": "Falklands\u00f8erne", "FJ": "Fiji", "PH": "Filippinerne", "FI": "Finland", "FR": "Frankrig", "GF": "Fransk Guyana", "PF": "Fransk Polynesien", "FO": "F\u00e6r\u00f8erne", "GA": "Gabon", "GM": "Gambia", "GE": "Georgien", "GH": "Ghana", "GI": "Gibraltar", "GD": "Grenada", "GR": "Gr\u00e6kenland", "GL": "Gr\u00f8nland", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GW": "Guinea-Bissau", "GY": "Guyana", "HT": "Haiti", "HM": "Heard Island og McDonald Islands", "NL": "Holland", "HN": "Honduras", "BY": "Hviderusland", "IN": "Indien", "ID": "Indonesien", "IQ": "Irak", "IR": "Iran", "IE": "Irland", "IS": "Island", "IM": "Isle of Man", "IL": "Israel", "IT": "Italien", "JM": "Jamaica", "JP": "Japan", "JO": "Jordan", "CX": "Jule\u00f8en", "CV": "Kap Verde", "KZ": "Kasakhstan", "KE": "Kenya", "CN": "Kina", "KG": "Kirgisistan", "KI": "Kiribati", "HR": "Kroatien", "KW": "Kuwait", "LA": "Laos", "LS": "Lesotho", "LV": "Letland", "LB": "Libanon", "LR": "Liberia", "LY": "Libyen", "LI": "Liechtenstein", "LT": "Litauen", "LU": "Luxembourg", "MG": "Madagaskar", "MW": "Malawi", "MY": "Malaysia", "MV": "Maldiverne", "ML": "Mali", "MT": "Malta", "MA": "Marokko", "MQ": "Martinique", "MR": "Mauretanien", "MU": "Mauritius", "YT": "Mayotte", "MX": "Mexico", "MD": "Moldova", "MC": "Monaco", "MN": "Mongoliet", "ME": "Montenegro", "MS": "Montserrat", "MZ": "Mozambique", "MM": "Myanmar (Burma)", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NZ": "New Zealand", "NI": "Nicaragua", "NE": "Niger", "NG": "Nigeria", "NU": "Niue", "KP": "Nordkorea", "MK": "Nordmakedonien", "NF": "Norfolk Island", "NO": "Norge", "NC": "Ny Kaledonien", "OM": "Oman", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua Ny Guinea", "PY": "Paraguay", "PE": "Peru", "PN": "Pitcairn", "PL": "Polen", "PT": "Portugal", "PR": "Puerto Rico", "QA": "Qatar", "RE": "R\u00e9union", "RO": "Rum\u00e6nien", "RU": "Rusland", "RW": "Rwanda", "BL": "Saint Barth\u00e9lemy", "KN": "Saint Kitts og Nevis", "LC": "Saint Lucia", "MF": "Saint Martin", "PM": "Saint Pierre og Miquelon", "VC": "Saint Vincent og Grenadinerne", "SB": "Salomon\u00f8erne", "WS": "Samoa", "SM": "San Marino", "ST": "S\u00e3o Tom\u00e9 og Pr\u00edncipe", "HK": "SAR Hongkong", "MO": "SAR Macao", "SA": "Saudi-Arabien", "CH": "Schweiz", "SN": "Senegal", "RS": "Serbien", "SC": "Seychellerne", "SL": "Sierra Leone", "SG": "Singapore", "SX": "Sint Maarten", "SK": "Slovakiet", "SI": "Slovenien", "SO": "Somalia", "GS": "South Georgia og De Sydlige Sandwich\u00f8er", "ES": "Spanien", "LK": "Sri Lanka", "SH": "St. Helena", "GB": "Storbritannien", "SD": "Sudan", "SR": "Surinam", "SJ": "Svalbard og Jan Mayen", "SE": "Sverige", "ZA": "Sydafrika", "KR": "Sydkorea", "SS": "Sydsudan", "SY": "Syrien", "TJ": "Tadsjikistan", "TW": "Taiwan", "TZ": "Tanzania", "TD": "Tchad", "TH": "Thailand", "TL": "Timor-Leste", "CZ": "Tjekkiet", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad og Tobago", "TN": "Tunesien", "TM": "Turkmenistan", "TC": "Turks- og Caicos\u00f8erne", "TR": "Tyrkiet", "DE": "Tyskland", "UG": "Uganda", "UA": "Ukraine", "HU": "Ungarn", "UY": "Uruguay", "US": "USA", "UZ": "Usbekistan", "VU": "Vanuatu", "VA": "Vatikanstaten", "VE": "Venezuela", "EH": "Vestsahara", "VN": "Vietnam", "WF": "Wallis og Futuna", "YE": "Yemen", "ZM": "Zambia", "ZW": "Zimbabwe", "GQ": "\u00c6kvatorialguinea", "AT": "\u00d8strig", "AX": "\u00c5land"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/de.json000066400000000000000000000116531521174352300276570ustar00rootroot00000000000000{"AF": "Afghanistan", "EG": "\u00c4gypten", "AX": "\u00c5landinseln", "AL": "Albanien", "DZ": "Algerien", "AS": "Amerikanisch-Samoa", "VI": "Amerikanische Jungferninseln", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarktis", "AG": "Antigua und Barbuda", "GQ": "\u00c4quatorialguinea", "AR": "Argentinien", "AM": "Armenien", "AW": "Aruba", "AZ": "Aserbaidschan", "ET": "\u00c4thiopien", "AU": "Australien", "BS": "Bahamas", "BH": "Bahrain", "BD": "Bangladesch", "BB": "Barbados", "BY": "Belarus", "BE": "Belgien", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhutan", "BO": "Bolivien", "BQ": "Bonaire, Sint Eustatius und Saba", "BA": "Bosnien und Herzegowina", "BW": "Botsuana", "BV": "Bouvetinsel", "BR": "Brasilien", "VG": "Britische Jungferninseln", "IO": "Britisches Territorium im Indischen Ozean", "BN": "Brunei Darussalam", "BG": "Bulgarien", "BF": "Burkina Faso", "BI": "Burundi", "CV": "Cabo Verde", "CL": "Chile", "CN": "China", "CK": "Cookinseln", "CR": "Costa Rica", "CI": "C\u00f4te d\u2019Ivoire", "CW": "Cura\u00e7ao", "DK": "D\u00e4nemark", "DE": "Deutschland", "DM": "Dominica", "DO": "Dominikanische Republik", "DJ": "Dschibuti", "EC": "Ecuador", "SV": "El Salvador", "ER": "Eritrea", "EE": "Estland", "SZ": "Eswatini", "FK": "Falklandinseln", "FO": "F\u00e4r\u00f6er", "FJ": "Fidschi", "FI": "Finnland", "FR": "Frankreich", "GF": "Franz\u00f6sisch-Guayana", "PF": "Franz\u00f6sisch-Polynesien", "TF": "Franz\u00f6sische S\u00fcd- und Antarktisgebiete", "GA": "Gabun", "GM": "Gambia", "GE": "Georgien", "GH": "Ghana", "GI": "Gibraltar", "GD": "Grenada", "GR": "Griechenland", "GL": "Gr\u00f6nland", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GW": "Guinea-Bissau", "GY": "Guyana", "HT": "Haiti", "HM": "Heard und McDonaldinseln", "HN": "Honduras", "IN": "Indien", "ID": "Indonesien", "IQ": "Irak", "IR": "Iran", "IE": "Irland", "IS": "Island", "IM": "Isle of Man", "IL": "Israel", "IT": "Italien", "JM": "Jamaika", "JP": "Japan", "YE": "Jemen", "JO": "Jordanien", "KY": "Kaimaninseln", "KH": "Kambodscha", "CM": "Kamerun", "CA": "Kanada", "KZ": "Kasachstan", "QA": "Katar", "KE": "Kenia", "KG": "Kirgisistan", "KI": "Kiribati", "CC": "Kokosinseln", "CO": "Kolumbien", "KM": "Komoren", "CG": "Kongo-Brazzaville", "CD": "Kongo-Kinshasa", "HR": "Kroatien", "CU": "Kuba", "KW": "Kuwait", "LA": "Laos", "LS": "Lesotho", "LV": "Lettland", "LB": "Libanon", "LR": "Liberia", "LY": "Libyen", "LI": "Liechtenstein", "LT": "Litauen", "LU": "Luxemburg", "MG": "Madagaskar", "MW": "Malawi", "MY": "Malaysia", "MV": "Malediven", "ML": "Mali", "MT": "Malta", "MA": "Marokko", "MQ": "Martinique", "MR": "Mauretanien", "MU": "Mauritius", "YT": "Mayotte", "MX": "Mexiko", "MC": "Monaco", "MN": "Mongolei", "ME": "Montenegro", "MS": "Montserrat", "MZ": "Mosambik", "MM": "Myanmar", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NC": "Neukaledonien", "NZ": "Neuseeland", "NI": "Nicaragua", "NL": "Niederlande", "NE": "Niger", "NG": "Nigeria", "NU": "Niue", "KP": "Nordkorea", "MK": "Nordmazedonien", "NF": "Norfolkinsel", "NO": "Norwegen", "OM": "Oman", "AT": "\u00d6sterreich", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua-Neuguinea", "PY": "Paraguay", "PE": "Peru", "PH": "Philippinen", "PN": "Pitcairninseln", "PL": "Polen", "PT": "Portugal", "PR": "Puerto Rico", "MD": "Republik Moldau", "RE": "R\u00e9union", "RW": "Ruanda", "RO": "Rum\u00e4nien", "RU": "Russland", "SB": "Salomonen", "ZM": "Sambia", "WS": "Samoa", "SM": "San Marino", "ST": "S\u00e3o Tom\u00e9 und Pr\u00edncipe", "SA": "Saudi-Arabien", "SE": "Schweden", "CH": "Schweiz", "SN": "Senegal", "RS": "Serbien", "SC": "Seychellen", "SL": "Sierra Leone", "ZW": "Simbabwe", "SG": "Singapur", "SX": "Sint Maarten", "SK": "Slowakei", "SI": "Slowenien", "SO": "Somalia", "HK": "Sonderverwaltungsregion Hongkong", "MO": "Sonderverwaltungsregion Macau", "ES": "Spanien", "SJ": "Spitzbergen und Jan Mayen", "LK": "Sri Lanka", "BL": "St. Barth\u00e9lemy", "SH": "St. Helena", "KN": "St. Kitts und Nevis", "LC": "St. Lucia", "MF": "St. Martin", "PM": "St. Pierre und Miquelon", "VC": "St. Vincent und die Grenadinen", "ZA": "S\u00fcdafrika", "SD": "Sudan", "GS": "S\u00fcdgeorgien und die S\u00fcdlichen Sandwichinseln", "KR": "S\u00fcdkorea", "SS": "S\u00fcdsudan", "SR": "Suriname", "SY": "Syrien", "TJ": "Tadschikistan", "TW": "Taiwan", "TZ": "Tansania", "TH": "Thailand", "TL": "Timor-Leste", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad und Tobago", "TD": "Tschad", "CZ": "Tschechien", "TN": "Tunesien", "TR": "T\u00fcrkei", "TM": "Turkmenistan", "TC": "Turks- und Caicosinseln", "UG": "Uganda", "UA": "Ukraine", "HU": "Ungarn", "UY": "Uruguay", "UZ": "Usbekistan", "VU": "Vanuatu", "VA": "Vatikanstadt", "VE": "Venezuela", "AE": "Vereinigte Arabische Emirate", "US": "Vereinigte Staaten", "GB": "Vereinigtes K\u00f6nigreich", "VN": "Vietnam", "WF": "Wallis und Futuna", "CX": "Weihnachtsinsel", "EH": "Westsahara", "CF": "Zentralafrikanische Republik", "CY": "Zypern"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/el.json000066400000000000000000000410771521174352300276720ustar00rootroot00000000000000{"SH": "\u0391\u03b3\u03af\u03b1 \u0395\u03bb\u03ad\u03bd\u03b7", "LC": "\u0391\u03b3\u03af\u03b1 \u039b\u03bf\u03c5\u03ba\u03af\u03b1", "BL": "\u0386\u03b3\u03b9\u03bf\u03c2 \u0392\u03b1\u03c1\u03b8\u03bf\u03bb\u03bf\u03bc\u03b1\u03af\u03bf\u03c2", "VC": "\u0386\u03b3\u03b9\u03bf\u03c2 \u0392\u03b9\u03ba\u03ad\u03bd\u03c4\u03b9\u03bf\u03c2 \u03ba\u03b1\u03b9 \u0393\u03c1\u03b5\u03bd\u03b1\u03b4\u03af\u03bd\u03b5\u03c2", "SM": "\u0386\u03b3\u03b9\u03bf\u03c2 \u039c\u03b1\u03c1\u03af\u03bd\u03bf\u03c2", "MF": "\u0386\u03b3\u03b9\u03bf\u03c2 \u039c\u03b1\u03c1\u03c4\u03af\u03bd\u03bf\u03c2 (\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03cc \u03c4\u03bc\u03ae\u03bc\u03b1)", "SX": "\u0386\u03b3\u03b9\u03bf\u03c2 \u039c\u03b1\u03c1\u03c4\u03af\u03bd\u03bf\u03c2 (\u039f\u03bb\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03cc \u03c4\u03bc\u03ae\u03bc\u03b1)", "AO": "\u0391\u03b3\u03ba\u03cc\u03bb\u03b1", "AZ": "\u0391\u03b6\u03b5\u03c1\u03bc\u03c0\u03b1\u03ca\u03c4\u03b6\u03ac\u03bd", "EG": "\u0391\u03af\u03b3\u03c5\u03c0\u03c4\u03bf\u03c2", "ET": "\u0391\u03b9\u03b8\u03b9\u03bf\u03c0\u03af\u03b1", "HT": "\u0391\u03ca\u03c4\u03ae", "CI": "\u0391\u03ba\u03c4\u03ae \u0395\u03bb\u03b5\u03c6\u03b1\u03bd\u03c4\u03bf\u03c3\u03c4\u03bf\u03cd", "AL": "\u0391\u03bb\u03b2\u03b1\u03bd\u03af\u03b1", "DZ": "\u0391\u03bb\u03b3\u03b5\u03c1\u03af\u03b1", "VI": "\u0391\u03bc\u03b5\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a0\u03b1\u03c1\u03b8\u03ad\u03bd\u03b5\u03c2 \u039d\u03ae\u03c3\u03bf\u03b9", "AS": "\u0391\u03bc\u03b5\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ae \u03a3\u03b1\u03bc\u03cc\u03b1", "AI": "\u0391\u03bd\u03b3\u03ba\u03bf\u03c5\u03af\u03bb\u03b1", "AD": "\u0391\u03bd\u03b4\u03cc\u03c1\u03b1", "AQ": "\u0391\u03bd\u03c4\u03b1\u03c1\u03ba\u03c4\u03b9\u03ba\u03ae", "AG": "\u0391\u03bd\u03c4\u03af\u03b3\u03ba\u03bf\u03c5\u03b1 \u03ba\u03b1\u03b9 \u039c\u03c0\u03b1\u03c1\u03bc\u03c0\u03bf\u03cd\u03bd\u03c4\u03b1", "AR": "\u0391\u03c1\u03b3\u03b5\u03bd\u03c4\u03b9\u03bd\u03ae", "AM": "\u0391\u03c1\u03bc\u03b5\u03bd\u03af\u03b1", "AW": "\u0391\u03c1\u03bf\u03cd\u03bc\u03c0\u03b1", "AU": "\u0391\u03c5\u03c3\u03c4\u03c1\u03b1\u03bb\u03af\u03b1", "AT": "\u0391\u03c5\u03c3\u03c4\u03c1\u03af\u03b1", "AF": "\u0391\u03c6\u03b3\u03b1\u03bd\u03b9\u03c3\u03c4\u03ac\u03bd", "VU": "\u0392\u03b1\u03bd\u03bf\u03c5\u03ac\u03c4\u03bf\u03c5", "VA": "\u0392\u03b1\u03c4\u03b9\u03ba\u03b1\u03bd\u03cc", "BE": "\u0392\u03ad\u03bb\u03b3\u03b9\u03bf", "VE": "\u0392\u03b5\u03bd\u03b5\u03b6\u03bf\u03c5\u03ad\u03bb\u03b1", "BM": "\u0392\u03b5\u03c1\u03bc\u03bf\u03cd\u03b4\u03b5\u03c2", "VN": "\u0392\u03b9\u03b5\u03c4\u03bd\u03ac\u03bc", "BO": "\u0392\u03bf\u03bb\u03b9\u03b2\u03af\u03b1", "KP": "\u0392\u03cc\u03c1\u03b5\u03b9\u03b1 \u039a\u03bf\u03c1\u03ad\u03b1", "MK": "\u0392\u03cc\u03c1\u03b5\u03b9\u03b1 \u039c\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03af\u03b1", "BA": "\u0392\u03bf\u03c3\u03bd\u03af\u03b1 - \u0395\u03c1\u03b6\u03b5\u03b3\u03bf\u03b2\u03af\u03bd\u03b7", "BG": "\u0392\u03bf\u03c5\u03bb\u03b3\u03b1\u03c1\u03af\u03b1", "BR": "\u0392\u03c1\u03b1\u03b6\u03b9\u03bb\u03af\u03b1", "IO": "\u0392\u03c1\u03b5\u03c4\u03b1\u03bd\u03b9\u03ba\u03ac \u0395\u03b4\u03ac\u03c6\u03b7 \u0399\u03bd\u03b4\u03b9\u03ba\u03bf\u03cd \u03a9\u03ba\u03b5\u03b1\u03bd\u03bf\u03cd", "VG": "\u0392\u03c1\u03b5\u03c4\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a0\u03b1\u03c1\u03b8\u03ad\u03bd\u03b5\u03c2 \u039d\u03ae\u03c3\u03bf\u03b9", "FR": "\u0393\u03b1\u03bb\u03bb\u03af\u03b1", "TF": "\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ac \u039d\u03cc\u03c4\u03b9\u03b1 \u0395\u03b4\u03ac\u03c6\u03b7", "GF": "\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ae \u0393\u03bf\u03c5\u03b9\u03ac\u03bd\u03b1", "PF": "\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ae \u03a0\u03bf\u03bb\u03c5\u03bd\u03b7\u03c3\u03af\u03b1", "DE": "\u0393\u03b5\u03c1\u03bc\u03b1\u03bd\u03af\u03b1", "GE": "\u0393\u03b5\u03c9\u03c1\u03b3\u03af\u03b1", "GI": "\u0393\u03b9\u03b2\u03c1\u03b1\u03bb\u03c4\u03ac\u03c1", "GM": "\u0393\u03ba\u03ac\u03bc\u03c0\u03b9\u03b1", "GA": "\u0393\u03ba\u03b1\u03bc\u03c0\u03cc\u03bd", "GH": "\u0393\u03ba\u03ac\u03bd\u03b1", "GG": "\u0393\u03ba\u03ad\u03c1\u03bd\u03b6\u03b9", "GU": "\u0393\u03ba\u03bf\u03c5\u03ac\u03bc", "GP": "\u0393\u03bf\u03c5\u03b1\u03b4\u03b5\u03bb\u03bf\u03cd\u03c0\u03b7", "WF": "\u0393\u03bf\u03c5\u03ac\u03bb\u03b9\u03c2 \u03ba\u03b1\u03b9 \u03a6\u03bf\u03c5\u03c4\u03bf\u03cd\u03bd\u03b1", "GT": "\u0393\u03bf\u03c5\u03b1\u03c4\u03b5\u03bc\u03ac\u03bb\u03b1", "GY": "\u0393\u03bf\u03c5\u03b9\u03ac\u03bd\u03b1", "GN": "\u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1", "GW": "\u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 \u039c\u03c0\u03b9\u03c3\u03ac\u03bf\u03c5", "GD": "\u0393\u03c1\u03b5\u03bd\u03ac\u03b4\u03b1", "GL": "\u0393\u03c1\u03bf\u03b9\u03bb\u03b1\u03bd\u03b4\u03af\u03b1", "DK": "\u0394\u03b1\u03bd\u03af\u03b1", "DO": "\u0394\u03bf\u03bc\u03b9\u03bd\u03b9\u03ba\u03b1\u03bd\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1", "EH": "\u0394\u03c5\u03c4\u03b9\u03ba\u03ae \u03a3\u03b1\u03c7\u03ac\u03c1\u03b1", "SV": "\u0395\u03bb \u03a3\u03b1\u03bb\u03b2\u03b1\u03b4\u03cc\u03c1", "CH": "\u0395\u03bb\u03b2\u03b5\u03c4\u03af\u03b1", "GR": "\u0395\u03bb\u03bb\u03ac\u03b4\u03b1", "ER": "\u0395\u03c1\u03c5\u03b8\u03c1\u03b1\u03af\u03b1", "EE": "\u0395\u03c3\u03b8\u03bf\u03bd\u03af\u03b1", "ZM": "\u0396\u03ac\u03bc\u03c0\u03b9\u03b1", "ZW": "\u0396\u03b9\u03bc\u03c0\u03ac\u03bc\u03c0\u03bf\u03c5\u03b5", "AE": "\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03b1 \u0391\u03c1\u03b1\u03b2\u03b9\u03ba\u03ac \u0395\u03bc\u03b9\u03c1\u03ac\u03c4\u03b1", "US": "\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a0\u03bf\u03bb\u03b9\u03c4\u03b5\u03af\u03b5\u03c2", "GB": "\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03bf \u0392\u03b1\u03c3\u03af\u03bb\u03b5\u03b9\u03bf", "JP": "\u0399\u03b1\u03c0\u03c9\u03bd\u03af\u03b1", "IN": "\u0399\u03bd\u03b4\u03af\u03b1", "ID": "\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03af\u03b1", "JO": "\u0399\u03bf\u03c1\u03b4\u03b1\u03bd\u03af\u03b1", "IQ": "\u0399\u03c1\u03ac\u03ba", "IR": "\u0399\u03c1\u03ac\u03bd", "IE": "\u0399\u03c1\u03bb\u03b1\u03bd\u03b4\u03af\u03b1", "GQ": "\u0399\u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ae \u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1", "EC": "\u0399\u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03cc\u03c2", "IS": "\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03af\u03b1", "ES": "\u0399\u03c3\u03c0\u03b1\u03bd\u03af\u03b1", "IL": "\u0399\u03c3\u03c1\u03b1\u03ae\u03bb", "IT": "\u0399\u03c4\u03b1\u03bb\u03af\u03b1", "KZ": "\u039a\u03b1\u03b6\u03b1\u03ba\u03c3\u03c4\u03ac\u03bd", "CM": "\u039a\u03b1\u03bc\u03b5\u03c1\u03bf\u03cd\u03bd", "KH": "\u039a\u03b1\u03bc\u03c0\u03cc\u03c4\u03b6\u03b7", "CA": "\u039a\u03b1\u03bd\u03b1\u03b4\u03ac\u03c2", "QA": "\u039a\u03b1\u03c4\u03ac\u03c1", "CF": "\u039a\u03b5\u03bd\u03c4\u03c1\u03bf\u03b1\u03c6\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1", "KE": "\u039a\u03ad\u03bd\u03c5\u03b1", "CN": "\u039a\u03af\u03bd\u03b1", "KG": "\u039a\u03b9\u03c1\u03b3\u03b9\u03c3\u03c4\u03ac\u03bd", "KI": "\u039a\u03b9\u03c1\u03b9\u03bc\u03c0\u03ac\u03c4\u03b9", "CO": "\u039a\u03bf\u03bb\u03bf\u03bc\u03b2\u03af\u03b1", "KM": "\u039a\u03bf\u03bc\u03cc\u03c1\u03b5\u03c2", "CD": "\u039a\u03bf\u03bd\u03b3\u03ba\u03cc - \u039a\u03b9\u03bd\u03c3\u03ac\u03c3\u03b1", "CG": "\u039a\u03bf\u03bd\u03b3\u03ba\u03cc - \u039c\u03c0\u03c1\u03b1\u03b6\u03b1\u03b2\u03af\u03bb", "CR": "\u039a\u03cc\u03c3\u03c4\u03b1 \u03a1\u03af\u03ba\u03b1", "CU": "\u039a\u03bf\u03cd\u03b2\u03b1", "KW": "\u039a\u03bf\u03c5\u03b2\u03ad\u03b9\u03c4", "CW": "\u039a\u03bf\u03c5\u03c1\u03b1\u03c3\u03ac\u03bf", "HR": "\u039a\u03c1\u03bf\u03b1\u03c4\u03af\u03b1", "CY": "\u039a\u03cd\u03c0\u03c1\u03bf\u03c2", "LA": "\u039b\u03ac\u03bf\u03c2", "LS": "\u039b\u03b5\u03c3\u03cc\u03c4\u03bf", "LV": "\u039b\u03b5\u03c4\u03bf\u03bd\u03af\u03b1", "BY": "\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03af\u03b1", "LB": "\u039b\u03af\u03b2\u03b1\u03bd\u03bf\u03c2", "LR": "\u039b\u03b9\u03b2\u03b5\u03c1\u03af\u03b1", "LY": "\u039b\u03b9\u03b2\u03cd\u03b7", "LT": "\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03af\u03b1", "LI": "\u039b\u03b9\u03c7\u03c4\u03b5\u03bd\u03c3\u03c4\u03ac\u03b9\u03bd", "LU": "\u039b\u03bf\u03c5\u03be\u03b5\u03bc\u03b2\u03bf\u03cd\u03c1\u03b3\u03bf", "YT": "\u039c\u03b1\u03b3\u03b9\u03cc\u03c4", "MG": "\u039c\u03b1\u03b4\u03b1\u03b3\u03b1\u03c3\u03ba\u03ac\u03c1\u03b7", "MO": "\u039c\u03b1\u03ba\u03ac\u03bf \u0395\u0394\u03a0 \u039a\u03af\u03bd\u03b1\u03c2", "MY": "\u039c\u03b1\u03bb\u03b1\u03b9\u03c3\u03af\u03b1", "MW": "\u039c\u03b1\u03bb\u03ac\u03bf\u03c5\u03b9", "MV": "\u039c\u03b1\u03bb\u03b4\u03af\u03b2\u03b5\u03c2", "ML": "\u039c\u03ac\u03bb\u03b9", "MT": "\u039c\u03ac\u03bb\u03c4\u03b1", "MA": "\u039c\u03b1\u03c1\u03cc\u03ba\u03bf", "MQ": "\u039c\u03b1\u03c1\u03c4\u03b9\u03bd\u03af\u03ba\u03b1", "MU": "\u039c\u03b1\u03c5\u03c1\u03af\u03ba\u03b9\u03bf\u03c2", "MR": "\u039c\u03b1\u03c5\u03c1\u03b9\u03c4\u03b1\u03bd\u03af\u03b1", "ME": "\u039c\u03b1\u03c5\u03c1\u03bf\u03b2\u03bf\u03cd\u03bd\u03b9\u03bf", "MX": "\u039c\u03b5\u03be\u03b9\u03ba\u03cc", "MM": "\u039c\u03b9\u03b1\u03bd\u03bc\u03ac\u03c1 (\u0392\u03b9\u03c1\u03bc\u03b1\u03bd\u03af\u03b1)", "MN": "\u039c\u03bf\u03b3\u03b3\u03bf\u03bb\u03af\u03b1", "MZ": "\u039c\u03bf\u03b6\u03b1\u03bc\u03b2\u03af\u03ba\u03b7", "MD": "\u039c\u03bf\u03bb\u03b4\u03b1\u03b2\u03af\u03b1", "MC": "\u039c\u03bf\u03bd\u03b1\u03ba\u03cc", "MS": "\u039c\u03bf\u03bd\u03c3\u03b5\u03c1\u03ac\u03c4", "BD": "\u039c\u03c0\u03b1\u03bd\u03b3\u03ba\u03bb\u03b1\u03bd\u03c4\u03ad\u03c2", "BB": "\u039c\u03c0\u03b1\u03c1\u03bc\u03c0\u03ad\u03b9\u03bd\u03c4\u03bf\u03c2", "BS": "\u039c\u03c0\u03b1\u03c7\u03ac\u03bc\u03b5\u03c2", "BH": "\u039c\u03c0\u03b1\u03c7\u03c1\u03ad\u03b9\u03bd", "BZ": "\u039c\u03c0\u03b5\u03bb\u03af\u03b6", "BJ": "\u039c\u03c0\u03b5\u03bd\u03af\u03bd", "BW": "\u039c\u03c0\u03bf\u03c4\u03c3\u03bf\u03c5\u03ac\u03bd\u03b1", "BF": "\u039c\u03c0\u03bf\u03c5\u03c1\u03ba\u03af\u03bd\u03b1 \u03a6\u03ac\u03c3\u03bf", "BI": "\u039c\u03c0\u03bf\u03c5\u03c1\u03bf\u03cd\u03bd\u03c4\u03b9", "BT": "\u039c\u03c0\u03bf\u03c5\u03c4\u03ac\u03bd", "BN": "\u039c\u03c0\u03c1\u03bf\u03c5\u03bd\u03ad\u03b9", "NA": "\u039d\u03b1\u03bc\u03af\u03bc\u03c0\u03b9\u03b1", "NR": "\u039d\u03b1\u03bf\u03c5\u03c1\u03bf\u03cd", "NZ": "\u039d\u03ad\u03b1 \u0396\u03b7\u03bb\u03b1\u03bd\u03b4\u03af\u03b1", "NC": "\u039d\u03ad\u03b1 \u039a\u03b1\u03bb\u03b7\u03b4\u03bf\u03bd\u03af\u03b1", "NP": "\u039d\u03b5\u03c0\u03ac\u03bb", "KY": "\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03ad\u03b9\u03bc\u03b1\u03bd", "CC": "\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03cc\u03ba\u03bf\u03c2 (\u039a\u03af\u03bb\u03b9\u03bd\u03b3\u03ba)", "CK": "\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03bf\u03c5\u03ba", "GS": "\u039d\u03ae\u03c3\u03bf\u03b9 \u039d\u03cc\u03c4\u03b9\u03b1 \u0393\u03b5\u03c9\u03c1\u03b3\u03af\u03b1 \u03ba\u03b1\u03b9 \u039d\u03cc\u03c4\u03b9\u03b5\u03c2 \u03a3\u03ac\u03bd\u03c4\u03bf\u03c5\u03b9\u03c4\u03c2", "AX": "\u039d\u03ae\u03c3\u03bf\u03b9 \u038c\u03bb\u03b1\u03bd\u03c4", "PN": "\u039d\u03ae\u03c3\u03bf\u03b9 \u03a0\u03af\u03c4\u03ba\u03b5\u03c1\u03bd", "SB": "\u039d\u03ae\u03c3\u03bf\u03b9 \u03a3\u03bf\u03bb\u03bf\u03bc\u03ce\u03bd\u03c4\u03bf\u03c2", "TC": "\u039d\u03ae\u03c3\u03bf\u03b9 \u03a4\u03b5\u03c1\u03ba\u03c2 \u03ba\u03b1\u03b9 \u039a\u03ac\u03b9\u03ba\u03bf\u03c2", "FO": "\u039d\u03ae\u03c3\u03bf\u03b9 \u03a6\u03b5\u03c1\u03cc\u03b5\u03c2", "FK": "\u039d\u03ae\u03c3\u03bf\u03b9 \u03a6\u03cc\u03ba\u03bb\u03b1\u03bd\u03c4", "HM": "\u039d\u03ae\u03c3\u03bf\u03b9 \u03a7\u03b5\u03c1\u03bd\u03c4 \u03ba\u03b1\u03b9 \u039c\u03b1\u03ba\u03bd\u03c4\u03cc\u03bd\u03b1\u03bb\u03bd\u03c4", "BV": "\u039d\u03ae\u03c3\u03bf\u03c2 \u039c\u03c0\u03bf\u03c5\u03b2\u03ad", "NF": "\u039d\u03ae\u03c3\u03bf\u03c2 \u039d\u03cc\u03c1\u03c6\u03bf\u03bb\u03ba", "IM": "\u039d\u03ae\u03c3\u03bf\u03c2 \u03c4\u03bf\u03c5 \u039c\u03b1\u03bd", "CX": "\u039d\u03ae\u03c3\u03bf\u03c2 \u03c4\u03c9\u03bd \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c5\u03b3\u03ad\u03bd\u03bd\u03c9\u03bd", "NE": "\u039d\u03af\u03b3\u03b7\u03c1\u03b1\u03c2", "NG": "\u039d\u03b9\u03b3\u03b7\u03c1\u03af\u03b1", "NI": "\u039d\u03b9\u03ba\u03b1\u03c1\u03ac\u03b3\u03bf\u03c5\u03b1", "NU": "\u039d\u03b9\u03bf\u03cd\u03b5", "NO": "\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03af\u03b1", "ZA": "\u039d\u03cc\u03c4\u03b9\u03b1 \u0391\u03c6\u03c1\u03b9\u03ba\u03ae", "KR": "\u039d\u03cc\u03c4\u03b9\u03b1 \u039a\u03bf\u03c1\u03ad\u03b1", "SS": "\u039d\u03cc\u03c4\u03b9\u03bf \u03a3\u03bf\u03c5\u03b4\u03ac\u03bd", "DM": "\u039d\u03c4\u03bf\u03bc\u03af\u03bd\u03b9\u03ba\u03b1", "NL": "\u039f\u03bb\u03bb\u03b1\u03bd\u03b4\u03af\u03b1", "BQ": "\u039f\u03bb\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 \u039a\u03b1\u03c1\u03b1\u03ca\u03b2\u03b9\u03ba\u03ae\u03c2", "OM": "\u039f\u03bc\u03ac\u03bd", "HN": "\u039f\u03bd\u03b4\u03bf\u03cd\u03c1\u03b1", "HU": "\u039f\u03c5\u03b3\u03b3\u03b1\u03c1\u03af\u03b1", "UG": "\u039f\u03c5\u03b3\u03ba\u03ac\u03bd\u03c4\u03b1", "UZ": "\u039f\u03c5\u03b6\u03bc\u03c0\u03b5\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd", "UA": "\u039f\u03c5\u03ba\u03c1\u03b1\u03bd\u03af\u03b1", "UY": "\u039f\u03c5\u03c1\u03bf\u03c5\u03b3\u03bf\u03c5\u03ac\u03b7", "PK": "\u03a0\u03b1\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd", "PW": "\u03a0\u03b1\u03bb\u03ac\u03bf\u03c5", "PA": "\u03a0\u03b1\u03bd\u03b1\u03bc\u03ac\u03c2", "PG": "\u03a0\u03b1\u03c0\u03bf\u03cd\u03b1 \u039d\u03ad\u03b1 \u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1", "PY": "\u03a0\u03b1\u03c1\u03b1\u03b3\u03bf\u03c5\u03ac\u03b7", "PE": "\u03a0\u03b5\u03c1\u03bf\u03cd", "PL": "\u03a0\u03bf\u03bb\u03c9\u03bd\u03af\u03b1", "PT": "\u03a0\u03bf\u03c1\u03c4\u03bf\u03b3\u03b1\u03bb\u03af\u03b1", "PR": "\u03a0\u03bf\u03c5\u03ad\u03c1\u03c4\u03bf \u03a1\u03af\u03ba\u03bf", "CV": "\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf \u0391\u03ba\u03c1\u03c9\u03c4\u03ae\u03c1\u03b9\u03bf", "RE": "\u03a1\u03b5\u03ca\u03bd\u03b9\u03cc\u03bd", "RW": "\u03a1\u03bf\u03c5\u03ac\u03bd\u03c4\u03b1", "RO": "\u03a1\u03bf\u03c5\u03bc\u03b1\u03bd\u03af\u03b1", "RU": "\u03a1\u03c9\u03c3\u03af\u03b1", "WS": "\u03a3\u03b1\u03bc\u03cc\u03b1", "ST": "\u03a3\u03ac\u03bf \u03a4\u03bf\u03bc\u03ad \u03ba\u03b1\u03b9 \u03a0\u03c1\u03af\u03bd\u03c3\u03b9\u03c0\u03b5", "SA": "\u03a3\u03b1\u03bf\u03c5\u03b4\u03b9\u03ba\u03ae \u0391\u03c1\u03b1\u03b2\u03af\u03b1", "SJ": "\u03a3\u03b2\u03ac\u03bb\u03bc\u03c0\u03b1\u03c1\u03bd\u03c4 \u03ba\u03b1\u03b9 \u0393\u03b9\u03b1\u03bd \u039c\u03b1\u03b3\u03b9\u03ad\u03bd", "KN": "\u03a3\u03b5\u03bd \u039a\u03b9\u03c4\u03c2 \u03ba\u03b1\u03b9 \u039d\u03ad\u03b2\u03b9\u03c2", "PM": "\u03a3\u03b5\u03bd \u03a0\u03b9\u03b5\u03c1 \u03ba\u03b1\u03b9 \u039c\u03b9\u03ba\u03b5\u03bb\u03cc\u03bd", "SN": "\u03a3\u03b5\u03bd\u03b5\u03b3\u03ac\u03bb\u03b7", "RS": "\u03a3\u03b5\u03c1\u03b2\u03af\u03b1", "SC": "\u03a3\u03b5\u03cb\u03c7\u03ad\u03bb\u03bb\u03b5\u03c2", "SG": "\u03a3\u03b9\u03b3\u03ba\u03b1\u03c0\u03bf\u03cd\u03c1\u03b7", "SL": "\u03a3\u03b9\u03ad\u03c1\u03b1 \u039b\u03b5\u03cc\u03bd\u03b5", "SK": "\u03a3\u03bb\u03bf\u03b2\u03b1\u03ba\u03af\u03b1", "SI": "\u03a3\u03bb\u03bf\u03b2\u03b5\u03bd\u03af\u03b1", "SO": "\u03a3\u03bf\u03bc\u03b1\u03bb\u03af\u03b1", "SZ": "\u03a3\u03bf\u03c5\u03b1\u03b6\u03b9\u03bb\u03ac\u03bd\u03b4\u03b7", "SD": "\u03a3\u03bf\u03c5\u03b4\u03ac\u03bd", "SE": "\u03a3\u03bf\u03c5\u03b7\u03b4\u03af\u03b1", "SR": "\u03a3\u03bf\u03c5\u03c1\u03b9\u03bd\u03ac\u03bc", "LK": "\u03a3\u03c1\u03b9 \u039b\u03ac\u03bd\u03ba\u03b1", "SY": "\u03a3\u03c5\u03c1\u03af\u03b1", "TW": "\u03a4\u03b1\u03ca\u03b2\u03ac\u03bd", "TH": "\u03a4\u03b1\u03ca\u03bb\u03ac\u03bd\u03b4\u03b7", "TZ": "\u03a4\u03b1\u03bd\u03b6\u03b1\u03bd\u03af\u03b1", "TJ": "\u03a4\u03b1\u03c4\u03b6\u03b9\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd", "JM": "\u03a4\u03b6\u03b1\u03bc\u03ac\u03b9\u03ba\u03b1", "DJ": "\u03a4\u03b6\u03b9\u03bc\u03c0\u03bf\u03c5\u03c4\u03af", "TL": "\u03a4\u03b9\u03bc\u03cc\u03c1-\u039b\u03ad\u03c3\u03c4\u03b5", "TG": "\u03a4\u03cc\u03b3\u03ba\u03bf", "TK": "\u03a4\u03bf\u03ba\u03b5\u03bb\u03ac\u03bf\u03c5", "TO": "\u03a4\u03cc\u03bd\u03b3\u03ba\u03b1", "TR": "\u03a4\u03bf\u03c5\u03c1\u03ba\u03af\u03b1", "TM": "\u03a4\u03bf\u03c5\u03c1\u03ba\u03bc\u03b5\u03bd\u03b9\u03c3\u03c4\u03ac\u03bd", "TT": "\u03a4\u03c1\u03b9\u03bd\u03b9\u03bd\u03c4\u03ac\u03bd\u03c4 \u03ba\u03b1\u03b9 \u03a4\u03bf\u03bc\u03c0\u03ac\u03b3\u03ba\u03bf", "TD": "\u03a4\u03c3\u03b1\u03bd\u03c4", "CZ": "\u03a4\u03c3\u03b5\u03c7\u03af\u03b1", "TN": "\u03a4\u03c5\u03bd\u03b7\u03c3\u03af\u03b1", "YE": "\u03a5\u03b5\u03bc\u03ad\u03bd\u03b7", "PH": "\u03a6\u03b9\u03bb\u03b9\u03c0\u03c0\u03af\u03bd\u03b5\u03c2", "FI": "\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03af\u03b1", "FJ": "\u03a6\u03af\u03c4\u03b6\u03b9", "CL": "\u03a7\u03b9\u03bb\u03ae", "HK": "\u03a7\u03bf\u03bd\u03b3\u03ba \u039a\u03bf\u03bd\u03b3\u03ba \u0395\u0394\u03a0 \u039a\u03af\u03bd\u03b1\u03c2"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/en.json000066400000000000000000000112451521174352300276660ustar00rootroot00000000000000{"AF": "Afghanistan", "AX": "\u00c5land Islands", "AL": "Albania", "DZ": "Algeria", "AS": "American Samoa", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarctica", "AG": "Antigua & Barbuda", "AR": "Argentina", "AM": "Armenia", "AW": "Aruba", "AU": "Australia", "AT": "Austria", "AZ": "Azerbaijan", "BS": "Bahamas", "BH": "Bahrain", "BD": "Bangladesh", "BB": "Barbados", "BY": "Belarus", "BE": "Belgium", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhutan", "BO": "Bolivia", "BA": "Bosnia & Herzegovina", "BW": "Botswana", "BV": "Bouvet Island", "BR": "Brazil", "IO": "British Indian Ocean Territory", "VG": "British Virgin Islands", "BN": "Brunei", "BG": "Bulgaria", "BF": "Burkina Faso", "BI": "Burundi", "KH": "Cambodia", "CM": "Cameroon", "CA": "Canada", "CV": "Cape Verde", "BQ": "Caribbean Netherlands", "KY": "Cayman Islands", "CF": "Central African Republic", "TD": "Chad", "CL": "Chile", "CN": "China", "CX": "Christmas Island", "CC": "Cocos (Keeling) Islands", "CO": "Colombia", "KM": "Comoros", "CG": "Congo - Brazzaville", "CD": "Congo - Kinshasa", "CK": "Cook Islands", "CR": "Costa Rica", "CI": "C\u00f4te d\u2019Ivoire", "HR": "Croatia", "CU": "Cuba", "CW": "Cura\u00e7ao", "CY": "Cyprus", "CZ": "Czechia", "DK": "Denmark", "DJ": "Djibouti", "DM": "Dominica", "DO": "Dominican Republic", "EC": "Ecuador", "EG": "Egypt", "SV": "El Salvador", "GQ": "Equatorial Guinea", "ER": "Eritrea", "EE": "Estonia", "SZ": "Eswatini", "ET": "Ethiopia", "FK": "Falkland Islands", "FO": "Faroe Islands", "FJ": "Fiji", "FI": "Finland", "FR": "France", "GF": "French Guiana", "PF": "French Polynesia", "TF": "French Southern Territories", "GA": "Gabon", "GM": "Gambia", "GE": "Georgia", "DE": "Germany", "GH": "Ghana", "GI": "Gibraltar", "GR": "Greece", "GL": "Greenland", "GD": "Grenada", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GW": "Guinea-Bissau", "GY": "Guyana", "HT": "Haiti", "HM": "Heard & McDonald Islands", "HN": "Honduras", "HK": "Hong Kong SAR China", "HU": "Hungary", "IS": "Iceland", "IN": "India", "ID": "Indonesia", "IR": "Iran", "IQ": "Iraq", "IE": "Ireland", "IM": "Isle of Man", "IL": "Israel", "IT": "Italy", "JM": "Jamaica", "JP": "Japan", "JO": "Jordan", "KZ": "Kazakhstan", "KE": "Kenya", "KI": "Kiribati", "KW": "Kuwait", "KG": "Kyrgyzstan", "LA": "Laos", "LV": "Latvia", "LB": "Lebanon", "LS": "Lesotho", "LR": "Liberia", "LY": "Libya", "LI": "Liechtenstein", "LT": "Lithuania", "LU": "Luxembourg", "MO": "Macao SAR China", "MG": "Madagascar", "MW": "Malawi", "MY": "Malaysia", "MV": "Maldives", "ML": "Mali", "MT": "Malta", "MQ": "Martinique", "MR": "Mauritania", "MU": "Mauritius", "YT": "Mayotte", "MX": "Mexico", "MD": "Moldova", "MC": "Monaco", "MN": "Mongolia", "ME": "Montenegro", "MS": "Montserrat", "MA": "Morocco", "MZ": "Mozambique", "MM": "Myanmar (Burma)", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NL": "Netherlands", "NC": "New Caledonia", "NZ": "New Zealand", "NI": "Nicaragua", "NE": "Niger", "NG": "Nigeria", "NU": "Niue", "NF": "Norfolk Island", "KP": "North Korea", "MK": "North Macedonia", "NO": "Norway", "OM": "Oman", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua New Guinea", "PY": "Paraguay", "PE": "Peru", "PH": "Philippines", "PN": "Pitcairn Islands", "PL": "Poland", "PT": "Portugal", "PR": "Puerto Rico", "QA": "Qatar", "RE": "R\u00e9union", "RO": "Romania", "RU": "Russia", "RW": "Rwanda", "WS": "Samoa", "SM": "San Marino", "ST": "S\u00e3o Tom\u00e9 & Pr\u00edncipe", "SA": "Saudi Arabia", "SN": "Senegal", "RS": "Serbia", "SC": "Seychelles", "SL": "Sierra Leone", "SG": "Singapore", "SX": "Sint Maarten", "SK": "Slovakia", "SI": "Slovenia", "SB": "Solomon Islands", "SO": "Somalia", "ZA": "South Africa", "GS": "South Georgia & South Sandwich Islands", "KR": "South Korea", "SS": "South Sudan", "ES": "Spain", "LK": "Sri Lanka", "BL": "St. Barth\u00e9lemy", "SH": "St. Helena", "KN": "St. Kitts & Nevis", "LC": "St. Lucia", "MF": "St. Martin", "PM": "St. Pierre & Miquelon", "VC": "St. Vincent & Grenadines", "SD": "Sudan", "SR": "Suriname", "SJ": "Svalbard & Jan Mayen", "SE": "Sweden", "CH": "Switzerland", "SY": "Syria", "TW": "Taiwan", "TJ": "Tajikistan", "TZ": "Tanzania", "TH": "Thailand", "TL": "Timor-Leste", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad & Tobago", "TN": "Tunisia", "TR": "Turkey", "TM": "Turkmenistan", "TC": "Turks & Caicos Islands", "VI": "U.S. Virgin Islands", "UG": "Uganda", "UA": "Ukraine", "AE": "United Arab Emirates", "GB": "United Kingdom", "US": "United States", "UY": "Uruguay", "UZ": "Uzbekistan", "VU": "Vanuatu", "VA": "Vatican City", "VE": "Venezuela", "VN": "Vietnam", "WF": "Wallis & Futuna", "EH": "Western Sahara", "YE": "Yemen", "ZM": "Zambia", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/es.json000066400000000000000000000117701521174352300276760ustar00rootroot00000000000000{"AF": "Afganist\u00e1n", "AL": "Albania", "DE": "Alemania", "AD": "Andorra", "AO": "Angola", "AI": "Anguila", "AQ": "Ant\u00e1rtida", "AG": "Antigua y Barbuda", "SA": "Arabia Saud\u00ed", "DZ": "Argelia", "AR": "Argentina", "AM": "Armenia", "AW": "Aruba", "AU": "Australia", "AT": "Austria", "AZ": "Azerbaiy\u00e1n", "BS": "Bahamas", "BD": "Banglad\u00e9s", "BB": "Barbados", "BH": "Bar\u00e9in", "BE": "B\u00e9lgica", "BZ": "Belice", "BJ": "Ben\u00edn", "BM": "Bermudas", "BY": "Bielorrusia", "BO": "Bolivia", "BA": "Bosnia y Herzegovina", "BW": "Botsuana", "BR": "Brasil", "BN": "Brun\u00e9i", "BG": "Bulgaria", "BF": "Burkina Faso", "BI": "Burundi", "BT": "But\u00e1n", "CV": "Cabo Verde", "KH": "Camboya", "CM": "Camer\u00fan", "CA": "Canad\u00e1", "BQ": "Caribe neerland\u00e9s", "QA": "Catar", "TD": "Chad", "CZ": "Chequia", "CL": "Chile", "CN": "China", "CY": "Chipre", "VA": "Ciudad del Vaticano", "CO": "Colombia", "KM": "Comoras", "CG": "Congo", "KP": "Corea del Norte", "KR": "Corea del Sur", "CR": "Costa Rica", "CI": "C\u00f4te d\u2019Ivoire", "HR": "Croacia", "CU": "Cuba", "CW": "Curazao", "DK": "Dinamarca", "DM": "Dominica", "EC": "Ecuador", "EG": "Egipto", "SV": "El Salvador", "AE": "Emiratos \u00c1rabes Unidos", "ER": "Eritrea", "SK": "Eslovaquia", "SI": "Eslovenia", "ES": "Espa\u00f1a", "US": "Estados Unidos", "EE": "Estonia", "SZ": "Esuatini", "ET": "Etiop\u00eda", "PH": "Filipinas", "FI": "Finlandia", "FJ": "Fiyi", "FR": "Francia", "GA": "Gab\u00f3n", "GM": "Gambia", "GE": "Georgia", "GH": "Ghana", "GI": "Gibraltar", "GD": "Granada", "GR": "Grecia", "GL": "Groenlandia", "GP": "Guadalupe", "GU": "Guam", "GT": "Guatemala", "GF": "Guayana Francesa", "GG": "Guernsey", "GN": "Guinea", "GQ": "Guinea Ecuatorial", "GW": "Guinea-Bis\u00e1u", "GY": "Guyana", "HT": "Hait\u00ed", "HN": "Honduras", "HU": "Hungr\u00eda", "IN": "India", "ID": "Indonesia", "IQ": "Irak", "IR": "Ir\u00e1n", "IE": "Irlanda", "BV": "Isla Bouvet", "IM": "Isla de Man", "CX": "Isla de Navidad", "NF": "Isla Norfolk", "IS": "Islandia", "AX": "Islas \u00c5land", "KY": "Islas Caim\u00e1n", "CC": "Islas Cocos", "CK": "Islas Cook", "FO": "Islas Feroe", "GS": "Islas Georgia del Sur y Sandwich del Sur", "HM": "Islas Heard y McDonald", "FK": "Islas Malvinas", "PN": "Islas Pitcairn", "SB": "Islas Salom\u00f3n", "TC": "Islas Turcas y Caicos", "VG": "Islas V\u00edrgenes Brit\u00e1nicas", "VI": "Islas V\u00edrgenes de EE. UU.", "IL": "Israel", "IT": "Italia", "JM": "Jamaica", "JP": "Jap\u00f3n", "JO": "Jordania", "KZ": "Kazajist\u00e1n", "KE": "Kenia", "KG": "Kirguist\u00e1n", "KI": "Kiribati", "KW": "Kuwait", "LA": "Laos", "LS": "Lesoto", "LV": "Letonia", "LB": "L\u00edbano", "LR": "Liberia", "LY": "Libia", "LI": "Liechtenstein", "LT": "Lituania", "LU": "Luxemburgo", "MK": "Macedonia del Norte", "MG": "Madagascar", "MY": "Malasia", "MW": "Malaui", "MV": "Maldivas", "ML": "Mali", "MT": "Malta", "MA": "Marruecos", "MQ": "Martinica", "MU": "Mauricio", "MR": "Mauritania", "YT": "Mayotte", "MX": "M\u00e9xico", "MD": "Moldavia", "MC": "M\u00f3naco", "MN": "Mongolia", "ME": "Montenegro", "MS": "Montserrat", "MZ": "Mozambique", "MM": "Myanmar (Birmania)", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NI": "Nicaragua", "NE": "N\u00edger", "NG": "Nigeria", "NU": "Niue", "NO": "Noruega", "NC": "Nueva Caledonia", "NZ": "Nueva Zelanda", "OM": "Om\u00e1n", "NL": "Pa\u00edses Bajos", "PK": "Pakist\u00e1n", "PW": "Palaos", "PA": "Panam\u00e1", "PG": "Pap\u00faa Nueva Guinea", "PY": "Paraguay", "PE": "Per\u00fa", "PF": "Polinesia Francesa", "PL": "Polonia", "PT": "Portugal", "PR": "Puerto Rico", "HK": "RAE de Hong Kong (China)", "MO": "RAE de Macao (China)", "GB": "Reino Unido", "CF": "Rep\u00fablica Centroafricana", "CD": "Rep\u00fablica Democr\u00e1tica del Congo", "DO": "Rep\u00fablica Dominicana", "RE": "Reuni\u00f3n", "RW": "Ruanda", "RO": "Ruman\u00eda", "RU": "Rusia", "EH": "S\u00e1hara Occidental", "WS": "Samoa", "AS": "Samoa Americana", "BL": "San Bartolom\u00e9", "KN": "San Crist\u00f3bal y Nieves", "SM": "San Marino", "MF": "San Mart\u00edn", "PM": "San Pedro y Miquel\u00f3n", "VC": "San Vicente y las Granadinas", "SH": "Santa Elena", "LC": "Santa Luc\u00eda", "ST": "Santo Tom\u00e9 y Pr\u00edncipe", "SN": "Senegal", "RS": "Serbia", "SC": "Seychelles", "SL": "Sierra Leona", "SG": "Singapur", "SX": "Sint Maarten", "SY": "Siria", "SO": "Somalia", "LK": "Sri Lanka", "ZA": "Sud\u00e1frica", "SD": "Sud\u00e1n", "SS": "Sud\u00e1n del Sur", "SE": "Suecia", "CH": "Suiza", "SR": "Surinam", "SJ": "Svalbard y Jan Mayen", "TH": "Tailandia", "TW": "Taiw\u00e1n", "TZ": "Tanzania", "TJ": "Tayikist\u00e1n", "IO": "Territorio Brit\u00e1nico del Oc\u00e9ano \u00cdndico", "TF": "Territorios Australes Franceses", "TL": "Timor-Leste", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad y Tobago", "TN": "T\u00fanez", "TM": "Turkmenist\u00e1n", "TR": "Turqu\u00eda", "UA": "Ucrania", "UG": "Uganda", "UY": "Uruguay", "UZ": "Uzbekist\u00e1n", "VU": "Vanuatu", "VE": "Venezuela", "VN": "Vietnam", "WF": "Wallis y Futuna", "YE": "Yemen", "DJ": "Yibuti", "ZM": "Zambia", "ZW": "Zimbabue"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/fa.json000066400000000000000000000333561521174352300276610ustar00rootroot00000000000000{"AR": "\u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646", "AW": "\u0622\u0631\u0648\u0628\u0627", "AL": "\u0622\u0644\u0628\u0627\u0646\u06cc", "DE": "\u0622\u0644\u0645\u0627\u0646", "AG": "\u0622\u0646\u062a\u06cc\u06af\u0648\u0627 \u0648 \u0628\u0627\u0631\u0628\u0648\u062f\u0627", "AD": "\u0622\u0646\u062f\u0648\u0631\u0627", "AO": "\u0622\u0646\u06af\u0648\u0644\u0627", "AI": "\u0622\u0646\u06af\u0648\u06cc\u0644\u0627", "AT": "\u0627\u062a\u0631\u06cc\u0634", "ET": "\u0627\u062a\u06cc\u0648\u067e\u06cc", "JO": "\u0627\u0631\u062f\u0646", "AM": "\u0627\u0631\u0645\u0646\u0633\u062a\u0627\u0646", "UY": "\u0627\u0631\u0648\u06af\u0648\u0626\u0647", "ER": "\u0627\u0631\u06cc\u062a\u0631\u0647", "UZ": "\u0627\u0632\u0628\u06a9\u0633\u062a\u0627\u0646", "ES": "\u0627\u0633\u067e\u0627\u0646\u06cc\u0627", "AU": "\u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627", "EE": "\u0627\u0633\u062a\u0648\u0646\u06cc", "IL": "\u0627\u0633\u0631\u0627\u0626\u06cc\u0644", "SK": "\u0627\u0633\u0644\u0648\u0627\u06a9\u06cc", "SI": "\u0627\u0633\u0644\u0648\u0648\u0646\u06cc", "SZ": "\u0627\u0633\u0648\u0627\u062a\u06cc\u0646\u06cc", "ZA": "\u0627\u0641\u0631\u06cc\u0642\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc", "AF": "\u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646", "EC": "\u0627\u06a9\u0648\u0627\u062f\u0648\u0631", "DZ": "\u0627\u0644\u062c\u0632\u0627\u06cc\u0631", "SV": "\u0627\u0644\u0633\u0627\u0644\u0648\u0627\u062f\u0648\u0631", "AE": "\u0627\u0645\u0627\u0631\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0639\u0631\u0628\u06cc", "ID": "\u0627\u0646\u062f\u0648\u0646\u0632\u06cc", "UA": "\u0627\u0648\u06a9\u0631\u0627\u06cc\u0646", "UG": "\u0627\u0648\u06af\u0627\u0646\u062f\u0627", "US": "\u0627\u06cc\u0627\u0644\u0627\u062a \u0645\u062a\u062d\u062f\u0647", "IT": "\u0627\u06cc\u062a\u0627\u0644\u06cc\u0627", "IR": "\u0627\u06cc\u0631\u0627\u0646", "IE": "\u0627\u06cc\u0631\u0644\u0646\u062f", "IS": "\u0627\u06cc\u0633\u0644\u0646\u062f", "BB": "\u0628\u0627\u0631\u0628\u0627\u062f\u0648\u0633", "BS": "\u0628\u0627\u0647\u0627\u0645\u0627", "BH": "\u0628\u062d\u0631\u06cc\u0646", "BR": "\u0628\u0631\u0632\u06cc\u0644", "BM": "\u0628\u0631\u0645\u0648\u062f\u0627", "BN": "\u0628\u0631\u0648\u0646\u0626\u06cc", "GB": "\u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627", "BY": "\u0628\u0644\u0627\u0631\u0648\u0633", "BE": "\u0628\u0644\u0698\u06cc\u06a9", "BG": "\u0628\u0644\u063a\u0627\u0631\u0633\u062a\u0627\u0646", "BZ": "\u0628\u0644\u06cc\u0632", "BD": "\u0628\u0646\u06af\u0644\u0627\u062f\u0634", "BJ": "\u0628\u0646\u06cc\u0646", "BT": "\u0628\u0648\u062a\u0627\u0646", "BW": "\u0628\u0648\u062a\u0633\u0648\u0627\u0646\u0627", "BF": "\u0628\u0648\u0631\u06a9\u06cc\u0646\u0627\u0641\u0627\u0633\u0648", "BI": "\u0628\u0648\u0631\u0648\u0646\u062f\u06cc", "BA": "\u0628\u0648\u0633\u0646\u06cc \u0648 \u0647\u0631\u0632\u06af\u0648\u06cc\u0646", "BO": "\u0628\u0648\u0644\u06cc\u0648\u06cc", "PG": "\u067e\u0627\u067e\u0648\u0627 \u06af\u06cc\u0646\u0647\u0654 \u0646\u0648", "PY": "\u067e\u0627\u0631\u0627\u06af\u0648\u0626\u0647", "PK": "\u067e\u0627\u06a9\u0633\u062a\u0627\u0646", "PW": "\u067e\u0627\u0644\u0627\u0626\u0648", "PA": "\u067e\u0627\u0646\u0627\u0645\u0627", "PT": "\u067e\u0631\u062a\u063a\u0627\u0644", "PE": "\u067e\u0631\u0648", "PF": "\u067e\u0644\u06cc\u200c\u0646\u0632\u06cc \u0641\u0631\u0627\u0646\u0633\u0647", "PR": "\u067e\u0648\u0631\u062a\u0648\u0631\u06cc\u06a9\u0648", "TJ": "\u062a\u0627\u062c\u06cc\u06a9\u0633\u062a\u0627\u0646", "TZ": "\u062a\u0627\u0646\u0632\u0627\u0646\u06cc\u0627", "TH": "\u062a\u0627\u06cc\u0644\u0646\u062f", "TW": "\u062a\u0627\u06cc\u0648\u0627\u0646", "TM": "\u062a\u0631\u06a9\u0645\u0646\u0633\u062a\u0627\u0646", "TR": "\u062a\u0631\u06a9\u06cc\u0647", "TT": "\u062a\u0631\u06cc\u0646\u06cc\u062f\u0627\u062f \u0648 \u062a\u0648\u0628\u0627\u06af\u0648", "TK": "\u062a\u0648\u06a9\u0644\u0627\u0626\u0648", "TG": "\u062a\u0648\u06af\u0648", "TN": "\u062a\u0648\u0646\u0633", "TO": "\u062a\u0648\u0646\u06af\u0627", "TL": "\u062a\u06cc\u0645\u0648\u0631-\u0644\u0633\u062a\u0647", "JM": "\u062c\u0627\u0645\u0627\u0626\u06cc\u06a9\u0627", "GI": "\u062c\u0628\u0644\u200c\u0627\u0644\u0637\u0627\u0631\u0642", "AX": "\u062c\u0632\u0627\u06cc\u0631 \u0622\u0644\u0627\u0646\u062f", "PN": "\u062c\u0632\u0627\u06cc\u0631 \u067e\u06cc\u062a\u200c\u06a9\u0631\u0646", "TC": "\u062c\u0632\u0627\u06cc\u0631 \u062a\u0648\u0631\u06a9\u0633 \u0648 \u06a9\u0627\u06cc\u06a9\u0648\u0633", "SB": "\u062c\u0632\u0627\u06cc\u0631 \u0633\u0644\u06cc\u0645\u0627\u0646", "FO": "\u062c\u0632\u0627\u06cc\u0631 \u0641\u0627\u0631\u0648", "FK": "\u062c\u0632\u0627\u06cc\u0631 \u0641\u0627\u0644\u06a9\u0644\u0646\u062f", "BQ": "\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0627\u0631\u0627\u0626\u06cc\u0628 \u0647\u0644\u0646\u062f", "CK": "\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u06a9", "CC": "\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u06a9\u0648\u0633", "KY": "\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0650\u06cc\u0645\u0646", "VI": "\u062c\u0632\u0627\u06cc\u0631 \u0648\u06cc\u0631\u062c\u06cc\u0646 \u0627\u06cc\u0627\u0644\u0627\u062a \u0645\u062a\u062d\u062f\u0647", "VG": "\u062c\u0632\u0627\u06cc\u0631 \u0648\u06cc\u0631\u062c\u06cc\u0646 \u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627", "BV": "\u062c\u0632\u06cc\u0631\u0647\u0654 \u0628\u0648\u0648\u0647", "CX": "\u062c\u0632\u06cc\u0631\u0647\u0654 \u06a9\u0631\u06cc\u0633\u0645\u0633", "IM": "\u062c\u0632\u06cc\u0631\u0647\u0654 \u0645\u0646", "NF": "\u062c\u0632\u06cc\u0631\u0647\u0654 \u0646\u0648\u0631\u0641\u0648\u0644\u06a9", "AZ": "\u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646", "CF": "\u062c\u0645\u0647\u0648\u0631\u06cc \u0627\u0641\u0631\u06cc\u0642\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc", "DO": "\u062c\u0645\u0647\u0648\u0631\u06cc \u062f\u0648\u0645\u06cc\u0646\u06cc\u06a9\u0646", "AQ": "\u062c\u0646\u0648\u0628\u06af\u0627\u0646", "GS": "\u062c\u0648\u0631\u062c\u06cc\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc \u0648 \u062c\u0632\u0627\u06cc\u0631 \u0633\u0627\u0646\u062f\u0648\u06cc\u0686 \u062c\u0646\u0648\u0628\u06cc", "DJ": "\u062c\u06cc\u0628\u0648\u062a\u06cc", "TD": "\u0686\u0627\u062f", "CZ": "\u0686\u06a9", "CN": "\u0686\u06cc\u0646", "DK": "\u062f\u0627\u0646\u0645\u0627\u0631\u06a9", "DM": "\u062f\u0648\u0645\u06cc\u0646\u06cc\u06a9\u0627", "RE": "\u0631\u0626\u0648\u0646\u06cc\u0648\u0646", "RW": "\u0631\u0648\u0627\u0646\u062f\u0627", "RU": "\u0631\u0648\u0633\u06cc\u0647", "RO": "\u0631\u0648\u0645\u0627\u0646\u06cc", "ZM": "\u0632\u0627\u0645\u0628\u06cc\u0627", "ZW": "\u0632\u06cc\u0645\u0628\u0627\u0628\u0648\u0647", "JP": "\u0698\u0627\u067e\u0646", "ST": "\u0633\u0627\u0626\u0648\u062a\u0648\u0645\u0647 \u0648 \u067e\u0631\u06cc\u0646\u0633\u06cc\u067e", "CI": "\u0633\u0627\u062d\u0644 \u0639\u0627\u062c", "WS": "\u0633\u0627\u0645\u0648\u0622", "AS": "\u0633\u0627\u0645\u0648\u0622\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627", "SM": "\u0633\u0627\u0646\u200c\u0645\u0627\u0631\u06cc\u0646\u0648", "TF": "\u0633\u0631\u0632\u0645\u06cc\u0646\u200c\u0647\u0627\u06cc \u062c\u0646\u0648\u0628 \u0641\u0631\u0627\u0646\u0633\u0647", "LK": "\u0633\u0631\u06cc\u200c\u0644\u0627\u0646\u06a9\u0627", "BL": "\u0633\u0646 \u0628\u0627\u0631\u062a\u0644\u0645\u06cc", "PM": "\u0633\u0646 \u067e\u06cc\u0631 \u0648 \u0645\u06cc\u06a9\u0644\u0646", "KN": "\u0633\u0646\u062a \u06a9\u06cc\u062a\u0633 \u0648 \u0646\u0648\u06cc\u0633", "LC": "\u0633\u0646\u062a \u0644\u0648\u0633\u06cc\u0627", "SX": "\u0633\u0646\u062a \u0645\u0627\u0631\u062a\u0646", "MF": "\u0633\u0646\u062a \u0645\u0627\u0631\u062a\u06cc\u0646", "VC": "\u0633\u0646\u062a \u0648\u06cc\u0646\u0633\u0646\u062a \u0648 \u06af\u0631\u0646\u0627\u062f\u06cc\u0646", "SH": "\u0633\u0646\u062a \u0647\u0644\u0646", "SG": "\u0633\u0646\u06af\u0627\u067e\u0648\u0631", "SN": "\u0633\u0646\u06af\u0627\u0644", "SJ": "\u0633\u0648\u0627\u0644\u0628\u0627\u0631\u062f \u0648 \u06cc\u0627\u0646 \u0645\u0627\u06cc\u0646", "SE": "\u0633\u0648\u0626\u062f", "CH": "\u0633\u0648\u0626\u06cc\u0633", "SD": "\u0633\u0648\u062f\u0627\u0646", "SS": "\u0633\u0648\u062f\u0627\u0646 \u062c\u0646\u0648\u0628\u06cc", "SR": "\u0633\u0648\u0631\u06cc\u0646\u0627\u0645", "SY": "\u0633\u0648\u0631\u06cc\u0647", "SO": "\u0633\u0648\u0645\u0627\u0644\u06cc", "SL": "\u0633\u06cc\u0631\u0627\u0644\u0626\u0648\u0646", "SC": "\u0633\u06cc\u0634\u0644", "CL": "\u0634\u06cc\u0644\u06cc", "EH": "\u0635\u062d\u0631\u0627\u06cc \u063a\u0631\u0628\u06cc", "RS": "\u0635\u0631\u0628\u0633\u062a\u0627\u0646", "IQ": "\u0639\u0631\u0627\u0642", "SA": "\u0639\u0631\u0628\u0633\u062a\u0627\u0646 \u0633\u0639\u0648\u062f\u06cc", "OM": "\u0639\u0645\u0627\u0646", "GH": "\u063a\u0646\u0627", "FR": "\u0641\u0631\u0627\u0646\u0633\u0647", "FI": "\u0641\u0646\u0644\u0627\u0646\u062f", "FJ": "\u0641\u06cc\u062c\u06cc", "PH": "\u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646", "CY": "\u0642\u0628\u0631\u0633", "KG": "\u0642\u0631\u0642\u06cc\u0632\u0633\u062a\u0627\u0646", "KZ": "\u0642\u0632\u0627\u0642\u0633\u062a\u0627\u0646", "QA": "\u0642\u0637\u0631", "IO": "\u0642\u0644\u0645\u0631\u0648 \u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 \u062f\u0631 \u0627\u0642\u06cc\u0627\u0646\u0648\u0633 \u0647\u0646\u062f", "CR": "\u06a9\u0627\u0633\u062a\u0627\u0631\u06cc\u06a9\u0627", "NC": "\u06a9\u0627\u0644\u062f\u0648\u0646\u06cc\u0627\u06cc \u062c\u062f\u06cc\u062f", "KH": "\u06a9\u0627\u0645\u0628\u0648\u062c", "CM": "\u06a9\u0627\u0645\u0631\u0648\u0646", "CA": "\u06a9\u0627\u0646\u0627\u062f\u0627", "HR": "\u06a9\u0631\u0648\u0627\u0633\u06cc", "KR": "\u06a9\u0631\u0647\u0654 \u062c\u0646\u0648\u0628\u06cc", "KP": "\u06a9\u0631\u0647\u0654 \u0634\u0645\u0627\u0644\u06cc", "CO": "\u06a9\u0644\u0645\u0628\u06cc\u0627", "CG": "\u06a9\u0646\u06af\u0648 - \u0628\u0631\u0627\u0632\u0648\u06cc\u0644", "CD": "\u06a9\u0646\u06af\u0648 - \u06a9\u06cc\u0646\u0634\u0627\u0633\u0627", "KE": "\u06a9\u0646\u06cc\u0627", "CU": "\u06a9\u0648\u0628\u0627", "CW": "\u06a9\u0648\u0631\u0627\u0633\u0627\u0626\u0648", "KM": "\u06a9\u0648\u0645\u0648\u0631", "KW": "\u06a9\u0648\u06cc\u062a", "CV": "\u06a9\u06cc\u067e\u200c\u0648\u0631\u062f", "KI": "\u06a9\u06cc\u0631\u06cc\u0628\u0627\u062a\u06cc", "GA": "\u06af\u0627\u0628\u0646", "GM": "\u06af\u0627\u0645\u0628\u06cc\u0627", "GE": "\u06af\u0631\u062c\u0633\u062a\u0627\u0646", "GD": "\u06af\u0631\u0646\u0627\u062f\u0627", "GG": "\u06af\u0631\u0646\u0632\u06cc", "GL": "\u06af\u0631\u06cc\u0646\u0644\u0646\u062f", "GT": "\u06af\u0648\u0627\u062a\u0645\u0627\u0644\u0627", "GP": "\u06af\u0648\u0627\u062f\u0644\u0648\u067e", "GU": "\u06af\u0648\u0627\u0645", "GY": "\u06af\u0648\u06cc\u0627\u0646", "GF": "\u06af\u0648\u06cc\u0627\u0646 \u0641\u0631\u0627\u0646\u0633\u0647", "GN": "\u06af\u06cc\u0646\u0647", "GQ": "\u06af\u06cc\u0646\u0647\u0654 \u0627\u0633\u062a\u0648\u0627\u06cc\u06cc", "GW": "\u06af\u06cc\u0646\u0647\u0654 \u0628\u06cc\u0633\u0627\u0626\u0648", "LA": "\u0644\u0627\u0626\u0648\u0633", "LB": "\u0644\u0628\u0646\u0627\u0646", "LV": "\u0644\u062a\u0648\u0646\u06cc", "LS": "\u0644\u0633\u0648\u062a\u0648", "LU": "\u0644\u0648\u06a9\u0632\u0627\u0645\u0628\u0648\u0631\u06af", "PL": "\u0644\u0647\u0633\u062a\u0627\u0646", "LR": "\u0644\u06cc\u0628\u0631\u06cc\u0627", "LY": "\u0644\u06cc\u0628\u06cc", "LT": "\u0644\u06cc\u062a\u0648\u0627\u0646\u06cc", "LI": "\u0644\u06cc\u062e\u062a\u0646\u200c\u0627\u0634\u062a\u0627\u06cc\u0646", "MG": "\u0645\u0627\u062f\u0627\u06af\u0627\u0633\u06a9\u0627\u0631", "MQ": "\u0645\u0627\u0631\u062a\u06cc\u0646\u06cc\u06a9", "MO": "\u0645\u0627\u06a9\u0627\u0626\u0648\u060c \u0645\u0646\u0637\u0642\u0647\u0654 \u0648\u06cc\u0698\u0647\u0654 \u0627\u062f\u0627\u0631\u06cc \u0686\u06cc\u0646", "MW": "\u0645\u0627\u0644\u0627\u0648\u06cc", "MT": "\u0645\u0627\u0644\u062a", "MV": "\u0645\u0627\u0644\u062f\u06cc\u0648", "MY": "\u0645\u0627\u0644\u0632\u06cc", "ML": "\u0645\u0627\u0644\u06cc", "YT": "\u0645\u0627\u06cc\u0648\u062a", "HU": "\u0645\u062c\u0627\u0631\u0633\u062a\u0627\u0646", "MA": "\u0645\u0631\u0627\u06a9\u0634", "EG": "\u0645\u0635\u0631", "MN": "\u0645\u063a\u0648\u0644\u0633\u062a\u0627\u0646", "MK": "\u0645\u0642\u062f\u0648\u0646\u06cc\u0647\u0654 \u0634\u0645\u0627\u0644\u06cc", "MX": "\u0645\u06a9\u0632\u06cc\u06a9", "MR": "\u0645\u0648\u0631\u06cc\u062a\u0627\u0646\u06cc", "MU": "\u0645\u0648\u0631\u06cc\u0633", "MZ": "\u0645\u0648\u0632\u0627\u0645\u0628\u06cc\u06a9", "MD": "\u0645\u0648\u0644\u062f\u0627\u0648\u06cc", "MC": "\u0645\u0648\u0646\u0627\u06a9\u0648", "MS": "\u0645\u0648\u0646\u062a\u200c\u0633\u0631\u0627\u062a", "ME": "\u0645\u0648\u0646\u062a\u0647\u200c\u0646\u06af\u0631\u0648", "MM": "\u0645\u06cc\u0627\u0646\u0645\u0627\u0631 (\u0628\u0631\u0645\u0647)", "NR": "\u0646\u0627\u0626\u0648\u0631\u0648", "NA": "\u0646\u0627\u0645\u06cc\u0628\u06cc\u0627", "NP": "\u0646\u067e\u0627\u0644", "NO": "\u0646\u0631\u0648\u0698", "NE": "\u0646\u06cc\u062c\u0631", "NG": "\u0646\u06cc\u062c\u0631\u06cc\u0647", "NI": "\u0646\u06cc\u06a9\u0627\u0631\u0627\u06af\u0648\u0626\u0647", "NU": "\u0646\u06cc\u0648\u0626\u0647", "NZ": "\u0646\u06cc\u0648\u0632\u06cc\u0644\u0646\u062f", "VA": "\u0648\u0627\u062a\u06cc\u06a9\u0627\u0646", "WF": "\u0648\u0627\u0644\u06cc\u0633 \u0648 \u0641\u0648\u062a\u0648\u0646\u0627", "VU": "\u0648\u0627\u0646\u0648\u0627\u062a\u0648", "VE": "\u0648\u0646\u0632\u0648\u0626\u0644\u0627", "VN": "\u0648\u06cc\u062a\u0646\u0627\u0645", "HT": "\u0647\u0627\u0626\u06cc\u062a\u06cc", "HM": "\u0647\u0631\u062f \u0648 \u062c\u0632\u0627\u06cc\u0631 \u0645\u06a9\u200c\u062f\u0648\u0646\u0627\u0644\u062f", "NL": "\u0647\u0644\u0646\u062f", "IN": "\u0647\u0646\u062f", "HN": "\u0647\u0646\u062f\u0648\u0631\u0627\u0633", "HK": "\u0647\u0646\u06af\u200c\u06a9\u0646\u06af\u060c \u0645\u0646\u0637\u0642\u0647\u0654 \u0648\u06cc\u0698\u0647\u0654 \u0627\u062f\u0627\u0631\u06cc \u0686\u06cc\u0646", "YE": "\u06cc\u0645\u0646", "GR": "\u06cc\u0648\u0646\u0627\u0646"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/fi.json000066400000000000000000000115221521174352300276600ustar00rootroot00000000000000{"AF": "Afganistan", "AX": "Ahvenanmaa", "NL": "Alankomaat", "AL": "Albania", "DZ": "Algeria", "AS": "Amerikan Samoa", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarktis", "AG": "Antigua ja Barbuda", "AE": "Arabiemiirikunnat", "AR": "Argentiina", "AM": "Armenia", "AW": "Aruba", "AU": "Australia", "AZ": "Azerbaid\u017ean", "BS": "Bahama", "BH": "Bahrain", "BD": "Bangladesh", "BB": "Barbados", "BE": "Belgia", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhutan", "BO": "Bolivia", "BA": "Bosnia ja Hertsegovina", "BW": "Botswana", "BV": "Bouvet\u2019nsaari", "BR": "Brasilia", "IO": "Brittil\u00e4inen Intian valtameren alue", "VG": "Brittil\u00e4iset Neitsytsaaret", "BN": "Brunei", "BG": "Bulgaria", "BF": "Burkina Faso", "BI": "Burundi", "KY": "Caymansaaret", "CL": "Chile", "CK": "Cookinsaaret", "CR": "Costa Rica", "CW": "Cura\u00e7ao", "DJ": "Djibouti", "DM": "Dominica", "DO": "Dominikaaninen tasavalta", "EC": "Ecuador", "EG": "Egypti", "SV": "El Salvador", "ER": "Eritrea", "ES": "Espanja", "ZA": "Etel\u00e4-Afrikka", "GS": "Etel\u00e4-Georgia ja Etel\u00e4iset Sandwichsaaret", "KR": "Etel\u00e4-Korea", "SS": "Etel\u00e4-Sudan", "ET": "Etiopia", "FK": "Falklandinsaaret", "FJ": "Fid\u017ei", "PH": "Filippiinit", "FO": "F\u00e4rsaaret", "GA": "Gabon", "GM": "Gambia", "GE": "Georgia", "GH": "Ghana", "GI": "Gibraltar", "GD": "Grenada", "GL": "Gr\u00f6nlanti", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GW": "Guinea-Bissau", "GY": "Guyana", "HT": "Haiti", "HM": "Heard ja McDonaldinsaaret", "HN": "Honduras", "HK": "Hongkong \u2013 Kiinan e.h.a.", "SJ": "Huippuvuoret ja Jan Mayen", "ID": "Indonesia", "IN": "Intia", "IQ": "Irak", "IR": "Iran", "IE": "Irlanti", "IS": "Islanti", "GB": "Iso-Britannia", "IL": "Israel", "IT": "Italia", "TL": "It\u00e4-Timor", "AT": "It\u00e4valta", "JM": "Jamaika", "JP": "Japani", "YE": "Jemen", "JO": "Jordania", "CX": "Joulusaari", "KH": "Kambod\u017ea", "CM": "Kamerun", "CA": "Kanada", "CV": "Kap Verde", "BQ": "Karibian Alankomaat", "KZ": "Kazakstan", "KE": "Kenia", "CF": "Keski-Afrikan tasavalta", "CN": "Kiina", "KG": "Kirgisia", "KI": "Kiribati", "CO": "Kolumbia", "KM": "Komorit", "CD": "Kongon demokraattinen tasavalta", "CG": "Kongon tasavalta", "CC": "Kookossaaret (Keelingsaaret)", "GR": "Kreikka", "HR": "Kroatia", "CU": "Kuuba", "KW": "Kuwait", "CY": "Kypros", "LA": "Laos", "LV": "Latvia", "LS": "Lesotho", "LB": "Libanon", "LR": "Liberia", "LY": "Libya", "LI": "Liechtenstein", "LT": "Liettua", "LU": "Luxemburg", "EH": "L\u00e4nsi-Sahara", "MO": "Macao \u2013 Kiinan e.h.a.", "MG": "Madagaskar", "MW": "Malawi", "MV": "Malediivit", "MY": "Malesia", "ML": "Mali", "MT": "Malta", "IM": "Mansaari", "MA": "Marokko", "MQ": "Martinique", "MR": "Mauritania", "MU": "Mauritius", "YT": "Mayotte", "MX": "Meksiko", "MD": "Moldova", "MC": "Monaco", "MN": "Mongolia", "ME": "Montenegro", "MS": "Montserrat", "MZ": "Mosambik", "MM": "Myanmar (Burma)", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NI": "Nicaragua", "NE": "Niger", "NG": "Nigeria", "NU": "Niue", "NF": "Norfolkinsaari", "NO": "Norja", "CI": "Norsunluurannikko", "OM": "Oman", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua-Uusi-Guinea", "PY": "Paraguay", "PE": "Peru", "PN": "Pitcairn", "KP": "Pohjois-Korea", "MK": "Pohjois-Makedonia", "PT": "Portugali", "PR": "Puerto Rico", "PL": "Puola", "GQ": "P\u00e4iv\u00e4ntasaajan Guinea", "QA": "Qatar", "FR": "Ranska", "TF": "Ranskan etel\u00e4iset alueet", "GF": "Ranskan Guayana", "PF": "Ranskan Polynesia", "RE": "R\u00e9union", "RO": "Romania", "RW": "Ruanda", "SE": "Ruotsi", "SH": "Saint Helena", "KN": "Saint Kitts ja Nevis", "LC": "Saint Lucia", "VC": "Saint Vincent ja Grenadiinit", "BL": "Saint-Barth\u00e9lemy", "MF": "Saint-Martin", "PM": "Saint-Pierre ja Miquelon", "DE": "Saksa", "SB": "Salomonsaaret", "ZM": "Sambia", "WS": "Samoa", "SM": "San Marino", "ST": "S\u00e3o Tom\u00e9 ja Pr\u00edncipe", "SA": "Saudi-Arabia", "SN": "Senegal", "RS": "Serbia", "SC": "Seychellit", "SL": "Sierra Leone", "SG": "Singapore", "SX": "Sint Maarten", "SK": "Slovakia", "SI": "Slovenia", "SO": "Somalia", "LK": "Sri Lanka", "SD": "Sudan", "FI": "Suomi", "SR": "Suriname", "CH": "Sveitsi", "SZ": "Swazimaa", "SY": "Syyria", "TJ": "Tad\u017eikistan", "TW": "Taiwan", "TZ": "Tansania", "DK": "Tanska", "TH": "Thaimaa", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad ja Tobago", "TD": "T\u0161ad", "CZ": "T\u0161ekki", "TN": "Tunisia", "TR": "Turkki", "TM": "Turkmenistan", "TC": "Turks- ja Caicossaaret", "UG": "Uganda", "UA": "Ukraina", "HU": "Unkari", "UY": "Uruguay", "NC": "Uusi-Kaledonia", "NZ": "Uusi-Seelanti", "UZ": "Uzbekistan", "BY": "Valko-Ven\u00e4j\u00e4", "VU": "Vanuatu", "VA": "Vatikaani", "VE": "Venezuela", "RU": "Ven\u00e4j\u00e4", "VN": "Vietnam", "EE": "Viro", "WF": "Wallis ja Futuna", "US": "Yhdysvallat", "VI": "Yhdysvaltain Neitsytsaaret", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/fr.json000066400000000000000000000123561521174352300276770ustar00rootroot00000000000000{"AF": "Afghanistan", "ZA": "Afrique du Sud", "AL": "Albanie", "DZ": "Alg\u00e9rie", "DE": "Allemagne", "AD": "Andorre", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarctique", "AG": "Antigua-et-Barbuda", "SA": "Arabie saoudite", "AR": "Argentine", "AM": "Arm\u00e9nie", "AW": "Aruba", "AU": "Australie", "AT": "Autriche", "AZ": "Azerba\u00efdjan", "BS": "Bahamas", "BH": "Bahre\u00efn", "BD": "Bangladesh", "BB": "Barbade", "BE": "Belgique", "BZ": "Belize", "BJ": "B\u00e9nin", "BM": "Bermudes", "BT": "Bhoutan", "BY": "Bi\u00e9lorussie", "BO": "Bolivie", "BA": "Bosnie-Herz\u00e9govine", "BW": "Botswana", "BR": "Br\u00e9sil", "BN": "Brun\u00e9i Darussalam", "BG": "Bulgarie", "BF": "Burkina Faso", "BI": "Burundi", "KH": "Cambodge", "CM": "Cameroun", "CA": "Canada", "CV": "Cap-Vert", "CL": "Chili", "CN": "Chine", "CY": "Chypre", "CO": "Colombie", "KM": "Comores", "CG": "Congo-Brazzaville", "CD": "Congo-Kinshasa", "KP": "Cor\u00e9e du Nord", "KR": "Cor\u00e9e du Sud", "CR": "Costa Rica", "CI": "C\u00f4te d\u2019Ivoire", "HR": "Croatie", "CU": "Cuba", "CW": "Cura\u00e7ao", "DK": "Danemark", "DJ": "Djibouti", "DM": "Dominique", "EG": "\u00c9gypte", "AE": "\u00c9mirats arabes unis", "EC": "\u00c9quateur", "ER": "\u00c9rythr\u00e9e", "ES": "Espagne", "EE": "Estonie", "SZ": "Eswatini", "VA": "\u00c9tat de la Cit\u00e9 du Vatican", "US": "\u00c9tats-Unis", "ET": "\u00c9thiopie", "FJ": "Fidji", "FI": "Finlande", "FR": "France", "GA": "Gabon", "GM": "Gambie", "GE": "G\u00e9orgie", "GS": "G\u00e9orgie du Sud et \u00eeles Sandwich du Sud", "GH": "Ghana", "GI": "Gibraltar", "GR": "Gr\u00e8ce", "GD": "Grenade", "GL": "Groenland", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernesey", "GN": "Guin\u00e9e", "GQ": "Guin\u00e9e \u00e9quatoriale", "GW": "Guin\u00e9e-Bissau", "GY": "Guyana", "GF": "Guyane fran\u00e7aise", "HT": "Ha\u00efti", "HN": "Honduras", "HU": "Hongrie", "BV": "\u00cele Bouvet", "CX": "\u00cele Christmas", "IM": "\u00cele de Man", "NF": "\u00cele Norfolk", "AX": "\u00celes \u00c5land", "KY": "\u00celes Ca\u00efmans", "CC": "\u00celes Cocos", "CK": "\u00celes Cook", "FO": "\u00celes F\u00e9ro\u00e9", "HM": "\u00celes Heard et McDonald", "FK": "\u00celes Malouines", "PN": "\u00celes Pitcairn", "SB": "\u00celes Salomon", "TC": "\u00celes Turques-et-Ca\u00efques", "VG": "\u00celes Vierges britanniques", "VI": "\u00celes Vierges des \u00c9tats-Unis", "IN": "Inde", "ID": "Indon\u00e9sie", "IQ": "Irak", "IR": "Iran", "IE": "Irlande", "IS": "Islande", "IL": "Isra\u00ebl", "IT": "Italie", "JM": "Jama\u00efque", "JP": "Japon", "JO": "Jordanie", "KZ": "Kazakhstan", "KE": "Kenya", "KG": "Kirghizistan", "KI": "Kiribati", "KW": "Kowe\u00eft", "RE": "La R\u00e9union", "LA": "Laos", "LS": "Lesotho", "LV": "Lettonie", "LB": "Liban", "LR": "Lib\u00e9ria", "LY": "Libye", "LI": "Liechtenstein", "LT": "Lituanie", "LU": "Luxembourg", "MK": "Mac\u00e9doine du Nord", "MG": "Madagascar", "MY": "Malaisie", "MW": "Malawi", "MV": "Maldives", "ML": "Mali", "MT": "Malte", "MA": "Maroc", "MQ": "Martinique", "MU": "Maurice", "MR": "Mauritanie", "YT": "Mayotte", "MX": "Mexique", "MD": "Moldavie", "MC": "Monaco", "MN": "Mongolie", "ME": "Mont\u00e9n\u00e9gro", "MS": "Montserrat", "MZ": "Mozambique", "MM": "Myanmar (Birmanie)", "NA": "Namibie", "NR": "Nauru", "NP": "N\u00e9pal", "NI": "Nicaragua", "NE": "Niger", "NG": "Nig\u00e9ria", "NU": "Niue", "NO": "Norv\u00e8ge", "NC": "Nouvelle-Cal\u00e9donie", "NZ": "Nouvelle-Z\u00e9lande", "OM": "Oman", "UG": "Ouganda", "UZ": "Ouzb\u00e9kistan", "PK": "Pakistan", "PW": "Palaos", "PA": "Panama", "PG": "Papouasie-Nouvelle-Guin\u00e9e", "PY": "Paraguay", "NL": "Pays-Bas", "BQ": "Pays-Bas carib\u00e9ens", "PE": "P\u00e9rou", "PH": "Philippines", "PL": "Pologne", "PF": "Polyn\u00e9sie fran\u00e7aise", "PR": "Porto Rico", "PT": "Portugal", "QA": "Qatar", "HK": "R.A.S. chinoise de Hong Kong", "MO": "R.A.S. chinoise de Macao", "CF": "R\u00e9publique centrafricaine", "DO": "R\u00e9publique dominicaine", "RO": "Roumanie", "GB": "Royaume-Uni", "RU": "Russie", "RW": "Rwanda", "EH": "Sahara occidental", "BL": "Saint-Barth\u00e9lemy", "KN": "Saint-Christophe-et-Ni\u00e9v\u00e8s", "SM": "Saint-Marin", "MF": "Saint-Martin", "SX": "Saint-Martin (partie n\u00e9erlandaise)", "PM": "Saint-Pierre-et-Miquelon", "VC": "Saint-Vincent-et-les-Grenadines", "SH": "Sainte-H\u00e9l\u00e8ne", "LC": "Sainte-Lucie", "SV": "Salvador", "WS": "Samoa", "AS": "Samoa am\u00e9ricaines", "ST": "Sao Tom\u00e9-et-Principe", "SN": "S\u00e9n\u00e9gal", "RS": "Serbie", "SC": "Seychelles", "SL": "Sierra Leone", "SG": "Singapour", "SK": "Slovaquie", "SI": "Slov\u00e9nie", "SO": "Somalie", "SD": "Soudan", "SS": "Soudan du Sud", "LK": "Sri Lanka", "SE": "Su\u00e8de", "CH": "Suisse", "SR": "Suriname", "SJ": "Svalbard et Jan Mayen", "SY": "Syrie", "TJ": "Tadjikistan", "TW": "Ta\u00efwan", "TZ": "Tanzanie", "TD": "Tchad", "CZ": "Tch\u00e9quie", "TF": "Terres australes fran\u00e7aises", "IO": "Territoire britannique de l\u2019oc\u00e9an Indien", "TH": "Tha\u00eflande", "TL": "Timor oriental", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinit\u00e9-et-Tobago", "TN": "Tunisie", "TM": "Turkm\u00e9nistan", "TR": "Turquie", "UA": "Ukraine", "UY": "Uruguay", "VU": "Vanuatu", "VE": "Venezuela", "VN": "Vietnam", "WF": "Wallis-et-Futuna", "YE": "Y\u00e9men", "ZM": "Zambie", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/ga.json000066400000000000000000000146271521174352300276620ustar00rootroot00000000000000{"ET": "an Aet\u00f3ip", "AF": "an Afganast\u00e1in", "ZA": "an Afraic Theas", "DZ": "an Ailg\u00e9ir", "AR": "an Airgint\u00edn", "AM": "an Airm\u00e9in", "AL": "an Alb\u00e1in", "AQ": "an Antartaice", "SA": "an Araib Sh\u00e1dach", "AZ": "an Asarbaise\u00e1in", "AU": "an Astr\u00e1il", "BD": "an Bhanglaid\u00e9is", "BY": "an Bhealar\u00fais", "BE": "an Bheilg", "BZ": "an Bheil\u00eds", "BA": "an Bhoisnia agus an Heirseagaiv\u00e9in", "BO": "an Bholaiv", "BW": "an Bhotsu\u00e1in", "BR": "an Bhrasa\u00edl", "BG": "an Bhulg\u00e1ir", "BI": "an Bhur\u00fain", "BT": "an Bh\u00fat\u00e1in", "KH": "an Chamb\u00f3id", "KZ": "an Chasacst\u00e1in", "KE": "an Ch\u00e9inia", "CY": "an Chipir", "KG": "an Chirgeast\u00e1in", "KR": "an Ch\u00f3ir\u00e9 Theas", "KP": "an Ch\u00f3ir\u00e9 Thuaidh", "CO": "an Chol\u00f3im", "HR": "an Chr\u00f3it", "CG": "an Cong\u00f3", "CI": "an C\u00f3sta Eabhair", "DK": "an Danmhairg", "EE": "an East\u00f3in", "EG": "an \u00c9igipt", "CH": "an Eilv\u00e9is", "ER": "an Eiritr\u00e9", "FI": "an Fhionlainn", "FR": "an Fhrainc", "GA": "an Ghab\u00fain", "GM": "an Ghaimbia", "DE": "an Ghearm\u00e1in", "GL": "an Ghraonlainn", "GR": "an Ghr\u00e9ig", "GY": "an Ghu\u00e1in", "GN": "an Ghuine", "GQ": "an Ghuine Mhe\u00e1nchiorclach", "IQ": "an Iar\u00e1ic", "IR": "an Iar\u00e1in", "IN": "an India", "ID": "an Indin\u00e9is", "IT": "an Iod\u00e1il", "JO": "an Iord\u00e1in", "NO": "an Iorua", "IS": "an \u00cdoslainn", "NL": "an \u00cdsilt\u00edr", "BQ": "an \u00cdsilt\u00edr Chairibeach", "LV": "an Laitvia", "LR": "an Lib\u00e9ir", "LY": "an Libia", "LB": "an Liob\u00e1in", "LT": "an Liotu\u00e1in", "MK": "an Mhacad\u00f3in Thuaidh", "MY": "an Mhalaeisia", "MW": "an Mhal\u00e1iv", "MR": "an Mh\u00e1rat\u00e1in", "MD": "an Mhold\u00f3iv", "MN": "an Mhong\u00f3il", "NA": "an Namaib", "NG": "an Nig\u00e9ir", "NE": "an N\u00edgir", "NC": "an Nua-Chalad\u00f3in", "NZ": "an Nua-Sh\u00e9alainn", "AT": "an Ostair", "PK": "an Phacast\u00e1in", "DO": "an Phoblacht Dhoiminiceach", "PL": "an Pholainn", "PT": "an Phortaing\u00e9il", "GB": "an R\u00edocht Aontaithe", "RO": "an R\u00f3m\u00e1in", "RU": "an R\u00fais", "EH": "an Sah\u00e1ra Thiar", "ES": "an Sp\u00e1inn", "TJ": "an T\u00e1ids\u00edceast\u00e1in", "TZ": "an Tans\u00e1in", "TH": "an T\u00e9alainn", "TW": "an T\u00e9av\u00e1in", "ZM": "an tSaimbia", "SV": "an tSalvad\u00f3ir", "JP": "an tSeap\u00e1in", "CZ": "an tSeicia", "SN": "an tSeineag\u00e1il", "RS": "an tSeirbia", "GE": "an tSeoirsia", "GS": "an tSeoirsia Theas agus Oile\u00e1in Sandwich Theas", "CL": "an tSile", "CN": "an tS\u00edn", "ZW": "an tSiomb\u00e1ib", "SY": "an tSiria", "SI": "an tSl\u00f3iv\u00e9in", "SK": "an tSl\u00f3vaic", "SO": "an tSom\u00e1il", "SE": "an tSualainn", "SD": "an tS\u00fad\u00e1in", "SS": "an tS\u00fad\u00e1in Theas", "TN": "an T\u00fain\u00e9is", "TR": "an Tuirc", "TM": "an Tuircm\u00e9anast\u00e1in", "UA": "an \u00dacr\u00e1in", "UZ": "an \u00daisb\u00e9iceast\u00e1in", "HU": "an Ung\u00e1ir", "AD": "And\u00f3ra", "AI": "Anga\u00edle", "AO": "Ang\u00f3la", "AG": "Antigua agus Barb\u00fada", "AE": "Aontas na n\u00c9im\u00edr\u00edochta\u00ed Arabacha", "AW": "Ar\u00faba", "BH": "Bair\u00e9in", "BB": "Barbad\u00f3s", "BJ": "Beinin", "BM": "Beirmi\u00fada", "BN": "Br\u00fain\u00e9", "BF": "Buirc\u00edne Fas\u00f3", "CM": "Camar\u00fan", "QA": "Catar", "VA": "Cathair na Vatac\u00e1ine", "CA": "Ceanada", "KI": "Cireabait\u00ed", "CR": "C\u00f3sta R\u00edce", "IO": "Cr\u00edoch Aig\u00e9an Indiach na Breataine", "TF": "Cr\u00edocha Francacha Dheisceart an Domhain", "KW": "Cu\u00e1it", "CU": "C\u00faba", "CW": "Cura\u00e7ao", "DJ": "Djibouti", "DM": "Doiminice", "EC": "Eacuad\u00f3r", "YE": "\u00c9imin", "IE": "\u00c9ire", "SZ": "eSuait\u00edn\u00ed", "FJ": "Fids\u00ed", "GH": "G\u00e1na", "GG": "Geansa\u00ed", "GI": "Giobr\u00e1ltar", "GD": "Grean\u00e1da", "GP": "Guadal\u00faip", "GF": "Gu\u00e1in na Fraince", "GU": "Guam", "GT": "Guatamala", "GW": "Guine Bissau", "HT": "H\u00e1\u00edt\u00ed", "HN": "Hond\u00faras", "JM": "Iam\u00e1ice", "IL": "Iosrael", "LA": "Laos", "LS": "Leos\u00f3ta", "LI": "Lichtinst\u00e9in", "LU": "Lucsamburg", "MG": "Madagascar", "MM": "Maenmar (Burma)", "ML": "Mail\u00ed", "MT": "M\u00e1lta", "MA": "Marac\u00f3", "MQ": "Martinique", "YT": "Mayotte", "MX": "Meicsiceo", "MC": "Monac\u00f3", "ME": "Montain\u00e9agr\u00f3", "MS": "Montsarat", "MZ": "M\u00f3saimb\u00edc", "BS": "na Bah\u00e1ma\u00ed", "PH": "na hOile\u00e1in Fhilip\u00edneacha", "SC": "na S\u00e9is\u00e9il", "NR": "N\u00e1r\u00fa", "NP": "Neipeal", "NI": "Nicearagua", "NU": "Niue", "PG": "Nua-Ghuine Phapua", "AX": "Oile\u00e1in \u00c5land", "VG": "Oile\u00e1in Bhriotanacha na Maighdean", "KY": "Oile\u00e1in Cayman", "KM": "Oile\u00e1in Chom\u00f3ra", "CC": "Oile\u00e1in Cocos (Keeling)", "CK": "Oile\u00e1in Cook", "FK": "Oile\u00e1in Fh\u00e1clainne", "FO": "Oile\u00e1in Fhar\u00f3", "MV": "Oile\u00e1in Mhaild\u00edve", "VI": "Oile\u00e1in Mheirice\u00e1nacha na Maighdean", "TC": "Oile\u00e1in na dTurcach agus Caicos", "PW": "Oile\u00e1in Palau", "PN": "Oile\u00e1in Pitcairn", "SB": "Oile\u00e1in Sholom\u00f3n", "BV": "Oile\u00e1n Bouvet", "HM": "Oile\u00e1n Heard agus Oile\u00e1in McDonald", "IM": "Oile\u00e1n Mhanann", "MU": "Oile\u00e1n Mhuir\u00eds", "CX": "Oile\u00e1n na Nollag", "TT": "Oile\u00e1n na Tr\u00edon\u00f3ide agus Tob\u00e1ga", "NF": "Oile\u00e1n Norfolk", "OM": "\u00d3man", "PA": "Panama", "PY": "Paragua", "PE": "Peiri\u00fa", "CD": "Poblacht Dhaonlathach an Chong\u00f3", "CF": "Poblacht na hAfraice L\u00e1ir", "PF": "Polain\u00e9is na Fraince", "PR": "P\u00f3rt\u00f3 R\u00edce", "RE": "R\u00e9union", "CV": "Rinn Verde", "RW": "Ruanda", "HK": "S.R.R. na S\u00edne Hong Cong", "MO": "S.R.R. na S\u00edne Macao", "BL": "Saint Barth\u00e9lemy", "LC": "Saint Lucia", "MF": "Saint-Martin", "WS": "Sam\u00f3", "AS": "Sam\u00f3 Mheirice\u00e1", "KN": "San Cr\u00edost\u00f3ir-Nimheas", "SH": "San H\u00e9ilin", "SM": "San Mair\u00edne", "PM": "San Pierre agus Miquelon", "VC": "San Uinseann agus na Grean\u00e1id\u00edn\u00ed", "ST": "S\u00e3o Tom\u00e9 agus Pr\u00edncipe", "TD": "Sead", "SL": "Siarra Leon", "SG": "Singeap\u00f3r", "SX": "Sint Maarten", "LK": "Sr\u00ed Lanca", "US": "St\u00e1it Aontaithe Mheirice\u00e1", "SR": "Suranam", "SJ": "Svalbard agus Jan Mayen", "TL": "T\u00edom\u00f3r Thoir", "TK": "T\u00f3cal\u00e1", "TG": "T\u00f3ga", "TO": "Tonga", "UG": "Uganda", "UY": "Uragua", "WF": "Vail\u00eds agus Fut\u00fana", "VU": "Vanuat\u00fa", "VE": "Veinis\u00e9ala", "VN": "V\u00edtneam"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/gl.json000066400000000000000000000120611521174352300276630ustar00rootroot00000000000000{"AQ": "A Ant\u00e1rtida", "AR": "A Arxentina", "CN": "A China", "GW": "A Guinea Bissau", "IN": "A India", "PF": "A Polinesia Francesa", "AZ": "Acerbaix\u00e1n", "AF": "Afganist\u00e1n", "AL": "Albania", "DE": "Alema\u00f1a", "DZ": "Alxeria", "AD": "Andorra", "AO": "Angola", "AI": "Anguila", "AG": "Antigua e Barbuda", "SA": "Arabia Saudita", "AM": "Armenia", "AW": "Aruba", "AU": "Australia", "AT": "Austria", "BS": "Bahamas", "BH": "Bahrain", "BD": "Bangladesh", "BB": "Barbados", "BY": "Belar\u00fas", "BZ": "Belize", "BE": "B\u00e9lxica", "BJ": "Ben\u00edn", "BO": "Bolivia", "BA": "Bosnia e Hercegovina", "BW": "Botswana", "BN": "Brunei", "BG": "Bulgaria", "BF": "Burkina Faso", "BI": "Burundi", "BT": "But\u00e1n", "CV": "Cabo Verde", "KH": "Camboxa", "CM": "Camer\u00fan", "BQ": "Caribe Neerland\u00e9s", "TD": "Chad", "CZ": "Chequia", "CL": "Chile", "CY": "Chipre", "VA": "Cidade do Vaticano", "CO": "Colombia", "KM": "Comores", "KP": "Corea do Norte", "KR": "Corea do Sur", "CR": "Costa Rica", "CI": "C\u00f4te d\u2019Ivoire", "HR": "Croacia", "CU": "Cuba", "CW": "Cura\u00e7ao", "DK": "Dinamarca", "DJ": "Djibuti", "DM": "Dominica", "EC": "Ecuador", "ER": "Eritrea", "SK": "Eslovaquia", "SI": "Eslovenia", "ES": "Espa\u00f1a", "EE": "Estonia", "SZ": "Eswatini", "ET": "Etiop\u00eda", "EG": "Exipto", "PH": "Filipinas", "FI": "Finlandia", "FJ": "Fixi", "FR": "Francia", "GA": "Gab\u00f3n", "GM": "Gambia", "GH": "Ghana", "GD": "Granada", "GR": "Grecia", "GL": "Groenlandia", "GP": "Guadalupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GY": "G\u00fciana", "GF": "G\u00fciana Francesa", "GN": "Guinea", "GQ": "Guinea Ecuatorial", "HT": "Hait\u00ed", "HN": "Honduras", "HK": "Hong Kong RAE da China", "HU": "Hungr\u00eda", "BV": "Illa Bouvet", "CX": "Illa Christmas", "IM": "Illa de Man", "HM": "Illa Heard e Illas McDonald", "NF": "Illa Norfolk", "AX": "Illas \u00c5land", "BM": "Illas Bermudas", "KY": "Illas Caim\u00e1n", "CC": "Illas Cocos (Keeling)", "CK": "Illas Cook", "FO": "Illas Feroe", "FK": "Illas Malvinas", "PN": "Illas Pitcairn", "SB": "Illas Salom\u00f3n", "TC": "Illas Turks e Caicos", "VG": "Illas Virxes Brit\u00e1nicas", "VI": "Illas Virxes Estadounidenses", "GS": "Illas Xeorxia do Sur e Sandwich do Sur", "ID": "Indonesia", "IR": "Ir\u00e1n", "IQ": "Iraq", "IE": "Irlanda", "IS": "Islandia", "IL": "Israel", "IT": "Italia", "KZ": "Kazakist\u00e1n", "KE": "Kenya", "KG": "Kirguizist\u00e1n", "KI": "Kiribati", "KW": "Kuwait", "LA": "Laos", "LS": "Lesotho", "LV": "Letonia", "LR": "Liberia", "LY": "Libia", "LI": "Liechtenstein", "LT": "Lituania", "LU": "Luxemburgo", "MO": "Macau RAE da China", "MK": "Macedonia do Norte", "MG": "Madagascar", "MY": "Malaisia", "MW": "Malawi", "MV": "Maldivas", "ML": "Mal\u00ed", "MT": "Malta", "MA": "Marrocos", "MQ": "Martinica", "MU": "Mauricio", "MR": "Mauritania", "YT": "Mayotte", "MX": "M\u00e9xico", "MD": "Moldavia", "MC": "M\u00f3naco", "MN": "Mongolia", "ME": "Montenegro", "MS": "Montserrat", "MZ": "Mozambique", "MM": "Myanmar (Birmania)", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NI": "Nicaragua", "NU": "Niue", "NE": "N\u00edxer", "NG": "Nixeria", "NO": "Noruega", "NC": "Nova Caledonia", "NZ": "Nova Zelandia", "BR": "O Brasil", "CA": "O Canad\u00e1", "YE": "O Iemen", "LB": "O L\u00edbano", "PY": "O Paraguai", "PE": "O Per\u00fa", "GB": "O Reino Unido", "EH": "O S\u00e1hara Occidental", "SV": "O Salvador", "SD": "O Sud\u00e1n", "SS": "O Sud\u00e1n do Sur", "UY": "O Uruguai", "JP": "O Xap\u00f3n", "OM": "Om\u00e1n", "AE": "Os Emiratos \u00c1rabes Unidos", "US": "Os Estados Unidos", "NL": "Pa\u00edses Baixos", "PW": "Palau", "PA": "Panam\u00e1", "PG": "Pap\u00faa-Nova Guinea", "PK": "Paquist\u00e1n", "PL": "Polonia", "PR": "Porto Rico", "PT": "Portugal", "QA": "Qatar", "CF": "Rep\u00fablica Centroafricana", "CD": "Rep\u00fablica Democr\u00e1tica do Congo", "CG": "Rep\u00fablica do Congo", "DO": "Rep\u00fablica Dominicana", "RE": "Reuni\u00f3n", "RO": "Roman\u00eda", "RW": "Ruanda", "RU": "Rusia", "BL": "Saint Barth\u00e9lemy", "KN": "Saint Kitts e Nevis", "MF": "Saint Martin", "PM": "Saint Pierre et Miquelon", "WS": "Samoa", "AS": "Samoa Americana", "SM": "San Marino", "ST": "San Tom\u00e9 e Pr\u00edncipe", "VC": "San Vicente e As Granadinas", "SH": "Santa Helena", "LC": "Santa Luc\u00eda", "SN": "Senegal", "RS": "Serbia", "SL": "Serra Leoa", "SC": "Seychelles", "SG": "Singapur", "SX": "Sint Maarten", "SY": "Siria", "SO": "Somalia", "LK": "Sri Lanka", "SE": "Suecia", "CH": "Su\u00edza", "ZA": "Sur\u00e1frica", "SR": "Suriname", "SJ": "Svalbard e Jan Mayen", "TH": "Tailandia", "TW": "Taiw\u00e1n", "TZ": "Tanzania", "TJ": "Taxiquist\u00e1n", "IO": "Territorio Brit\u00e1nico do Oc\u00e9ano \u00cdndico", "TF": "Territorios Austrais Franceses", "TL": "Timor Leste", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad e Tobago", "TN": "Tunisia", "TM": "Turkmenist\u00e1n", "TR": "Turqu\u00eda", "UA": "Ucra\u00edna", "UG": "Uganda", "UZ": "Uzbekist\u00e1n", "VU": "Vanuatu", "VE": "Venezuela", "VN": "Vietnam", "WF": "Wallis e Futuna", "JM": "Xamaica", "GE": "Xeorxia", "GI": "Xibraltar", "JO": "Xordania", "ZM": "Zambia", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/hr.json000066400000000000000000000117211521174352300276740ustar00rootroot00000000000000{"AF": "Afganistan", "AX": "\u00c5landski otoci", "AL": "Albanija", "DZ": "Al\u017eir", "AS": "Ameri\u010dka Samoa", "VI": "Ameri\u010dki Djevi\u010danski otoci", "AD": "Andora", "AO": "Angola", "AI": "Angvila", "AQ": "Antarktika", "AG": "Antigva i Barbuda", "AR": "Argentina", "AM": "Armenija", "AW": "Aruba", "AU": "Australija", "AT": "Austrija", "AZ": "Azerbajd\u017ean", "BS": "Bahami", "BH": "Bahrein", "BD": "Banglade\u0161", "BB": "Barbados", "BE": "Belgija", "BZ": "Belize", "BJ": "Benin", "BM": "Bermudi", "BY": "Bjelorusija", "BW": "Bocvana", "BO": "Bolivija", "BA": "Bosna i Hercegovina", "CX": "Bo\u017ei\u0107ni otok", "BR": "Brazil", "VG": "Britanski Djevi\u010danski otoci", "IO": "Britanski Indijskooceanski teritorij", "BN": "Brunej", "BG": "Bugarska", "BF": "Burkina Faso", "BI": "Burundi", "BT": "Butan", "CY": "Cipar", "CK": "Cookovi Otoci", "ME": "Crna Gora", "CW": "Cura\u00e7ao", "TD": "\u010cad", "CZ": "\u010ce\u0161ka", "CL": "\u010cile", "DK": "Danska", "DM": "Dominika", "DO": "Dominikanska Republika", "DJ": "D\u017eibuti", "EG": "Egipat", "EC": "Ekvador", "GQ": "Ekvatorska Gvineja", "ER": "Eritreja", "EE": "Estonija", "SZ": "Esvatini", "ET": "Etiopija", "FK": "Falklandski otoci", "FO": "Farski otoci", "FJ": "Fid\u017ei", "PH": "Filipini", "FI": "Finska", "FR": "Francuska", "GF": "Francuska Gijana", "PF": "Francuska Polinezija", "TF": "Francuski ju\u017eni i antarkti\u010dki teritoriji", "GA": "Gabon", "GM": "Gambija", "GH": "Gana", "GI": "Gibraltar", "GR": "Gr\u010dka", "GD": "Grenada", "GL": "Grenland", "GE": "Gruzija", "GP": "Guadalupe", "GU": "Guam", "GG": "Guernsey", "GY": "Gvajana", "GT": "Gvatemala", "GN": "Gvineja", "GW": "Gvineja Bisau", "HT": "Haiti", "HN": "Honduras", "HR": "Hrvatska", "IN": "Indija", "ID": "Indonezija", "IQ": "Irak", "IR": "Iran", "IE": "Irska", "IS": "Island", "IT": "Italija", "IL": "Izrael", "JM": "Jamajka", "JP": "Japan", "YE": "Jemen", "JO": "Jordan", "GS": "Ju\u017ena Georgija i Ju\u017eni Sendvi\u010dki Otoci", "KR": "Ju\u017ena Koreja", "SS": "Ju\u017eni Sudan", "ZA": "Ju\u017enoafri\u010dka Republika", "KY": "Kajmanski otoci", "KH": "Kambod\u017ea", "CM": "Kamerun", "CA": "Kanada", "BQ": "Karipski otoci Nizozemske", "QA": "Katar", "KZ": "Kazahstan", "KE": "Kenija", "CN": "Kina", "KG": "Kirgistan", "KI": "Kiribati", "CC": "Kokosovi (Keelingovi) otoci", "CO": "Kolumbija", "KM": "Komori", "CG": "Kongo - Brazzaville", "CD": "Kongo - Kinshasa", "CR": "Kostarika", "CU": "Kuba", "KW": "Kuvajt", "LA": "Laos", "LV": "Latvija", "LS": "Lesoto", "LB": "Libanon", "LR": "Liberija", "LY": "Libija", "LI": "Lihten\u0161tajn", "LT": "Litva", "LU": "Luksemburg", "MG": "Madagaskar", "HU": "Ma\u0111arska", "MW": "Malavi", "MV": "Maldivi", "MY": "Malezija", "ML": "Mali", "MT": "Malta", "MA": "Maroko", "MQ": "Martinique", "MR": "Mauretanija", "MU": "Mauricijus", "YT": "Mayotte", "MX": "Meksiko", "MM": "Mjanmar (Burma)", "MD": "Moldavija", "MC": "Monako", "MN": "Mongolija", "MS": "Montserrat", "MZ": "Mozambik", "NA": "Namibija", "NR": "Nauru", "NP": "Nepal", "NE": "Niger", "NG": "Nigerija", "NI": "Nikaragva", "NU": "Niue", "NL": "Nizozemska", "NO": "Norve\u0161ka", "NC": "Nova Kaledonija", "NZ": "Novi Zeland", "DE": "Njema\u010dka", "CI": "Obala Bjelokosti", "OM": "Oman", "HM": "Otoci Heard i McDonald", "PN": "Otoci Pitcairn", "TC": "Otoci Turks i Caicos", "BV": "Otok Bouvet", "IM": "Otok Man", "NF": "Otok Norfolk", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua Nova Gvineja", "PY": "Paragvaj", "PE": "Peru", "PL": "Poljska", "PR": "Portoriko", "PT": "Portugal", "HK": "PUP Hong Kong Kina", "MO": "PUP Makao Kina", "RE": "R\u00e9union", "RW": "Ruanda", "RO": "Rumunjska", "RU": "Rusija", "BL": "Saint Barth\u00e9lemy", "MF": "Saint Martin", "PM": "Saint-Pierre-et-Miquelon", "SB": "Salomonski Otoci", "SV": "Salvador", "WS": "Samoa", "SM": "San Marino", "SA": "Saudijska Arabija", "SC": "Sej\u0161eli", "SN": "Senegal", "SL": "Sijera Leone", "SG": "Singapur", "SX": "Sint Maarten", "SY": "Sirija", "US": "Sjedinjene Ameri\u010dke Dr\u017eave", "KP": "Sjeverna Koreja", "MK": "Sjeverna Makedonija", "SK": "Slova\u010dka", "SI": "Slovenija", "SO": "Somalija", "RS": "Srbija", "CF": "Srednjoafri\u010dka Republika", "SD": "Sudan", "SR": "Surinam", "SJ": "Svalbard i Jan Mayen", "SH": "Sveta Helena", "LC": "Sveta Lucija", "KN": "Sveti Kristofor i Nevis", "ST": "Sveti Toma i Princip", "VC": "Sveti Vincent i Grenadini", "ES": "\u0160panjolska", "LK": "\u0160ri Lanka", "SE": "\u0160vedska", "CH": "\u0160vicarska", "TJ": "Tad\u017eikistan", "TH": "Tajland", "TW": "Tajvan", "TZ": "Tanzanija", "TL": "Timor-Leste", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad i Tobago", "TN": "Tunis", "TM": "Turkmenistan", "TR": "Turska", "UG": "Uganda", "AE": "Ujedinjeni Arapski Emirati", "GB": "Ujedinjeno Kraljevstvo", "UA": "Ukrajina", "UY": "Urugvaj", "UZ": "Uzbekistan", "VU": "Vanuatu", "VA": "Vatikanski Grad", "VE": "Venezuela", "VN": "Vijetnam", "WF": "Wallis i Futuna", "ZM": "Zambija", "EH": "Zapadna Sahara", "CV": "Zelenortska Republika", "ZW": "Zimbabve"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/id.json000066400000000000000000000113351521174352300276600ustar00rootroot00000000000000{"AF": "Afganistan", "ZA": "Afrika Selatan", "AL": "Albania", "DZ": "Aljazair", "US": "Amerika Serikat", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarktika", "AG": "Antigua dan Barbuda", "SA": "Arab Saudi", "AR": "Argentina", "AM": "Armenia", "AW": "Aruba", "AU": "Australia", "AT": "Austria", "AZ": "Azerbaijan", "BS": "Bahama", "BH": "Bahrain", "BD": "Bangladesh", "BB": "Barbados", "NL": "Belanda", "BQ": "Belanda Karibia", "BY": "Belarus", "BE": "Belgia", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhutan", "BO": "Bolivia", "BA": "Bosnia dan Herzegovina", "BW": "Botswana", "BR": "Brasil", "BN": "Brunei", "BG": "Bulgaria", "BF": "Burkina Faso", "BI": "Burundi", "TD": "Cad", "CZ": "Ceko", "CL": "Cile", "CI": "C\u00f4te d\u2019Ivoire", "CW": "Cura\u00e7ao", "DK": "Denmark", "DM": "Dominika", "EC": "Ekuador", "SV": "El Salvador", "ER": "Eritrea", "EE": "Estonia", "SZ": "eSwatini", "ET": "Etiopia", "FJ": "Fiji", "PH": "Filipina", "FI": "Finlandia", "GA": "Gabon", "GM": "Gambia", "GE": "Georgia", "GS": "Georgia Selatan & Kep. Sandwich Selatan", "GH": "Ghana", "GI": "Gibraltar", "GD": "Grenada", "GL": "Grinlandia", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GQ": "Guinea Ekuatorial", "GW": "Guinea-Bissau", "GY": "Guyana", "GF": "Guyana Prancis", "HT": "Haiti", "HN": "Honduras", "HK": "Hong Kong DAK Tiongkok", "HU": "Hungaria", "IN": "India", "ID": "Indonesia", "GB": "Inggris Raya", "IQ": "Irak", "IR": "Iran", "IE": "Irlandia", "IS": "Islandia", "IL": "Israel", "IT": "Italia", "JM": "Jamaika", "JP": "Jepang", "DE": "Jerman", "DJ": "Jibuti", "NC": "Kaledonia Baru", "KH": "Kamboja", "CM": "Kamerun", "CA": "Kanada", "KZ": "Kazakstan", "KE": "Kenya", "AX": "Kepulauan Aland", "KY": "Kepulauan Cayman", "CC": "Kepulauan Cocos (Keeling)", "CK": "Kepulauan Cook", "FK": "Kepulauan Falkland", "FO": "Kepulauan Faroe", "NF": "Kepulauan Norfolk", "PN": "Kepulauan Pitcairn", "SB": "Kepulauan Solomon", "SJ": "Kepulauan Svalbard dan Jan Mayen", "TC": "Kepulauan Turks dan Caicos", "VI": "Kepulauan Virgin Amerika Serikat", "VG": "Kepulauan Virgin Britania Raya", "WF": "Kepulauan Wallis dan Futuna", "KG": "Kirgistan", "KI": "Kiribati", "CO": "Kolombia", "KM": "Komoro", "CG": "Kongo - Brazzaville", "CD": "Kongo - Kinshasa", "KR": "Korea Selatan", "KP": "Korea Utara", "CR": "Kosta Rika", "HR": "Kroasia", "CU": "Kuba", "KW": "Kuwait", "LA": "Laos", "LV": "Latvia", "LB": "Lebanon", "LS": "Lesotho", "LR": "Liberia", "LY": "Libia", "LI": "Liechtenstein", "LT": "Lituania", "LU": "Luksemburg", "MG": "Madagaskar", "MO": "Makau DAK Tiongkok", "MK": "Makedonia Utara", "MV": "Maladewa", "MW": "Malawi", "MY": "Malaysia", "ML": "Mali", "MT": "Malta", "MA": "Maroko", "MQ": "Martinik", "MR": "Mauritania", "MU": "Mauritius", "YT": "Mayotte", "MX": "Meksiko", "EG": "Mesir", "MD": "Moldova", "MC": "Monako", "MN": "Mongolia", "ME": "Montenegro", "MS": "Montserrat", "MZ": "Mozambik", "MM": "Myanmar (Burma)", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NE": "Niger", "NG": "Nigeria", "NI": "Nikaragua", "NU": "Niue", "NO": "Norwegia", "OM": "Oman", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua Nugini", "PY": "Paraguay", "PE": "Peru", "PL": "Polandia", "PF": "Polinesia Prancis", "PT": "Portugal", "FR": "Prancis", "PR": "Puerto Riko", "BV": "Pulau Bouvet", "HM": "Pulau Heard dan Kepulauan McDonald", "IM": "Pulau Man", "CX": "Pulau Natal", "QA": "Qatar", "CF": "Republik Afrika Tengah", "DO": "Republik Dominika", "RE": "R\u00e9union", "RO": "Rumania", "RU": "Rusia", "RW": "Rwanda", "EH": "Sahara Barat", "BL": "Saint Barth\u00e9lemy", "SH": "Saint Helena", "KN": "Saint Kitts dan Nevis", "LC": "Saint Lucia", "MF": "Saint Martin", "PM": "Saint Pierre dan Miquelon", "VC": "Saint Vincent dan Grenadine", "WS": "Samoa", "AS": "Samoa Amerika", "SM": "San Marino", "ST": "Sao Tome dan Principe", "NZ": "Selandia Baru", "SN": "Senegal", "RS": "Serbia", "SC": "Seychelles", "SL": "Sierra Leone", "SG": "Singapura", "SX": "Sint Maarten", "CY": "Siprus", "SK": "Slovakia", "SI": "Slovenia", "SO": "Somalia", "ES": "Spanyol", "LK": "Sri Lanka", "SD": "Sudan", "SS": "Sudan Selatan", "SY": "Suriah", "SR": "Suriname", "SE": "Swedia", "CH": "Swiss", "TW": "Taiwan", "TJ": "Tajikistan", "CV": "Tanjung Verde", "TZ": "Tanzania", "TH": "Thailand", "TL": "Timor Leste", "CN": "Tiongkok", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad dan Tobago", "TN": "Tunisia", "TR": "Turki", "TM": "Turkimenistan", "UG": "Uganda", "UA": "Ukraina", "AE": "Uni Emirat Arab", "UY": "Uruguay", "UZ": "Uzbekistan", "VU": "Vanuatu", "VA": "Vatikan", "VE": "Venezuela", "VN": "Vietnam", "IO": "Wilayah Inggris di Samudra Hindia", "TF": "Wilayah Selatan Perancis", "YE": "Yaman", "JO": "Yordania", "GR": "Yunani", "ZM": "Zambia", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/is.json000066400000000000000000000141241521174352300276760ustar00rootroot00000000000000{"AF": "Afganistan", "AL": "Alban\u00eda", "DZ": "Als\u00edr", "AD": "Andorra", "AO": "Ang\u00f3la", "AI": "Angvilla", "AG": "Ant\u00edgva og Barb\u00fada", "AR": "Argent\u00edna", "AM": "Armen\u00eda", "AW": "Ar\u00faba", "AZ": "Aserba\u00eddsjan", "AT": "Austurr\u00edki", "AX": "\u00c1landseyjar", "AU": "\u00c1stral\u00eda", "BS": "Bahamaeyjar", "US": "Bandar\u00edkin", "AS": "Bandar\u00edska Sam\u00f3a", "VI": "Bandar\u00edsku J\u00f3mfr\u00faaeyjar", "BD": "Bangladess", "BB": "Barbados", "BH": "Barein", "BE": "Belg\u00eda", "BZ": "Bel\u00eds", "BJ": "Ben\u00edn", "BM": "Berm\u00fadaeyjar", "BA": "Bosn\u00eda og Herseg\u00f3v\u00edna", "BW": "Botsvana", "BV": "Bouveteyja", "BO": "B\u00f3liv\u00eda", "BR": "Brasil\u00eda", "IO": "Bresku Indlandshafseyjar", "VG": "Bresku J\u00f3mfr\u00faaeyjar", "GB": "Bretland", "BN": "Br\u00fanei", "BG": "B\u00falgar\u00eda", "BF": "B\u00fark\u00edna Fas\u00f3", "BI": "B\u00far\u00fand\u00ed", "BT": "B\u00fatan", "KY": "Caymaneyjar", "CK": "Cooks-eyjar", "CW": "Curacao", "DK": "Danm\u00f6rk", "DJ": "Dj\u00edb\u00fat\u00ed", "DM": "D\u00f3min\u00edka", "DO": "D\u00f3min\u00edska l\u00fd\u00f0veldi\u00f0", "EG": "Egyptaland", "EE": "Eistland", "EC": "Ekvador", "SV": "El Salvador", "ER": "Er\u00edtrea", "ET": "E\u00fe\u00ed\u00f3p\u00eda", "FK": "Falklandseyjar", "PH": "Filippseyjar", "FI": "Finnland", "FJ": "F\u00eddj\u00edeyjar", "CI": "F\u00edlabeinsstr\u00f6ndin", "FR": "Frakkland", "GF": "Franska Gv\u00e6jana", "PF": "Franska P\u00f3l\u00fdnes\u00eda", "TF": "Fr\u00f6nsku su\u00f0l\u00e6gu landsv\u00e6\u00f0in", "FO": "F\u00e6reyjar", "GA": "Gabon", "GM": "Gamb\u00eda", "GH": "Gana", "GE": "Georg\u00eda", "GI": "G\u00edbraltar", "GN": "G\u00ednea", "GW": "G\u00ednea-Biss\u00e1", "GD": "Grenada", "GR": "Grikkland", "CV": "Gr\u00e6nh\u00f6f\u00f0aeyjar", "GL": "Gr\u00e6nland", "GG": "Guernsey", "GP": "Gvadel\u00fapeyjar", "GU": "Gvam", "GT": "Gvatemala", "GY": "Gv\u00e6jana", "HT": "Ha\u00edt\u00ed", "HM": "Heard og McDonaldseyjar", "NL": "Holland", "HN": "Hond\u00faras", "BY": "Hv\u00edta-R\u00fassland", "IN": "Indland", "ID": "Ind\u00f3nes\u00eda", "IQ": "\u00cdrak", "IR": "\u00cdran", "IE": "\u00cdrland", "IS": "\u00cdsland", "IL": "\u00cdsrael", "IT": "\u00cdtal\u00eda", "JM": "Jama\u00edka", "JP": "Japan", "YE": "Jemen", "CX": "J\u00f3laey", "JO": "J\u00f3rdan\u00eda", "KH": "Kamb\u00f3d\u00eda", "CM": "Kamer\u00fan", "CA": "Kanada", "BQ": "Kar\u00edbahafshluti Hollands", "KZ": "Kasakstan", "QA": "Katar", "KE": "Ken\u00eda", "KG": "Kirgistan", "CN": "K\u00edna", "KI": "K\u00edribat\u00ed", "CG": "Kong\u00f3-Brazzaville", "CD": "Kong\u00f3-Kinshasa", "CR": "Kostar\u00edka", "CC": "K\u00f3koseyjar (Keeling)", "CO": "K\u00f3lumb\u00eda", "KM": "K\u00f3moreyjar", "HR": "Kr\u00f3at\u00eda", "CU": "K\u00faba", "KW": "K\u00faveit", "CY": "K\u00fdpur", "LA": "Laos", "LS": "Les\u00f3t\u00f3", "LV": "Lettland", "LI": "Liechtenstein", "LT": "Lith\u00e1en", "LB": "L\u00edbanon", "LR": "L\u00edber\u00eda", "LY": "L\u00edb\u00eda", "LU": "L\u00faxemborg", "MG": "Madagaskar", "MY": "Malas\u00eda", "MW": "Malav\u00ed", "MV": "Mald\u00edveyjar", "ML": "Mal\u00ed", "MT": "Malta", "MA": "Marokk\u00f3", "MQ": "Martin\u00edk", "YT": "Mayotte", "MR": "M\u00e1ritan\u00eda", "MU": "M\u00e1rit\u00edus", "MX": "Mex\u00edk\u00f3", "CF": "Mi\u00f0-Afr\u00edkul\u00fd\u00f0veldi\u00f0", "GQ": "Mi\u00f0baugs-G\u00ednea", "MM": "Mjanmar (B\u00farma)", "MD": "Mold\u00f3va", "MN": "Mong\u00f3l\u00eda", "MS": "Montserrat", "MC": "M\u00f3nak\u00f3", "MZ": "M\u00f3samb\u00edk", "IM": "M\u00f6n", "NA": "Namib\u00eda", "NR": "N\u00e1r\u00fa", "NP": "Nepal", "NU": "Niue", "NE": "N\u00edger", "NG": "N\u00edger\u00eda", "NI": "N\u00edkaragva", "KP": "Nor\u00f0ur-K\u00f3rea", "MK": "Nor\u00f0ur-Maked\u00f3n\u00eda", "NO": "Noregur", "NF": "Norfolkeyja", "NC": "N\u00fdja-Kaled\u00f3n\u00eda", "NZ": "N\u00fdja-Sj\u00e1land", "OM": "\u00d3man", "PK": "Pakistan", "PW": "Pal\u00e1", "PA": "Panama", "PG": "Pap\u00faa N\u00fdja-G\u00ednea", "PY": "Paragv\u00e6", "PE": "Per\u00fa", "PN": "Pitcairn-eyjar", "PT": "Port\u00fagal", "PL": "P\u00f3lland", "PR": "P\u00faert\u00f3 R\u00edk\u00f3", "RE": "R\u00e9union", "RW": "R\u00faanda", "RO": "R\u00famen\u00eda", "RU": "R\u00fassland", "MF": "Saint-Martin", "SB": "Sal\u00f3monseyjar", "ZM": "Samb\u00eda", "AE": "Sameinu\u00f0u arab\u00edsku furstad\u00e6min", "WS": "Sam\u00f3a", "SM": "San Mar\u00edn\u00f3", "BL": "Sankti Bart\u00f3l\u00f3meusareyjar", "SH": "Sankti Helena", "KN": "Sankti Kitts og Nevis", "LC": "Sankti L\u00fas\u00eda", "SX": "Sankti Martin", "PM": "Sankti Pierre og Miquelon", "VC": "Sankti Vinsent og Grenad\u00edneyjar", "ST": "Sa\u00f3 T\u00f3me og Prins\u00edpe", "SA": "S\u00e1di-Arab\u00eda", "SN": "Senegal", "RS": "Serb\u00eda", "SC": "Seychelles-eyjar", "HK": "s\u00e9rstj\u00f3rnarsv\u00e6\u00f0i\u00f0 Hong Kong", "MO": "s\u00e9rstj\u00f3rnarsv\u00e6\u00f0i\u00f0 Maka\u00f3", "ZW": "Simbabve", "SG": "Singap\u00far", "SL": "S\u00ederra Le\u00f3ne", "CL": "S\u00edle", "SK": "Sl\u00f3vak\u00eda", "SI": "Sl\u00f3ven\u00eda", "SO": "S\u00f3mal\u00eda", "ES": "Sp\u00e1nn", "LK": "Sr\u00ed Lanka", "ZA": "Su\u00f0ur-Afr\u00edka", "GS": "Su\u00f0ur-Georg\u00eda og Su\u00f0ur-Sandv\u00edkureyjar", "KR": "Su\u00f0ur-K\u00f3rea", "SS": "Su\u00f0ur-S\u00fadan", "AQ": "Su\u00f0urskautslandi\u00f0", "SD": "S\u00fadan", "SR": "S\u00far\u00ednam", "SJ": "Svalbar\u00f0i og Jan Mayen", "ME": "Svartfjallaland", "SZ": "Svas\u00edland", "CH": "Sviss", "SE": "Sv\u00ed\u00fej\u00f3\u00f0", "SY": "S\u00fdrland", "TJ": "Tadsjikistan", "TH": "Ta\u00edland", "TW": "Ta\u00edvan", "TZ": "Tansan\u00eda", "CZ": "T\u00e9kkland", "TL": "T\u00edmor-Leste", "TO": "Tonga", "TG": "T\u00f3g\u00f3", "TK": "T\u00f3kel\u00e1", "TT": "Tr\u00ednidad og T\u00f3bag\u00f3", "TD": "Tsjad", "TC": "Turks- og Caicoseyjar", "TN": "T\u00fanis", "TM": "T\u00farkmenistan", "TR": "Tyrkland", "HU": "Ungverjaland", "UG": "\u00daganda", "UA": "\u00dakra\u00edna", "UY": "\u00dar\u00fagv\u00e6", "UZ": "\u00dasbekistan", "VU": "Van\u00faat\u00fa", "VA": "Vat\u00edkani\u00f0", "VE": "Venes\u00faela", "EH": "Vestur-Sahara", "VN": "V\u00edetnam", "WF": "Wallis- og F\u00fat\u00fanaeyjar", "DE": "\u00de\u00fdskaland"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/it.json000066400000000000000000000113441521174352300277000ustar00rootroot00000000000000{"AF": "Afghanistan", "AL": "Albania", "DZ": "Algeria", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antartide", "AG": "Antigua e Barbuda", "SA": "Arabia Saudita", "AR": "Argentina", "AM": "Armenia", "AW": "Aruba", "AU": "Australia", "AT": "Austria", "AZ": "Azerbaigian", "BS": "Bahamas", "BH": "Bahrein", "BD": "Bangladesh", "BB": "Barbados", "BE": "Belgio", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhutan", "BY": "Bielorussia", "BO": "Bolivia", "BA": "Bosnia ed Erzegovina", "BW": "Botswana", "BR": "Brasile", "BN": "Brunei", "BG": "Bulgaria", "BF": "Burkina Faso", "BI": "Burundi", "KH": "Cambogia", "CM": "Camerun", "CA": "Canada", "CV": "Capo Verde", "BQ": "Caraibi olandesi", "CZ": "Cechia", "TD": "Ciad", "CL": "Cile", "CN": "Cina", "CY": "Cipro", "VA": "Citt\u00e0 del Vaticano", "CO": "Colombia", "KM": "Comore", "CD": "Congo - Kinshasa", "CG": "Congo-Brazzaville", "KP": "Corea del Nord", "KR": "Corea del Sud", "CI": "Costa d\u2019Avorio", "CR": "Costa Rica", "HR": "Croazia", "CU": "Cuba", "CW": "Cura\u00e7ao", "DK": "Danimarca", "DM": "Dominica", "EC": "Ecuador", "EG": "Egitto", "SV": "El Salvador", "AE": "Emirati Arabi Uniti", "ER": "Eritrea", "EE": "Estonia", "ET": "Etiopia", "FJ": "Figi", "PH": "Filippine", "FI": "Finlandia", "FR": "Francia", "GA": "Gabon", "GM": "Gambia", "GE": "Georgia", "GS": "Georgia del Sud e Sandwich australi", "DE": "Germania", "GH": "Ghana", "JM": "Giamaica", "JP": "Giappone", "GI": "Gibilterra", "DJ": "Gibuti", "JO": "Giordania", "GR": "Grecia", "GD": "Grenada", "GL": "Groenlandia", "GP": "Guadalupa", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GQ": "Guinea Equatoriale", "GW": "Guinea-Bissau", "GY": "Guyana", "GF": "Guyana francese", "HT": "Haiti", "HN": "Honduras", "IN": "India", "ID": "Indonesia", "IR": "Iran", "IQ": "Iraq", "IE": "Irlanda", "IS": "Islanda", "BV": "Isola Bouvet", "CX": "Isola Christmas", "IM": "Isola di Man", "NF": "Isola Norfolk", "AX": "Isole \u00c5land", "KY": "Isole Cayman", "CC": "Isole Cocos (Keeling)", "CK": "Isole Cook", "FO": "Isole F\u00e6r \u00d8er", "FK": "Isole Falkland", "HM": "Isole Heard e McDonald", "PN": "Isole Pitcairn", "SB": "Isole Salomone", "TC": "Isole Turks e Caicos", "VI": "Isole Vergini Americane", "VG": "Isole Vergini Britanniche", "IL": "Israele", "IT": "Italia", "KZ": "Kazakistan", "KE": "Kenya", "KG": "Kirghizistan", "KI": "Kiribati", "KW": "Kuwait", "LA": "Laos", "LS": "Lesotho", "LV": "Lettonia", "LB": "Libano", "LR": "Liberia", "LY": "Libia", "LI": "Liechtenstein", "LT": "Lituania", "LU": "Lussemburgo", "MK": "Macedonia del Nord", "MG": "Madagascar", "MW": "Malawi", "MY": "Malaysia", "MV": "Maldive", "ML": "Mali", "MT": "Malta", "MA": "Marocco", "MQ": "Martinica", "MR": "Mauritania", "MU": "Mauritius", "YT": "Mayotte", "MX": "Messico", "MD": "Moldavia", "MC": "Monaco", "MN": "Mongolia", "ME": "Montenegro", "MS": "Montserrat", "MZ": "Mozambico", "MM": "Myanmar (Birmania)", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NI": "Nicaragua", "NE": "Niger", "NG": "Nigeria", "NU": "Niue", "NO": "Norvegia", "NC": "Nuova Caledonia", "NZ": "Nuova Zelanda", "OM": "Oman", "NL": "Paesi Bassi", "PK": "Pakistan", "PW": "Palau", "PA": "Panam\u00e1", "PG": "Papua Nuova Guinea", "PY": "Paraguay", "PE": "Per\u00f9", "PF": "Polinesia francese", "PL": "Polonia", "PT": "Portogallo", "PR": "Portorico", "QA": "Qatar", "HK": "RAS di Hong Kong", "MO": "RAS di Macao", "GB": "Regno Unito", "CF": "Repubblica Centrafricana", "DO": "Repubblica Dominicana", "RE": "Riunione", "RO": "Romania", "RW": "Ruanda", "RU": "Russia", "EH": "Sahara occidentale", "KN": "Saint Kitts e Nevis", "LC": "Saint Lucia", "MF": "Saint Martin", "VC": "Saint Vincent e Grenadine", "BL": "Saint-Barth\u00e9lemy", "PM": "Saint-Pierre e Miquelon", "WS": "Samoa", "AS": "Samoa americane", "SM": "San Marino", "SH": "Sant\u2019Elena", "ST": "S\u00e3o Tom\u00e9 e Pr\u00edncipe", "SN": "Senegal", "RS": "Serbia", "SC": "Seychelles", "SL": "Sierra Leone", "SG": "Singapore", "SX": "Sint Maarten", "SY": "Siria", "SK": "Slovacchia", "SI": "Slovenia", "SO": "Somalia", "ES": "Spagna", "LK": "Sri Lanka", "US": "Stati Uniti", "SS": "Sud Sudan", "ZA": "Sudafrica", "SD": "Sudan", "SR": "Suriname", "SJ": "Svalbard e Jan Mayen", "SE": "Svezia", "CH": "Svizzera", "SZ": "Swaziland", "TJ": "Tagikistan", "TW": "Taiwan", "TZ": "Tanzania", "TF": "Terre australi francesi", "IO": "Territorio britannico dell\u2019Oceano Indiano", "TH": "Thailandia", "TL": "Timor Est", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad e Tobago", "TN": "Tunisia", "TR": "Turchia", "TM": "Turkmenistan", "UA": "Ucraina", "UG": "Uganda", "HU": "Ungheria", "UY": "Uruguay", "UZ": "Uzbekistan", "VU": "Vanuatu", "VE": "Venezuela", "VN": "Vietnam", "WF": "Wallis e Futuna", "YE": "Yemen", "ZM": "Zambia", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/ja.json000066400000000000000000000242211521174352300276540ustar00rootroot00000000000000{"IS": "\u30a2\u30a4\u30b9\u30e9\u30f3\u30c9", "IE": "\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9", "AZ": "\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3", "AF": "\u30a2\u30d5\u30ac\u30cb\u30b9\u30bf\u30f3", "US": "\u30a2\u30e1\u30ea\u30ab\u5408\u8846\u56fd", "AE": "\u30a2\u30e9\u30d6\u9996\u9577\u56fd\u9023\u90a6", "DZ": "\u30a2\u30eb\u30b8\u30a7\u30ea\u30a2", "AR": "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3", "AW": "\u30a2\u30eb\u30d0", "AL": "\u30a2\u30eb\u30d0\u30cb\u30a2", "AM": "\u30a2\u30eb\u30e1\u30cb\u30a2", "AI": "\u30a2\u30f3\u30ae\u30e9", "AO": "\u30a2\u30f3\u30b4\u30e9", "AG": "\u30a2\u30f3\u30c6\u30a3\u30b0\u30a2\u30fb\u30d0\u30fc\u30d6\u30fc\u30c0", "AD": "\u30a2\u30f3\u30c9\u30e9", "YE": "\u30a4\u30a8\u30e1\u30f3", "GB": "\u30a4\u30ae\u30ea\u30b9", "IL": "\u30a4\u30b9\u30e9\u30a8\u30eb", "IT": "\u30a4\u30bf\u30ea\u30a2", "IQ": "\u30a4\u30e9\u30af", "IR": "\u30a4\u30e9\u30f3", "IN": "\u30a4\u30f3\u30c9", "ID": "\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2", "WF": "\u30a6\u30a9\u30ea\u30b9\u30fb\u30d5\u30c4\u30ca", "UG": "\u30a6\u30ac\u30f3\u30c0", "UA": "\u30a6\u30af\u30e9\u30a4\u30ca", "UZ": "\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3", "UY": "\u30a6\u30eb\u30b0\u30a2\u30a4", "EC": "\u30a8\u30af\u30a2\u30c9\u30eb", "EG": "\u30a8\u30b8\u30d7\u30c8", "EE": "\u30a8\u30b9\u30c8\u30cb\u30a2", "SZ": "\u30a8\u30b9\u30ef\u30c6\u30a3\u30cb", "ET": "\u30a8\u30c1\u30aa\u30d4\u30a2", "ER": "\u30a8\u30ea\u30c8\u30ea\u30a2", "SV": "\u30a8\u30eb\u30b5\u30eb\u30d0\u30c9\u30eb", "AU": "\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2", "AT": "\u30aa\u30fc\u30b9\u30c8\u30ea\u30a2", "AX": "\u30aa\u30fc\u30e9\u30f3\u30c9\u8af8\u5cf6", "OM": "\u30aa\u30de\u30fc\u30f3", "NL": "\u30aa\u30e9\u30f3\u30c0", "BQ": "\u30aa\u30e9\u30f3\u30c0\u9818\u30ab\u30ea\u30d6", "GH": "\u30ac\u30fc\u30ca", "CV": "\u30ab\u30fc\u30dc\u30d9\u30eb\u30c7", "GG": "\u30ac\u30fc\u30f3\u30b8\u30fc", "GY": "\u30ac\u30a4\u30a2\u30ca", "KZ": "\u30ab\u30b6\u30d5\u30b9\u30bf\u30f3", "QA": "\u30ab\u30bf\u30fc\u30eb", "CA": "\u30ab\u30ca\u30c0", "GA": "\u30ac\u30dc\u30f3", "CM": "\u30ab\u30e1\u30eb\u30fc\u30f3", "GM": "\u30ac\u30f3\u30d3\u30a2", "KH": "\u30ab\u30f3\u30dc\u30b8\u30a2", "GN": "\u30ae\u30cb\u30a2", "GW": "\u30ae\u30cb\u30a2\u30d3\u30b5\u30a6", "CY": "\u30ad\u30d7\u30ed\u30b9", "CU": "\u30ad\u30e5\u30fc\u30d0", "CW": "\u30ad\u30e5\u30e9\u30bd\u30fc", "GR": "\u30ae\u30ea\u30b7\u30e3", "KI": "\u30ad\u30ea\u30d0\u30b9", "KG": "\u30ad\u30eb\u30ae\u30b9", "GT": "\u30b0\u30a2\u30c6\u30de\u30e9", "GP": "\u30b0\u30a2\u30c9\u30eb\u30fc\u30d7", "GU": "\u30b0\u30a2\u30e0", "KW": "\u30af\u30a6\u30a7\u30fc\u30c8", "CK": "\u30af\u30c3\u30af\u8af8\u5cf6", "GL": "\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9", "CX": "\u30af\u30ea\u30b9\u30de\u30b9\u5cf6", "GD": "\u30b0\u30ec\u30ca\u30c0", "HR": "\u30af\u30ed\u30a2\u30c1\u30a2", "KY": "\u30b1\u30a4\u30de\u30f3\u8af8\u5cf6", "KE": "\u30b1\u30cb\u30a2", "CI": "\u30b3\u30fc\u30c8\u30b8\u30dc\u30ef\u30fc\u30eb", "CC": "\u30b3\u30b3\u30b9(\u30ad\u30fc\u30ea\u30f3\u30b0)\u8af8\u5cf6", "CR": "\u30b3\u30b9\u30bf\u30ea\u30ab", "KM": "\u30b3\u30e2\u30ed", "CO": "\u30b3\u30ed\u30f3\u30d3\u30a2", "CG": "\u30b3\u30f3\u30b4\u5171\u548c\u56fd(\u30d6\u30e9\u30b6\u30d3\u30eb)", "CD": "\u30b3\u30f3\u30b4\u6c11\u4e3b\u5171\u548c\u56fd(\u30ad\u30f3\u30b7\u30e3\u30b5)", "SA": "\u30b5\u30a6\u30b8\u30a2\u30e9\u30d3\u30a2", "GS": "\u30b5\u30a6\u30b9\u30b8\u30e7\u30fc\u30b8\u30a2\u30fb\u30b5\u30a6\u30b9\u30b5\u30f3\u30c9\u30a6\u30a3\u30c3\u30c1\u8af8\u5cf6", "WS": "\u30b5\u30e2\u30a2", "BL": "\u30b5\u30f3\u30fb\u30d0\u30eb\u30c6\u30eb\u30df\u30fc", "MF": "\u30b5\u30f3\u30fb\u30de\u30eb\u30bf\u30f3", "ST": "\u30b5\u30f3\u30c8\u30e1\u30fb\u30d7\u30ea\u30f3\u30b7\u30da", "ZM": "\u30b6\u30f3\u30d3\u30a2", "PM": "\u30b5\u30f3\u30d4\u30a8\u30fc\u30eb\u5cf6\u30fb\u30df\u30af\u30ed\u30f3\u5cf6", "SM": "\u30b5\u30f3\u30de\u30ea\u30ce", "SL": "\u30b7\u30a8\u30e9\u30ec\u30aa\u30cd", "DJ": "\u30b8\u30d6\u30c1", "GI": "\u30b8\u30d6\u30e9\u30eb\u30bf\u30eb", "JM": "\u30b8\u30e3\u30de\u30a4\u30ab", "GE": "\u30b8\u30e7\u30fc\u30b8\u30a2", "SY": "\u30b7\u30ea\u30a2", "SG": "\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb", "SX": "\u30b7\u30f3\u30c8\u30fb\u30de\u30fc\u30eb\u30c6\u30f3", "ZW": "\u30b8\u30f3\u30d0\u30d6\u30a8", "CH": "\u30b9\u30a4\u30b9", "SE": "\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3", "SD": "\u30b9\u30fc\u30c0\u30f3", "SJ": "\u30b9\u30d0\u30fc\u30eb\u30d0\u30eb\u8af8\u5cf6\u30fb\u30e4\u30f3\u30de\u30a4\u30a8\u30f3\u5cf6", "ES": "\u30b9\u30da\u30a4\u30f3", "SR": "\u30b9\u30ea\u30ca\u30e0", "LK": "\u30b9\u30ea\u30e9\u30f3\u30ab", "SK": "\u30b9\u30ed\u30d0\u30ad\u30a2", "SI": "\u30b9\u30ed\u30d9\u30cb\u30a2", "SC": "\u30bb\u30fc\u30b7\u30a7\u30eb", "SN": "\u30bb\u30cd\u30ac\u30eb", "RS": "\u30bb\u30eb\u30d3\u30a2", "KN": "\u30bb\u30f3\u30c8\u30af\u30ea\u30b9\u30c8\u30d5\u30a1\u30fc\u30fb\u30cd\u30fc\u30f4\u30a3\u30b9", "VC": "\u30bb\u30f3\u30c8\u30d3\u30f3\u30bb\u30f3\u30c8\u53ca\u3073\u30b0\u30ec\u30ca\u30c7\u30a3\u30fc\u30f3\u8af8\u5cf6", "SH": "\u30bb\u30f3\u30c8\u30d8\u30ec\u30ca", "LC": "\u30bb\u30f3\u30c8\u30eb\u30b7\u30a2", "SO": "\u30bd\u30de\u30ea\u30a2", "SB": "\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6", "TC": "\u30bf\u30fc\u30af\u30b9\u30fb\u30ab\u30a4\u30b3\u30b9\u8af8\u5cf6", "TH": "\u30bf\u30a4", "TJ": "\u30bf\u30b8\u30ad\u30b9\u30bf\u30f3", "TZ": "\u30bf\u30f3\u30b6\u30cb\u30a2", "CZ": "\u30c1\u30a7\u30b3", "TD": "\u30c1\u30e3\u30c9", "TN": "\u30c1\u30e5\u30cb\u30b8\u30a2", "CL": "\u30c1\u30ea", "DK": "\u30c7\u30f3\u30de\u30fc\u30af", "DE": "\u30c9\u30a4\u30c4", "TG": "\u30c8\u30fc\u30b4", "TK": "\u30c8\u30b1\u30e9\u30a6", "DO": "\u30c9\u30df\u30cb\u30ab\u5171\u548c\u56fd", "DM": "\u30c9\u30df\u30cb\u30ab\u56fd", "TT": "\u30c8\u30ea\u30cb\u30c0\u30fc\u30c9\u30fb\u30c8\u30d0\u30b4", "TM": "\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3", "TR": "\u30c8\u30eb\u30b3", "TO": "\u30c8\u30f3\u30ac", "NG": "\u30ca\u30a4\u30b8\u30a7\u30ea\u30a2", "NR": "\u30ca\u30a6\u30eb", "NA": "\u30ca\u30df\u30d3\u30a2", "NU": "\u30cb\u30a6\u30a8", "NI": "\u30cb\u30ab\u30e9\u30b0\u30a2", "NE": "\u30cb\u30b8\u30a7\u30fc\u30eb", "NC": "\u30cb\u30e5\u30fc\u30ab\u30ec\u30c9\u30cb\u30a2", "NZ": "\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9", "NP": "\u30cd\u30d1\u30fc\u30eb", "NF": "\u30ce\u30fc\u30d5\u30a9\u30fc\u30af\u5cf6", "NO": "\u30ce\u30eb\u30a6\u30a7\u30fc", "HM": "\u30cf\u30fc\u30c9\u5cf6\u30fb\u30de\u30af\u30c9\u30ca\u30eb\u30c9\u8af8\u5cf6", "BH": "\u30d0\u30fc\u30ec\u30fc\u30f3", "HT": "\u30cf\u30a4\u30c1", "PK": "\u30d1\u30ad\u30b9\u30bf\u30f3", "VA": "\u30d0\u30c1\u30ab\u30f3\u5e02\u56fd", "PA": "\u30d1\u30ca\u30de", "VU": "\u30d0\u30cc\u30a2\u30c4", "BS": "\u30d0\u30cf\u30de", "PG": "\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2", "BM": "\u30d0\u30df\u30e5\u30fc\u30c0", "PW": "\u30d1\u30e9\u30aa", "PY": "\u30d1\u30e9\u30b0\u30a2\u30a4", "BB": "\u30d0\u30eb\u30d0\u30c9\u30b9", "HU": "\u30cf\u30f3\u30ac\u30ea\u30fc", "BD": "\u30d0\u30f3\u30b0\u30e9\u30c7\u30b7\u30e5", "PN": "\u30d4\u30c8\u30b1\u30a2\u30f3\u8af8\u5cf6", "FJ": "\u30d5\u30a3\u30b8\u30fc", "PH": "\u30d5\u30a3\u30ea\u30d4\u30f3", "FI": "\u30d5\u30a3\u30f3\u30e9\u30f3\u30c9", "BT": "\u30d6\u30fc\u30bf\u30f3", "BV": "\u30d6\u30fc\u30d9\u5cf6", "PR": "\u30d7\u30a8\u30eb\u30c8\u30ea\u30b3", "FO": "\u30d5\u30a7\u30ed\u30fc\u8af8\u5cf6", "FK": "\u30d5\u30a9\u30fc\u30af\u30e9\u30f3\u30c9\u8af8\u5cf6", "BR": "\u30d6\u30e9\u30b8\u30eb", "FR": "\u30d5\u30e9\u30f3\u30b9", "BG": "\u30d6\u30eb\u30ac\u30ea\u30a2", "BF": "\u30d6\u30eb\u30ad\u30ca\u30d5\u30a1\u30bd", "BN": "\u30d6\u30eb\u30cd\u30a4", "BI": "\u30d6\u30eb\u30f3\u30b8", "VN": "\u30d9\u30c8\u30ca\u30e0", "BJ": "\u30d9\u30ca\u30f3", "VE": "\u30d9\u30cd\u30ba\u30a8\u30e9", "BY": "\u30d9\u30e9\u30eb\u30fc\u30b7", "BZ": "\u30d9\u30ea\u30fc\u30ba", "PE": "\u30da\u30eb\u30fc", "BE": "\u30d9\u30eb\u30ae\u30fc", "PL": "\u30dd\u30fc\u30e9\u30f3\u30c9", "BA": "\u30dc\u30b9\u30cb\u30a2\u30fb\u30d8\u30eb\u30c4\u30a7\u30b4\u30d3\u30ca", "BW": "\u30dc\u30c4\u30ef\u30ca", "BO": "\u30dc\u30ea\u30d3\u30a2", "PT": "\u30dd\u30eb\u30c8\u30ac\u30eb", "HN": "\u30db\u30f3\u30b8\u30e5\u30e9\u30b9", "MG": "\u30de\u30c0\u30ac\u30b9\u30ab\u30eb", "YT": "\u30de\u30e8\u30c3\u30c8", "MW": "\u30de\u30e9\u30a6\u30a4", "ML": "\u30de\u30ea", "MT": "\u30de\u30eb\u30bf", "MQ": "\u30de\u30eb\u30c6\u30a3\u30cb\u30fc\u30af", "MY": "\u30de\u30ec\u30fc\u30b7\u30a2", "IM": "\u30de\u30f3\u5cf6", "MM": "\u30df\u30e3\u30f3\u30de\u30fc (\u30d3\u30eb\u30de)", "MX": "\u30e1\u30ad\u30b7\u30b3", "MU": "\u30e2\u30fc\u30ea\u30b7\u30e3\u30b9", "MR": "\u30e2\u30fc\u30ea\u30bf\u30cb\u30a2", "MZ": "\u30e2\u30b6\u30f3\u30d3\u30fc\u30af", "MC": "\u30e2\u30ca\u30b3", "MV": "\u30e2\u30eb\u30c7\u30a3\u30d6", "MD": "\u30e2\u30eb\u30c9\u30d0", "MA": "\u30e2\u30ed\u30c3\u30b3", "MN": "\u30e2\u30f3\u30b4\u30eb", "ME": "\u30e2\u30f3\u30c6\u30cd\u30b0\u30ed", "MS": "\u30e2\u30f3\u30c8\u30bb\u30e9\u30c8", "JO": "\u30e8\u30eb\u30c0\u30f3", "LA": "\u30e9\u30aa\u30b9", "LV": "\u30e9\u30c8\u30d3\u30a2", "LT": "\u30ea\u30c8\u30a2\u30cb\u30a2", "LY": "\u30ea\u30d3\u30a2", "LI": "\u30ea\u30d2\u30c6\u30f3\u30b7\u30e5\u30bf\u30a4\u30f3", "LR": "\u30ea\u30d9\u30ea\u30a2", "RO": "\u30eb\u30fc\u30de\u30cb\u30a2", "LU": "\u30eb\u30af\u30bb\u30f3\u30d6\u30eb\u30af", "RW": "\u30eb\u30ef\u30f3\u30c0", "LS": "\u30ec\u30bd\u30c8", "LB": "\u30ec\u30d0\u30ce\u30f3", "RE": "\u30ec\u30e6\u30cb\u30aa\u30f3", "RU": "\u30ed\u30b7\u30a2", "IO": "\u82f1\u9818\u30a4\u30f3\u30c9\u6d0b\u5730\u57df", "VG": "\u82f1\u9818\u30f4\u30a1\u30fc\u30b8\u30f3\u8af8\u5cf6", "KR": "\u97d3\u56fd", "EH": "\u897f\u30b5\u30cf\u30e9", "GQ": "\u8d64\u9053\u30ae\u30cb\u30a2", "TW": "\u53f0\u6e7e", "CF": "\u4e2d\u592e\u30a2\u30d5\u30ea\u30ab\u5171\u548c\u56fd", "MO": "\u4e2d\u83ef\u4eba\u6c11\u5171\u548c\u56fd\u30de\u30ab\u30aa\u7279\u5225\u884c\u653f\u533a", "HK": "\u4e2d\u83ef\u4eba\u6c11\u5171\u548c\u56fd\u9999\u6e2f\u7279\u5225\u884c\u653f\u533a", "CN": "\u4e2d\u56fd", "TL": "\u6771\u30c6\u30a3\u30e2\u30fc\u30eb", "ZA": "\u5357\u30a2\u30d5\u30ea\u30ab", "SS": "\u5357\u30b9\u30fc\u30c0\u30f3", "AQ": "\u5357\u6975", "JP": "\u65e5\u672c", "GF": "\u4ecf\u9818\u30ae\u30a2\u30ca", "PF": "\u4ecf\u9818\u30dd\u30ea\u30cd\u30b7\u30a2", "TF": "\u4ecf\u9818\u6975\u5357\u8af8\u5cf6", "VI": "\u7c73\u9818\u30f4\u30a1\u30fc\u30b8\u30f3\u8af8\u5cf6", "AS": "\u7c73\u9818\u30b5\u30e2\u30a2", "MK": "\u5317\u30de\u30b1\u30c9\u30cb\u30a2", "KP": "\u5317\u671d\u9bae"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/km.json000066400000000000000000000407201521174352300276730ustar00rootroot00000000000000{"KH": "\u1780\u1798\u17d2\u1796\u17bb\u1787\u17b6", "CA": "\u1780\u17b6\u178e\u17b6\u178a\u17b6", "QA": "\u1780\u17b6\u178f\u17b6", "CV": "\u1780\u17b6\u1794\u17cb\u179c\u17c2\u179a", "CM": "\u1780\u17b6\u1798\u17c1\u179a\u17bc\u1793", "KZ": "\u1780\u17b6\u17a0\u17d2\u179f\u17b6\u1780\u17cb\u179f\u17d2\u1790\u17b6\u1793", "CG": "\u1780\u17bb\u1784\u17a0\u17d2\u1782\u17c4 - \u1794\u17d2\u179a\u17b6\u17a0\u17d2\u179f\u17b6\u179c\u17b8\u179b", "CD": "\u1780\u17bb\u1784\u17a0\u17d2\u1782\u17c4- \u1782\u17b8\u1793\u179f\u17d2\u17a0\u17b6\u179f\u17b6", "CI": "\u1780\u17bc\u178f\u178c\u17b8\u179c\u17d0\u179a", "KM": "\u1780\u17bc\u1798\u17d0\u179a", "CW": "\u1780\u17bc\u179a\u17c9\u17b6\u1780\u17c5", "KP": "\u1780\u17bc\u179a\u17c9\u17c1\u200b\u1781\u17b6\u1784\u200b\u1787\u17be\u1784", "KR": "\u1780\u17bc\u179a\u17c9\u17c1\u200b\u1781\u17b6\u1784\u200b\u178f\u17d2\u1794\u17bc\u1784", "KW": "\u1780\u17bc\u179c\u17c9\u17c2\u178f", "CR": "\u1780\u17bc\u179f\u17d2\u178f\u17b6\u179a\u17b8\u1780\u17b6", "CO": "\u1780\u17bc\u17a1\u17bb\u17c6\u1794\u17ca\u17b8", "KG": "\u1780\u17c0\u17a0\u17d2\u179f\u17ca\u17b8\u179f\u17ca\u17b8\u179f\u17d2\u1790\u17b6\u1793", "KE": "\u1780\u17c1\u1793\u1799\u17c9\u17b6", "CC": "\u1780\u17c4\u17c7\u200b\u1780\u17bc\u1780\u17bc\u179f (\u1782\u17b8\u179b\u17b8\u1784)", "KY": "\u1780\u17c4\u17c7\u200b\u1780\u17c3\u1798\u17c9\u1784\u17cb", "CK": "\u1780\u17c4\u17c7\u200b\u1781\u17bc\u1780", "CX": "\u1780\u17c4\u17c7\u200b\u1782\u17d2\u179a\u17b8\u179f\u17d2\u1798\u17b6\u179f", "NF": "\u1780\u17c4\u17c7\u200b\u178e\u17d0\u179a\u17a0\u17d2\u179c\u1780\u17cb", "TC": "\u1780\u17c4\u17c7\u200b\u1791\u17bd\u1782 \u1793\u17b7\u1784 \u1780\u17c3\u1780\u17bc\u179f", "BV": "\u1780\u17c4\u17c7\u200b\u1794\u17ca\u17bc\u179c\u17c9\u17c1\u178f", "PN": "\u1780\u17c4\u17c7\u200b\u1797\u17b8\u178f\u1780\u17b6\u1793", "VG": "\u1780\u17c4\u17c7\u200b\u179c\u17ba\u1787\u17b7\u1793\u200b\u1785\u1780\u17d2\u179a\u1797\u1796\u200b\u17a2\u1784\u17cb\u1782\u17d2\u179b\u17c1\u179f", "VI": "\u1780\u17c4\u17c7\u200b\u179c\u17ba\u1787\u17b8\u1793\u200b\u17a2\u17b6\u1798\u17c1\u179a\u17b7\u1780", "SB": "\u1780\u17c4\u17c7\u200b\u179f\u17bc\u17a1\u17bc\u1798\u17c9\u17bb\u1784", "HM": "\u1780\u17c4\u17c7\u200b\u17a0\u17ba\u178a \u1793\u17b7\u1784\u200b\u1798\u17c9\u17b6\u1780\u17cb\u178a\u17bc\u178e\u17b6\u179b\u17cb", "FK": "\u1780\u17c4\u17c7\u200b\u17a0\u17d2\u179c\u1780\u17cb\u17a1\u17c2\u1793", "FO": "\u1780\u17c4\u17c7\u200b\u17a0\u17d2\u179c\u17b6\u179a\u17c9\u17bc", "GS": "\u1780\u17c4\u17c7\u200b\u17a0\u17d2\u179f\u1780\u17a0\u17d2\u179f\u17ca\u17b8\u200b\u1781\u17b6\u1784\u178f\u17d2\u1794\u17bc\u1784 \u1793\u17b7\u1784 \u179f\u1784\u17cb\u179c\u17b7\u1785\u200b\u1781\u17b6\u1784\u178f\u17d2\u1794\u17bc\u1784", "AX": "\u1780\u17c4\u17c7\u200b\u17a2\u17b6\u17a1\u1784\u17cb", "GR": "\u1780\u17d2\u179a\u17b7\u1780", "HR": "\u1780\u17d2\u179a\u17bc\u17a2\u17b6\u179f\u17ca\u17b8", "GT": "\u1780\u17d2\u179c\u17b6\u178f\u17c1\u1798\u17c9\u17b6\u17a1\u17b6", "KI": "\u1782\u17b7\u179a\u17b8\u1794\u17b6\u1791\u17b8", "CU": "\u1782\u17bb\u1799\u1794\u17b6", "GB": "\u1785\u1780\u17d2\u179a\u1797\u1796\u200b\u17a2\u1784\u17cb\u1782\u17d2\u179b\u17c1\u179f", "CN": "\u1785\u17b7\u1793", "TD": "\u1786\u17b6\u178a", "CZ": "\u1786\u17c2\u1782\u17b6", "JP": "\u1787\u1794\u17c9\u17bb\u1793", "DJ": "\u1787\u17b8\u1794\u17ca\u17bc\u1791\u17b8", "DK": "\u178a\u17b6\u178e\u17ba\u1798\u17c9\u17b6\u1780", "DM": "\u178a\u17bc\u1798\u17b8\u1793\u17b8\u1780", "TF": "\u178a\u17c2\u1793\u178a\u17b8\u200b\u1794\u17b6\u179a\u17b6\u17c6\u1784\u200b\u1793\u17c5\u200b\u1797\u17b6\u1782\u1781\u17b6\u1784\u178f\u17d2\u1794\u17bc\u1784", "IO": "\u178a\u17c2\u1793\u178a\u17b8\u200b\u17a2\u1784\u17cb\u1782\u17d2\u179b\u17c1\u179f\u200b\u1793\u17c5\u200b\u1798\u17a0\u17b6\u200b\u179f\u1798\u17bb\u1791\u17d2\u179a\u200b\u17a5\u178e\u17d2\u178c\u17b6", "NA": "\u178e\u17b6\u1798\u17b8\u1794\u17ca\u17b8", "NR": "\u178e\u17bc\u179a\u17bc", "NU": "\u178e\u17c0", "TZ": "\u178f\u1784\u17cb\u179f\u17b6\u1793\u17b8", "TJ": "\u178f\u17b6\u17a0\u17d2\u179f\u17ca\u17b8\u1782\u17b8\u179f\u17d2\u1790\u17b6\u1793", "TO": "\u178f\u17bb\u1784\u17a0\u17d2\u1782\u17b6", "TK": "\u178f\u17bc\u1781\u17c1\u17a1\u17c5", "TG": "\u178f\u17bc\u17a0\u17d2\u1782\u17c4", "TR": "\u178f\u17bd\u1780\u1782\u17b8", "TM": "\u178f\u17bd\u1780\u1798\u17c9\u17c1\u1793\u17b8\u179f\u17d2\u1790\u17b6\u1793", "TW": "\u178f\u17c3\u179c\u17c9\u17b6\u1793\u17cb", "TH": "\u1790\u17c3", "TL": "\u1791\u17b8\u1798\u17d0\u179a\u179b\u17c1\u179f\u17d2\u178f\u17c1", "TN": "\u1791\u17bb\u1799\u1793\u17b8\u179f\u17ca\u17b8", "TT": "\u1791\u17d2\u179a\u17b8\u1793\u17b8\u178a\u17b6\u178f \u1793\u17b7\u1784\u200b\u178f\u17bc\u1794\u17b6\u17a0\u17d2\u1782\u17c4", "NO": "\u1793\u17d0\u179a\u179c\u17c2\u179f", "NI": "\u1793\u17b8\u1780\u17b6\u179a\u17c9\u17b6\u17a0\u17d2\u1782\u17b6", "NE": "\u1793\u17b8\u17a0\u17d2\u179f\u17c1", "NG": "\u1793\u17b8\u17a0\u17d2\u179f\u17c1\u179a\u17b8\u1799\u17c9\u17b6", "NC": "\u1793\u17bc\u179c\u17c2\u179b\u200b\u1780\u17b6\u17a1\u17c1\u178a\u17bc\u1793\u17b8", "NZ": "\u1793\u17bc\u179c\u17c2\u179b\u200b\u179f\u17c1\u17a1\u1784\u17cb", "NP": "\u1793\u17c1\u1794\u17c9\u17b6\u179b\u17cb", "BD": "\u1794\u1784\u17cb\u1780\u17d2\u179b\u17b6\u178a\u17c2\u179f", "PK": "\u1794\u17c9\u17b6\u1782\u17b8\u179f\u17d2\u1790\u17b6\u1793", "PA": "\u1794\u17c9\u17b6\u178e\u17b6\u1798\u17c9\u17b6", "BB": "\u1794\u17b6\u1794\u17b6\u178a\u17bb\u179f", "PG": "\u1794\u17c9\u17b6\u1796\u17bc\u17a2\u17b6\u179f\u17ca\u17b8\u200b\u1793\u17bc\u179c\u17c2\u179b\u17a0\u17d2\u1782\u17b8\u178e\u17c1", "PY": "\u1794\u17c9\u17b6\u179a\u17c9\u17b6\u17a0\u17d2\u1782\u17b6\u1799", "BH": "\u1794\u17b6\u179a\u17c9\u17c2\u1793", "FR": "\u1794\u17b6\u179a\u17b6\u17c6\u1784", "BS": "\u1794\u17b6\u17a0\u17b6\u1798\u17c9\u17b6", "BM": "\u1794\u17ca\u17ba\u1798\u17bb\u1799\u178a\u17b6", "BW": "\u1794\u17bb\u178f\u179f\u17d2\u179c\u17b6\u178e\u17b6", "VA": "\u1794\u17bb\u179a\u17b8\u200b\u179c\u17c9\u17b6\u1791\u17b8\u1780\u1784\u17cb", "BG": "\u1794\u17ca\u17bb\u179b\u17a0\u17d2\u1782\u17b6\u179a\u17b8", "BT": "\u1794\u17ca\u17bc\u178f\u1784\u17cb", "BI": "\u1794\u17ca\u17bc\u179a\u17bb\u1793\u178c\u17b8", "PF": "\u1794\u17c9\u17bc\u179b\u17b8\u200b\u178e\u17c1\u179f\u17ca\u17b8\u200b\u1794\u17b6\u179a\u17b6\u17c6\u1784", "BO": "\u1794\u17bc\u179b\u17b8\u179c\u17b8", "BA": "\u1794\u17bc\u179f\u17d2\u1793\u17b8 \u1793\u17b7\u1784\u17a0\u17ba\u17a0\u17d2\u179f\u17b8\u17a0\u17d2\u1782\u17bc\u179c\u17b8\u178e\u17b6", "PL": "\u1794\u17c9\u17bc\u17a1\u17bc\u1789", "BF": "\u1794\u17bd\u1782\u17b8\u178e\u17b6\u17a0\u17d2\u179c\u17b6\u179f\u17bc", "BJ": "\u1794\u17c1\u178e\u17b6\u17c6\u1784", "PE": "\u1794\u17c9\u17c1\u179a\u17bc", "BZ": "\u1794\u17c1\u179b\u17b8", "BY": "\u1794\u17c1\u17a1\u17b6\u179a\u17bb\u179f", "BE": "\u1794\u17c2\u179b\u17a0\u17d2\u179f\u17ca\u17b7\u1780", "BR": "\u1794\u17d2\u179a\u17c1\u179f\u17ca\u17b8\u179b", "PW": "\u1795\u17c5\u17a1\u17bc", "PR": "\u1796\u17d0\u179a\u178f\u17bc\u179a\u17b8\u1780\u17bc", "PT": "\u1796\u17d0\u179a\u1791\u17bb\u1799\u17a0\u17d2\u1782\u17b6\u179b\u17cb", "BN": "\u1796\u17d2\u179a\u17bb\u1799\u178e\u17c1", "MO": "\u1798\u17c9\u17b6\u1780\u17b6\u179c \u178f\u17c6\u1794\u1793\u17cb\u179a\u178a\u17d2\u178b\u1794\u17b6\u179b\u1796\u17b7\u179f\u17c1\u179f\u1785\u17b7\u1793", "MG": "\u1798\u17c9\u17b6\u178a\u17b6\u17a0\u17d2\u1782\u17b6\u179f\u17d2\u1780\u17b6", "MQ": "\u1798\u17c9\u17b6\u1791\u17b8\u1793\u17b8\u1780", "YT": "\u1798\u17c9\u17b6\u1799\u17bb\u178f", "MA": "\u1798\u17c9\u17b6\u179a\u17c9\u17bb\u1780", "MV": "\u1798\u17c9\u17b6\u179b\u17cb\u178c\u17b8\u179c", "MT": "\u1798\u17c9\u17b6\u179b\u17cb\u178f\u17cd", "ML": "\u1798\u17c9\u17b6\u179b\u17b8", "MK": "\u1798\u17c9\u17b6\u179f\u17c1\u178a\u17d2\u179c\u17b6\u1793\u1781\u17b6\u1784\u1787\u17be\u1784", "MW": "\u1798\u17c9\u17b6\u17a1\u17b6\u179c\u17b8", "MY": "\u1798\u17c9\u17b6\u17a1\u17c1\u179f\u17ca\u17b8", "MX": "\u1798\u17c9\u17b7\u1780\u179f\u17ca\u17b7\u1780", "MM": "\u1798\u17b8\u1799\u17c9\u17b6\u1793\u17cb\u1798\u17c9\u17b6 (\u1797\u17bc\u1798\u17b6)", "ME": "\u1798\u17c9\u17bb\u1784\u178f\u17c1\u178e\u17c1\u17a0\u17d2\u1782\u17d2\u179a\u17c4", "MS": "\u1798\u17c9\u17bb\u1784\u179f\u17ca\u17c2\u179a\u17c9\u17b6", "MN": "\u1798\u17c9\u17bb\u1784\u17a0\u17d2\u1782\u17c4\u179b\u17b8", "MD": "\u1798\u17c9\u17bb\u179b\u178a\u17b6\u179c\u17b8", "MC": "\u1798\u17c9\u17bc\u178e\u17b6\u1780\u17bc", "MR": "\u1798\u17c9\u17bc\u179a\u17b8\u178f\u17b6\u1793\u17b8", "MU": "\u1798\u17c9\u17bc\u179a\u17b8\u179f", "MZ": "\u1798\u17c9\u17bc\u179f\u17c6\u1794\u17ca\u17b7\u1780", "YE": "\u1799\u17c1\u1798\u17c9\u17c2\u1793", "RW": "\u179a\u179c\u17c9\u17b6\u1793\u17cb\u178a\u17b6", "RU": "\u179a\u17bb\u179f\u17d2\u179f\u17ca\u17b8", "RO": "\u179a\u17bc\u1798\u17c9\u17b6\u1793\u17b8", "RE": "\u179a\u17c1\u17a2\u17bb\u1799\u1789\u17c9\u17bb\u1784", "LI": "\u179b\u17b7\u1785\u178f\u17b7\u1793\u179f\u17d2\u178a\u17b6\u1789", "LT": "\u179b\u17b8\u1791\u17bb\u1799\u17a2\u17b6\u1793\u17b8", "LB": "\u179b\u17b8\u1794\u1784\u17cb", "LY": "\u179b\u17b8\u1794\u17ca\u17b8", "LR": "\u179b\u17b8\u1794\u17c1\u179a\u17b8\u1799\u17c9\u17b6", "LU": "\u179b\u17bb\u1785\u179f\u17c6\u1794\u17bd", "VU": "\u179c\u17c9\u17b6\u1793\u17bc\u1791\u17bc", "WF": "\u179c\u17c9\u17b6\u179b\u17b8\u179f \u1793\u17b7\u1784\u200b\u17a0\u17d2\u179c\u17bc\u1791\u17bc\u178e\u17b6", "VN": "\u179c\u17c0\u178f\u178e\u17b6\u1798", "VE": "\u179c\u17c9\u17c1\u178e\u17c1\u179f\u17ca\u17bb\u1799\u17a2\u17c1\u17a1\u17b6", "PM": "\u179f\u1784\u17cb\u1796\u17d2\u1799\u17c2\u179a \u1793\u17b7\u1784\u200b\u1798\u17b8\u1782\u17b8\u17a1\u17bb\u1784", "SH": "\u179f\u1784\u17cb\u200b\u17a0\u17c1\u17a1\u17c1\u178e\u17b6", "US": "\u179f\u17a0\u179a\u178a\u17d2\u178b\u17a2\u17b6\u1798\u17c1\u179a\u17b7\u1780", "DO": "\u179f\u17b6\u1792\u17b6\u179a\u178e\u179a\u178a\u17d2\u178b\u200b\u178a\u17bc\u1798\u17b8\u1793\u17b8\u1780", "CF": "\u179f\u17b6\u1792\u17b6\u179a\u178e\u179a\u178a\u17d2\u178b\u17a2\u17b6\u17a0\u17d2\u179c\u17d2\u179a\u17b7\u1780\u1780\u178e\u17d2\u178a\u17b6\u179b", "SM": "\u179f\u17b6\u1793\u200b\u1798\u17c9\u17b6\u179a\u17b8\u178e\u17bc", "WS": "\u179f\u17b6\u1798\u17d0\u179a", "AS": "\u179f\u17b6\u1798\u17d0\u179a \u17a2\u17b6\u1798\u17c1\u179a\u17b7\u1780\u17b6\u17c6\u1784", "EH": "\u179f\u17b6\u17a0\u17b6\u179a\u17c9\u17b6\u1781\u17b6\u1784\u179b\u17b7\u1785", "SG": "\u179f\u17b7\u1784\u17d2\u17a0\u1794\u17bb\u179a\u17b8", "SX": "\u179f\u17b8\u1784\u200b\u1798\u17c9\u17b6\u1792\u17b8\u1793", "CY": "\u179f\u17ca\u17b8\u1794", "ZW": "\u179f\u17ca\u17b8\u1798\u1794\u17b6\u179c\u17c9\u17c1", "SY": "\u179f\u17ca\u17b8\u179a\u17b8", "CL": "\u179f\u17ca\u17b8\u179b\u17b8", "SC": "\u179f\u17b8\u179f\u17d2\u17a0\u17c2\u179b", "SE": "\u179f\u17ca\u17bb\u1799\u17a2\u17c2\u178f", "SD": "\u179f\u17ca\u17bc\u178a\u1784\u17cb", "SS": "\u179f\u17ca\u17bc\u178a\u1784\u17cb\u200b\u1781\u17b6\u1784\u200b\u178f\u17d2\u1794\u17bc\u1784", "SO": "\u179f\u17bc\u1798\u17c9\u17b6\u179b\u17b8", "SR": "\u179f\u17bc\u179a\u17b8\u178e\u17b6\u1798", "SL": "\u179f\u17c0\u179a\u17c9\u17b6\u17a1\u17c1\u17a2\u17bc\u1793", "SN": "\u179f\u17c1\u178e\u17c1\u17a0\u17d2\u1782\u17b6\u179b\u17cb", "RS": "\u179f\u17c2\u1794\u17ca\u17b8", "ST": "\u179f\u17c5\u178f\u17bc\u1798\u17c9\u17c1 \u1793\u17b7\u1784 \u1794\u17d2\u179a\u17b6\u17c6\u1784\u179f\u17ca\u17b8\u1794", "ZM": "\u179f\u17c6\u1794\u17ca\u17b8", "KN": "\u179f\u17b6\u17c6\u1784\u200b\u1782\u17b8\u178f \u1793\u17b7\u1784 \u178e\u17c1\u179c\u17b8\u179f", "BL": "\u179f\u17b6\u17c6\u1784\u200b\u1794\u17b6\u1790\u17c1\u17a1\u17c1\u1798\u17b8", "MF": "\u179f\u17b6\u17c6\u1784\u200b\u1798\u17c9\u17b6\u1791\u17b8\u1793", "LC": "\u179f\u17b6\u17c6\u1784\u179b\u17bc\u179f\u17ca\u17b8", "VC": "\u179f\u17b6\u17c6\u1784\u200b\u179c\u17c9\u17b6\u17c6\u1784\u179f\u1784\u17cb \u1793\u17b7\u1784 \u17a0\u17d2\u1782\u17d2\u179a\u17c1\u178e\u17b6\u178c\u17b8\u1793", "LK": "\u179f\u17d2\u179a\u17b8\u179b\u1784\u17d2\u1780\u17b6", "SK": "\u179f\u17d2\u179b\u17bc\u179c\u17c9\u17b6\u1782\u17b8", "SI": "\u179f\u17d2\u179b\u17bc\u179c\u17c1\u1793\u17b8", "SJ": "\u179f\u17d2\u179c\u17b6\u179b\u1794\u17b6\u178a \u1793\u17b7\u1784 \u17a0\u17d2\u179f\u1784\u17cb\u1798\u17c9\u17b6\u1799\u17c1\u1793", "SZ": "\u179f\u17d2\u179c\u17b6\u179f\u17ca\u17b8\u17a1\u1784\u17cb", "CH": "\u179f\u17d2\u179c\u17b8\u179f", "HK": "\u17a0\u17bb\u1784\u1780\u17bb\u1784", "HU": "\u17a0\u17bb\u1784\u1782\u17d2\u179a\u17b8", "HN": "\u17a0\u17bb\u1784\u178c\u17bc\u179a\u17c9\u17b6\u179f", "NL": "\u17a0\u17bc\u17a1\u1784\u17cb", "BQ": "\u17a0\u17bc\u17a1\u1784\u17cb \u1780\u17b6\u179a\u17c9\u17b6\u1794\u17ca\u17b8\u1793", "HT": "\u17a0\u17c3\u1791\u17b8", "GH": "\u17a0\u17d2\u1782\u17b6\u178e\u17b6", "GA": "\u17a0\u17d2\u1782\u17b6\u1794\u17bb\u1784", "GN": "\u17a0\u17d2\u1782\u17b8\u178e\u17c1", "GW": "\u17a0\u17d2\u1782\u17b8\u178e\u17c1\u1794\u17ca\u17b8\u179f\u17d2\u179f\u17bc", "GQ": "\u17a0\u17d2\u1782\u17b8\u178e\u17c1\u17a2\u17c1\u1780\u17d2\u179c\u17b6\u1791\u17d0\u179a", "GY": "\u17a0\u17d2\u1782\u17b8\u1799\u17c9\u17b6\u1793", "GF": "\u17a0\u17d2\u1782\u17b8\u17a2\u17b6\u178e\u17b6 \u1794\u17b6\u179a\u17b6\u17c6\u1784", "GG": "\u17a0\u17d2\u1782\u17c1\u1793\u179f\u17ca\u17b8", "GP": "\u17a0\u17d2\u1782\u17c4\u178a\u17ba\u17a1\u17bb\u1794", "GM": "\u17a0\u17d2\u1782\u17c6\u1794\u17ca\u17b8", "GU": "\u17a0\u17d2\u1782\u17b6\u17c6", "GD": "\u17a0\u17d2\u1782\u17d2\u179a\u17be\u178e\u17b6\u178a", "GL": "\u17a0\u17d2\u1782\u17d2\u179a\u17c4\u17a2\u1784\u17cb\u17a1\u1784\u17cb", "FJ": "\u17a0\u17d2\u179c\u17b8\u1787\u17b8", "PH": "\u17a0\u17d2\u179c\u17b8\u179b\u17b8\u1796\u17b8\u1793", "FI": "\u17a0\u17d2\u179c\u17b6\u17c6\u1784\u17a1\u1784\u17cb", "JO": "\u17a0\u17ca\u17d2\u179f\u1780\u178a\u17b6\u1793\u17b8", "GE": "\u17a0\u17d2\u179f\u1780\u17a0\u17d2\u179f\u17ca\u17b8", "JM": "\u17a0\u17d2\u179f\u17b6\u1798\u17c9\u17b6\u17a2\u17ca\u17b8\u1780", "GI": "\u17a0\u17d2\u179f\u17ca\u17b8\u1794\u17d2\u179a\u17b6\u179b\u17cb\u178f\u17b6", "LA": "\u17a1\u17b6\u179c", "LV": "\u17a1\u17c1\u178f\u17bc\u1793\u17b8", "LS": "\u17a1\u17c1\u179f\u17bc\u178f\u17bc", "AD": "\u17a2\u1784\u17cb\u178a\u17bc\u179a\u17c9\u17b6", "AQ": "\u17a2\u1784\u17cb\u178f\u17b6\u1780\u17cb\u1791\u17b7\u1780", "AG": "\u17a2\u1784\u17cb\u1791\u17b8\u17a0\u17d2\u1782\u17b6 \u1793\u17b7\u1784 \u1794\u17b6\u1794\u17ca\u17bb\u1799\u178a\u17b6", "AI": "\u17a2\u1784\u17cb\u17a0\u17d2\u1782\u17b8\u17a1\u17b6", "AO": "\u17a2\u1784\u17cb\u17a0\u17d2\u1782\u17c4\u17a1\u17b6", "AM": "\u17a2\u17b6\u1798\u17c1\u1793\u17b8", "SA": "\u17a2\u17b6\u179a\u17c9\u17b6\u1794\u17ca\u17b8\u179f\u17b6\u17a2\u17bc\u178c\u17b8\u178f", "AW": "\u17a2\u17b6\u179a\u17bc\u1794\u17b6", "AL": "\u17a2\u17b6\u179b\u17cb\u1794\u17b6\u1793\u17b8", "DZ": "\u17a2\u17b6\u179b\u17cb\u17a0\u17d2\u179f\u17c1\u179a\u17b8", "DE": "\u17a2\u17b6\u179b\u17d2\u179b\u17ba\u1798\u17c9\u1784\u17cb", "AZ": "\u17a2\u17b6\u179f\u17ca\u17c2\u1794\u17c3\u17a0\u17d2\u179f\u1784\u17cb", "AF": "\u17a2\u17b6\u17a0\u17d2\u179c\u17a0\u17d2\u1782\u17b6\u1793\u17b8\u179f\u17d2\u1790\u17b6\u1793", "ZA": "\u17a2\u17b6\u17a0\u17d2\u179c\u17d2\u179a\u17b7\u1780\u1781\u17b6\u1784\u178f\u17d2\u1794\u17bc\u1784", "AR": "\u17a2\u17b6\u17a0\u17d2\u179f\u1784\u17cb\u1791\u17b8\u1793", "IN": "\u17a5\u178e\u17d2\u178c\u17b6", "ID": "\u17a5\u178e\u17d2\u178c\u17bc\u178e\u17c1\u179f\u17ca\u17b8", "IT": "\u17a2\u17ca\u17b8\u178f\u17b6\u179b\u17b8", "IR": "\u17a2\u17ca\u17b8\u179a\u17c9\u1784\u17cb", "IQ": "\u17a2\u17ca\u17b8\u179a\u17c9\u17b6\u1780\u17cb", "IL": "\u17a2\u17ca\u17b8\u179f\u17d2\u179a\u17b6\u17a2\u17c2\u179b", "IS": "\u17a2\u17ca\u17b8\u179f\u17d2\u179b\u1784\u17cb", "UA": "\u17a2\u17ca\u17bb\u1799\u1780\u17d2\u179a\u17c2\u1793", "UY": "\u17a2\u17ca\u17bb\u1799\u179a\u17bc\u17a0\u17d2\u1782\u17b6\u1799", "AT": "\u17a2\u17bc\u1791\u17d2\u179a\u17b8\u179f", "OM": "\u17a2\u17bc\u1798\u17c9\u1784\u17cb", "UZ": "\u17a2\u17ca\u17bc\u179f\u1794\u17c1\u1782\u17b8\u179f\u17d2\u1790\u17b6\u1793", "AU": "\u17a2\u17bc\u179f\u17d2\u178f\u17d2\u179a\u17b6\u179b\u17b8", "UG": "\u17a2\u17ca\u17bc\u17a0\u17d2\u1782\u1784\u17cb\u178a\u17b6", "IE": "\u17a2\u17c0\u179a\u17a1\u1784\u17cb", "EC": "\u17a2\u17c1\u1780\u17d2\u179c\u17b6\u1791\u17d0\u179a", "ET": "\u17a2\u17c1\u178f\u17d2\u1799\u17bc\u1796\u17b8", "AE": "\u17a2\u17c1\u1798\u17b8\u179a\u17c9\u17b6\u178f\u200b\u17a2\u17b6\u179a\u17c9\u17b6\u1794\u17cb\u200b\u179a\u17bd\u1798", "ER": "\u17a2\u17c1\u179a\u17b8\u178f\u17d2\u179a\u17c1", "EE": "\u17a2\u17c1\u179f\u17d2\u178f\u17bc\u1793\u17b8", "ES": "\u17a2\u17c1\u179f\u17d2\u1794\u17c9\u17b6\u1789", "EG": "\u17a2\u17c1\u17a0\u17d2\u179f\u17ca\u17b8\u1794", "SV": "\u17a2\u17c2\u179b\u179f\u17b6\u179b\u17cb\u179c\u17c9\u17b6\u178c\u17d0\u179a", "IM": "\u17a2\u17c2\u179b\u17a2\u17bb\u17a0\u17d2\u179c\u1798\u17c2\u1793"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/lt.json000066400000000000000000000125421521174352300277040ustar00rootroot00000000000000{"AF": "Afganistanas", "IE": "Airija", "AX": "Aland\u0173 Salos", "AL": "Albanija", "DZ": "Al\u017eyras", "AS": "Amerikos Samoa", "AD": "Andora", "AI": "Angilija", "AO": "Angola", "AQ": "Antarktida", "AG": "Antigva ir Barbuda", "AR": "Argentina", "AM": "Arm\u0117nija", "AW": "Aruba", "AU": "Australija", "AT": "Austrija", "AZ": "Azerbaid\u017eanas", "BS": "Bahamos", "BH": "Bahreinas", "BY": "Baltarusija", "BD": "Banglade\u0161as", "BB": "Barbadosas", "BE": "Belgija", "BZ": "Belizas", "BJ": "Beninas", "BM": "Bermuda", "GW": "Bisau Gvin\u0117ja", "BO": "Bolivija", "BA": "Bosnija ir Hercegovina", "BW": "Botsvana", "BR": "Brazilija", "BN": "Brun\u0117jus", "BG": "Bulgarija", "BF": "Burkina Fasas", "BI": "Burundis", "BT": "Butanas", "BV": "Buv\u0117 Sala", "CF": "Centrin\u0117s Afrikos Respublika", "TD": "\u010cadas", "CZ": "\u010cekija", "CL": "\u010cil\u0117", "DK": "Danija", "VG": "Did\u017eiosios Britanijos Mergeli\u0173 Salos", "DM": "Dominika", "DO": "Dominikos Respublika", "CI": "Dramblio Kaulo Krantas", "DJ": "D\u017eibutis", "EG": "Egiptas", "EC": "Ekvadoras", "ER": "Eritr\u0117ja", "EE": "Estija", "ET": "Etiopija", "FO": "Farer\u0173 Salos", "FJ": "Fid\u017eis", "PH": "Filipinai", "FK": "Folklando Salos", "GA": "Gabonas", "GY": "Gajana", "GM": "Gambija", "GH": "Gana", "GG": "Gernsis", "GI": "Gibraltaras", "GR": "Graikija", "GD": "Grenada", "GL": "Grenlandija", "GE": "Gruzija", "GU": "Guamas", "GP": "Gvadelupa", "GT": "Gvatemala", "GN": "Gvin\u0117ja", "HT": "Haitis", "HM": "Herdo ir Makdonaldo Salos", "HN": "Hond\u016bras", "IN": "Indija", "IO": "Indijos Vandenyno Brit\u0173 Sritis", "ID": "Indonezija", "HK": "Ypatingasis Administracinis Kinijos Regionas Honkongas", "MO": "Ypatingasis Administracinis Kinijos Regionas Makao", "IQ": "Irakas", "IR": "Iranas", "IS": "Islandija", "ES": "Ispanija", "IT": "Italija", "IL": "Izraelis", "JM": "Jamaika", "JP": "Japonija", "YE": "Jemenas", "JO": "Jordanija", "GB": "Jungtin\u0117 Karalyst\u0117", "US": "Jungtin\u0117s Valstijos", "AE": "Jungtiniai Arab\u0173 Emyratai", "VI": "Jungtini\u0173 Valstij\u0173 Mergeli\u0173 Salos", "ME": "Juodkalnija", "KY": "Kaiman\u0173 Salos", "CX": "Kal\u0117d\u0173 Sala", "KH": "Kambod\u017ea", "CM": "Kamer\u016bnas", "CA": "Kanada", "BQ": "Karib\u0173 Nyderlandai", "QA": "Kataras", "KZ": "Kazachstanas", "KE": "Kenija", "CN": "Kinija", "CY": "Kipras", "KG": "Kirgizija", "KI": "Kiribatis", "CW": "Kiurasao", "CC": "Kokos\u0173 (Kilingo) Salos", "CO": "Kolumbija", "KM": "Komorai", "CG": "Kongas-Brazavilis", "CD": "Kongas-Kin\u0161asa", "CR": "Kosta Rika", "HR": "Kroatija", "CU": "Kuba", "CK": "Kuko Salos", "KW": "Kuveitas", "LA": "Laosas", "LV": "Latvija", "PL": "Lenkija", "LS": "Lesotas", "LB": "Libanas", "LR": "Liberija", "LY": "Libija", "LI": "Lichten\u0161teinas", "LT": "Lietuva", "LU": "Liuksemburgas", "MG": "Madagaskaras", "YT": "Majotas", "MY": "Malaizija", "MW": "Malavis", "MV": "Maldyvai", "ML": "Malis", "MT": "Malta", "MA": "Marokas", "MQ": "Martinika", "MU": "Mauricijus", "MR": "Mauritanija", "MX": "Meksika", "IM": "Meno Sala", "MM": "Mianmaras (Birma)", "MD": "Moldova", "MC": "Monakas", "MN": "Mongolija", "MS": "Montseratas", "MZ": "Mozambikas", "NA": "Namibija", "NC": "Naujoji Kaledonija", "NZ": "Naujoji Zelandija", "NR": "Nauru", "NP": "Nepalas", "NL": "Nyderlandai", "NG": "Nigerija", "NE": "Nigeris", "NI": "Nikaragva", "NU": "Niuj\u0117", "NF": "Norfolko sala", "NO": "Norvegija", "OM": "Omanas", "PK": "Pakistanas", "PW": "Palau", "PA": "Panama", "PG": "Papua Naujoji Gvin\u0117ja", "PY": "Paragvajus", "PE": "Peru", "ZA": "Piet\u0173 Afrika", "GS": "Piet\u0173 D\u017eord\u017eija ir Piet\u0173 Sandvi\u010do salos", "KR": "Piet\u0173 Kor\u0117ja", "SS": "Piet\u0173 Sudanas", "PN": "Pitkerno salos", "PT": "Portugalija", "FR": "Pranc\u016bzija", "GF": "Pranc\u016bzijos Gviana", "TF": "Pranc\u016bzijos Piet\u0173 sritys", "PF": "Pranc\u016bzijos Polinezija", "PR": "Puerto Rikas", "GQ": "Pusiaujo Gvin\u0117ja", "RE": "Reunjonas", "TL": "Ryt\u0173 Timoras", "RW": "Ruanda", "RO": "Rumunija", "RU": "Rusija", "SB": "Saliamono Salos", "SV": "Salvadoras", "WS": "Samoa", "SM": "San Marinas", "ST": "San Tom\u0117 ir Prinsip\u0117", "SA": "Saudo Arabija", "SC": "Sei\u0161eliai", "BL": "Sen Bartelemi", "MF": "Sen Martenas", "PM": "Sen Pjeras ir Mikelonas", "SN": "Senegalas", "KN": "Sent Kitsas ir Nevis", "LC": "Sent Lusija", "RS": "Serbija", "SL": "Siera Leon\u0117", "SG": "Singap\u016bras", "SX": "Sint Martenas", "SY": "Sirija", "SK": "Slovakija", "SI": "Slov\u0117nija", "SO": "Somalis", "SD": "Sudanas", "FI": "Suomija", "SR": "Surinamas", "SJ": "Svalbardas ir Janas Majenas", "SZ": "Svazilandas", "KP": "\u0160iaur\u0117s Kor\u0117ja", "MK": "\u0160iaur\u0117s Makedonija", "LK": "\u0160ri Lanka", "SH": "\u0160v. Elenos Sala", "SE": "\u0160vedija", "CH": "\u0160veicarija", "VC": "\u0160ventasis Vincentas ir Grenadinai", "TJ": "Tad\u017eikija", "TH": "Tailandas", "TW": "Taivanas", "TZ": "Tanzanija", "TC": "Terkso ir Kaikoso Salos", "TG": "Togas", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidadas ir Tobagas", "TN": "Tunisas", "TR": "Turkija", "TM": "Turkm\u0117nistanas", "UG": "Uganda", "UA": "Ukraina", "UY": "Urugvajus", "UZ": "Uzbekistanas", "EH": "Vakar\u0173 Sachara", "VU": "Vanuatu", "VA": "Vatikano Miesto Valstyb\u0117", "VE": "Venesuela", "HU": "Vengrija", "VN": "Vietnamas", "DE": "Vokietija", "WF": "Volisas ir Fut\u016bna", "ZM": "Zambija", "ZW": "Zimbabv\u0117", "CV": "\u017daliasis Ky\u0161ulys"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/nb_NO.json000066400000000000000000000113621521174352300302570ustar00rootroot00000000000000{"AF": "Afghanistan", "AL": "Albania", "DZ": "Algerie", "AS": "Amerikansk Samoa", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarktis", "AG": "Antigua og Barbuda", "AR": "Argentina", "AM": "Armenia", "AW": "Aruba", "AZ": "Aserbajdsjan", "AU": "Australia", "BS": "Bahamas", "BH": "Bahrain", "BD": "Bangladesh", "BB": "Barbados", "BE": "Belgia", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhutan", "BO": "Bolivia", "BA": "Bosnia-Hercegovina", "BW": "Botswana", "BV": "Bouvet\u00f8ya", "BR": "Brasil", "BN": "Brunei", "BG": "Bulgaria", "BF": "Burkina Faso", "BI": "Burundi", "CA": "Canada", "KY": "Cayman\u00f8yene", "CL": "Chile", "CX": "Christmas\u00f8ya", "CO": "Colombia", "CK": "Cook\u00f8yene", "CR": "Costa Rica", "CU": "Cuba", "CW": "Cura\u00e7ao", "DK": "Danmark", "VI": "De amerikanske jomfru\u00f8yene", "VG": "De britiske jomfru\u00f8yene", "AE": "De forente arabiske emirater", "TF": "De franske s\u00f8rterritorier", "DO": "Den dominikanske republikk", "CF": "Den sentralafrikanske republikk", "IO": "Det britiske territoriet i Indiahavet", "DJ": "Djibouti", "DM": "Dominica", "EC": "Ecuador", "EG": "Egypt", "GQ": "Ekvatorial-Guinea", "SV": "El Salvador", "CI": "Elfenbenskysten", "ER": "Eritrea", "EE": "Estland", "SZ": "Eswatini", "ET": "Etiopia", "FK": "Falklands\u00f8yene", "FJ": "Fiji", "PH": "Filippinene", "FI": "Finland", "FR": "Frankrike", "GF": "Fransk Guyana", "PF": "Fransk Polynesia", "FO": "F\u00e6r\u00f8yene", "GA": "Gabon", "GM": "Gambia", "GE": "Georgia", "GH": "Ghana", "GI": "Gibraltar", "GD": "Grenada", "GL": "Gr\u00f8nland", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GW": "Guinea-Bissau", "GY": "Guyana", "HT": "Haiti", "HM": "Heard- og McDonald\u00f8yene", "GR": "Hellas", "HN": "Honduras", "HK": "Hongkong S.A.R. Kina", "BY": "Hviterussland", "IN": "India", "ID": "Indonesia", "IQ": "Irak", "IR": "Iran", "IE": "Irland", "IS": "Island", "IL": "Israel", "IT": "Italia", "JM": "Jamaica", "JP": "Japan", "YE": "Jemen", "JO": "Jordan", "KH": "Kambodsja", "CM": "Kamerun", "CV": "Kapp Verde", "BQ": "Karibisk Nederland", "KZ": "Kasakhstan", "KE": "Kenya", "CN": "Kina", "KG": "Kirgisistan", "KI": "Kiribati", "CC": "Kokos\u00f8yene", "KM": "Komorene", "CG": "Kongo-Brazzaville", "CD": "Kongo-Kinshasa", "HR": "Kroatia", "KW": "Kuwait", "CY": "Kypros", "LA": "Laos", "LV": "Latvia", "LS": "Lesotho", "LB": "Libanon", "LR": "Liberia", "LY": "Libya", "LI": "Liechtenstein", "LT": "Litauen", "LU": "Luxemburg", "MO": "Macao S.A.R. Kina", "MG": "Madagaskar", "MW": "Malawi", "MY": "Malaysia", "MV": "Maldivene", "ML": "Mali", "MT": "Malta", "IM": "Man", "MA": "Marokko", "MQ": "Martinique", "MR": "Mauritania", "MU": "Mauritius", "YT": "Mayotte", "MX": "Mexico", "MD": "Moldova", "MC": "Monaco", "MN": "Mongolia", "ME": "Montenegro", "MS": "Montserrat", "MZ": "Mosambik", "MM": "Myanmar (Burma)", "NA": "Namibia", "NR": "Nauru", "NL": "Nederland", "NP": "Nepal", "NZ": "New Zealand", "NI": "Nicaragua", "NE": "Niger", "NG": "Nigeria", "NU": "Niue", "KP": "Nord-Korea", "MK": "Nord-Makedonia", "NF": "Norfolk\u00f8ya", "NO": "Norge", "NC": "Ny-Caledonia", "OM": "Oman", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua Ny-Guinea", "PY": "Paraguay", "PE": "Peru", "PN": "Pitcairn\u00f8yene", "PL": "Polen", "PT": "Portugal", "PR": "Puerto Rico", "QA": "Qatar", "RE": "R\u00e9union", "RO": "Romania", "RU": "Russland", "RW": "Rwanda", "KN": "Saint Kitts og Nevis", "BL": "Saint-Barth\u00e9lemy", "MF": "Saint-Martin", "PM": "Saint-Pierre-et-Miquelon", "SB": "Salomon\u00f8yene", "WS": "Samoa", "SM": "San Marino", "ST": "S\u00e3o Tom\u00e9 og Pr\u00edncipe", "SA": "Saudi-Arabia", "SN": "Senegal", "RS": "Serbia", "SC": "Seychellene", "SL": "Sierra Leone", "SG": "Singapore", "SX": "Sint Maarten", "SK": "Slovakia", "SI": "Slovenia", "SO": "Somalia", "ES": "Spania", "LK": "Sri Lanka", "SH": "St. Helena", "LC": "St. Lucia", "VC": "St. Vincent og Grenadinene", "GB": "Storbritannia", "SD": "Sudan", "SR": "Surinam", "SJ": "Svalbard og Jan Mayen", "CH": "Sveits", "SE": "Sverige", "SY": "Syria", "ZA": "S\u00f8r-Afrika", "GS": "S\u00f8r-Georgia og S\u00f8r-Sandwich\u00f8yene", "KR": "S\u00f8r-Korea", "SS": "S\u00f8r-Sudan", "TJ": "Tadsjikistan", "TW": "Taiwan", "TZ": "Tanzania", "TH": "Thailand", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad og Tobago", "TD": "Tsjad", "CZ": "Tsjekkia", "TN": "Tunisia", "TM": "Turkmenistan", "TC": "Turks- og Caicos\u00f8yene", "TR": "Tyrkia", "DE": "Tyskland", "UG": "Uganda", "UA": "Ukraina", "HU": "Ungarn", "UY": "Uruguay", "US": "USA", "UZ": "Usbekistan", "VU": "Vanuatu", "VA": "Vatikanstaten", "VE": "Venezuela", "EH": "Vest-Sahara", "VN": "Vietnam", "WF": "Wallis og Futuna", "ZM": "Zambia", "ZW": "Zimbabwe", "TL": "\u00d8st-Timor", "AT": "\u00d8sterrike", "AX": "\u00c5land"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/pl.json000066400000000000000000000116721521174352300277030ustar00rootroot00000000000000{"AF": "Afganistan", "AL": "Albania", "DZ": "Algieria", "AD": "Andora", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarktyda", "AG": "Antigua i Barbuda", "SA": "Arabia Saudyjska", "AR": "Argentyna", "AM": "Armenia", "AW": "Aruba", "AU": "Australia", "AT": "Austria", "AZ": "Azerbejd\u017can", "BS": "Bahamy", "BH": "Bahrajn", "BD": "Bangladesz", "BB": "Barbados", "BE": "Belgia", "BZ": "Belize", "BJ": "Benin", "BM": "Bermudy", "BT": "Bhutan", "BY": "Bia\u0142oru\u015b", "BO": "Boliwia", "BA": "Bo\u015bnia i Hercegowina", "BW": "Botswana", "BR": "Brazylia", "BN": "Brunei", "IO": "Brytyjskie Terytorium Oceanu Indyjskiego", "VG": "Brytyjskie Wyspy Dziewicze", "BG": "Bu\u0142garia", "BF": "Burkina Faso", "BI": "Burundi", "CL": "Chile", "CN": "Chiny", "HR": "Chorwacja", "CI": "C\u00f4te d\u2019Ivoire", "CW": "Cura\u00e7ao", "CY": "Cypr", "TD": "Czad", "ME": "Czarnog\u00f3ra", "CZ": "Czechy", "DK": "Dania", "CD": "Demokratyczna Republika Konga", "DM": "Dominika", "DO": "Dominikana", "DJ": "D\u017cibuti", "EG": "Egipt", "EC": "Ekwador", "ER": "Erytrea", "EE": "Estonia", "SZ": "Eswatini", "ET": "Etiopia", "FK": "Falklandy", "FJ": "Fid\u017ci", "PH": "Filipiny", "FI": "Finlandia", "FR": "Francja", "TF": "Francuskie Terytoria Po\u0142udniowe i Antarktyczne", "GA": "Gabon", "GM": "Gambia", "GS": "Georgia Po\u0142udniowa i Sandwich Po\u0142udniowy", "GH": "Ghana", "GI": "Gibraltar", "GR": "Grecja", "GD": "Grenada", "GL": "Grenlandia", "GE": "Gruzja", "GU": "Guam", "GG": "Guernsey", "GY": "Gujana", "GF": "Gujana Francuska", "GP": "Gwadelupa", "GT": "Gwatemala", "GN": "Gwinea", "GW": "Gwinea Bissau", "GQ": "Gwinea R\u00f3wnikowa", "HT": "Haiti", "ES": "Hiszpania", "NL": "Holandia", "HN": "Honduras", "IN": "Indie", "ID": "Indonezja", "IQ": "Irak", "IR": "Iran", "IE": "Irlandia", "IS": "Islandia", "IL": "Izrael", "JM": "Jamajka", "JP": "Japonia", "YE": "Jemen", "JO": "Jordania", "KY": "Kajmany", "KH": "Kambod\u017ca", "CM": "Kamerun", "CA": "Kanada", "QA": "Katar", "KZ": "Kazachstan", "KE": "Kenia", "KG": "Kirgistan", "KI": "Kiribati", "CO": "Kolumbia", "KM": "Komory", "CG": "Kongo", "KR": "Korea Po\u0142udniowa", "KP": "Korea P\u00f3\u0142nocna", "CR": "Kostaryka", "CU": "Kuba", "KW": "Kuwejt", "LA": "Laos", "LS": "Lesotho", "LB": "Liban", "LR": "Liberia", "LY": "Libia", "LI": "Liechtenstein", "LT": "Litwa", "LU": "Luksemburg", "LV": "\u0141otwa", "MK": "Macedonia P\u00f3\u0142nocna", "MG": "Madagaskar", "YT": "Majotta", "MW": "Malawi", "MV": "Malediwy", "MY": "Malezja", "ML": "Mali", "MT": "Malta", "MA": "Maroko", "MQ": "Martynika", "MR": "Mauretania", "MU": "Mauritius", "MX": "Meksyk", "MM": "Mjanma (Birma)", "MD": "Mo\u0142dawia", "MC": "Monako", "MN": "Mongolia", "MS": "Montserrat", "MZ": "Mozambik", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "BQ": "Niderlandy Karaibskie", "DE": "Niemcy", "NE": "Niger", "NG": "Nigeria", "NI": "Nikaragua", "NU": "Niue", "NF": "Norfolk", "NO": "Norwegia", "NC": "Nowa Kaledonia", "NZ": "Nowa Zelandia", "OM": "Oman", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua-Nowa Gwinea", "PY": "Paragwaj", "PE": "Peru", "PN": "Pitcairn", "PF": "Polinezja Francuska", "PL": "Polska", "PR": "Portoryko", "PT": "Portugalia", "ZA": "Republika Po\u0142udniowej Afryki", "CF": "Republika \u015arodkowoafryka\u0144ska", "CV": "Republika Zielonego Przyl\u0105dka", "RE": "Reunion", "RU": "Rosja", "RO": "Rumunia", "RW": "Rwanda", "EH": "Sahara Zachodnia", "KN": "Saint Kitts i Nevis", "LC": "Saint Lucia", "VC": "Saint Vincent i Grenadyny", "BL": "Saint-Barth\u00e9lemy", "MF": "Saint-Martin", "PM": "Saint-Pierre i Miquelon", "SV": "Salwador", "WS": "Samoa", "AS": "Samoa Ameryka\u0144skie", "SM": "San Marino", "SN": "Senegal", "RS": "Serbia", "SC": "Seszele", "SL": "Sierra Leone", "SG": "Singapur", "SX": "Sint Maarten", "SK": "S\u0142owacja", "SI": "S\u0142owenia", "SO": "Somalia", "HK": "SRA Hongkong (Chiny)", "MO": "SRA Makau (Chiny)", "LK": "Sri Lanka", "US": "Stany Zjednoczone", "SD": "Sudan", "SS": "Sudan Po\u0142udniowy", "SR": "Surinam", "SJ": "Svalbard i Jan Mayen", "SY": "Syria", "CH": "Szwajcaria", "SE": "Szwecja", "TJ": "Tad\u017cykistan", "TH": "Tajlandia", "TW": "Tajwan", "TZ": "Tanzania", "TL": "Timor Wschodni", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trynidad i Tobago", "TN": "Tunezja", "TR": "Turcja", "TM": "Turkmenistan", "TC": "Turks i Caicos", "UG": "Uganda", "UA": "Ukraina", "UY": "Urugwaj", "UZ": "Uzbekistan", "VU": "Vanuatu", "WF": "Wallis i Futuna", "VA": "Watykan", "VE": "Wenezuela", "HU": "W\u0119gry", "GB": "Wielka Brytania", "VN": "Wietnam", "IT": "W\u0142ochy", "BV": "Wyspa Bouveta", "CX": "Wyspa Bo\u017cego Narodzenia", "IM": "Wyspa Man", "SH": "Wyspa \u015awi\u0119tej Heleny", "AX": "Wyspy Alandzkie", "CK": "Wyspy Cooka", "VI": "Wyspy Dziewicze Stan\u00f3w Zjednoczonych", "HM": "Wyspy Heard i McDonalda", "CC": "Wyspy Kokosowe", "FO": "Wyspy Owcze", "SB": "Wyspy Salomona", "ST": "Wyspy \u015awi\u0119tego Tomasza i Ksi\u0105\u017c\u0119ca", "ZM": "Zambia", "ZW": "Zimbabwe", "AE": "Zjednoczone Emiraty Arabskie"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/pt_BR.json000066400000000000000000000124251521174352300302730ustar00rootroot00000000000000{"AF": "Afeganist\u00e3o", "ZA": "\u00c1frica do Sul", "AL": "Alb\u00e2nia", "DE": "Alemanha", "AD": "Andorra", "AO": "Angola", "AI": "Anguila", "AQ": "Ant\u00e1rtida", "AG": "Ant\u00edgua e Barbuda", "SA": "Ar\u00e1bia Saudita", "DZ": "Arg\u00e9lia", "AR": "Argentina", "AM": "Arm\u00eania", "AW": "Aruba", "AU": "Austr\u00e1lia", "AT": "\u00c1ustria", "AZ": "Azerbaij\u00e3o", "BS": "Bahamas", "BH": "Bahrein", "BD": "Bangladesh", "BB": "Barbados", "BE": "B\u00e9lgica", "BZ": "Belize", "BJ": "Benin", "BM": "Bermudas", "BY": "Bielorr\u00fassia", "BO": "Bol\u00edvia", "BA": "B\u00f3snia e Herzegovina", "BW": "Botsuana", "BR": "Brasil", "BN": "Brunei", "BG": "Bulg\u00e1ria", "BF": "Burquina Faso", "BI": "Burundi", "BT": "But\u00e3o", "CV": "Cabo Verde", "CM": "Camar\u00f5es", "KH": "Camboja", "CA": "Canad\u00e1", "QA": "Catar", "KZ": "Cazaquist\u00e3o", "TD": "Chade", "CL": "Chile", "CN": "China", "CY": "Chipre", "VA": "Cidade do Vaticano", "CO": "Col\u00f4mbia", "KM": "Comores", "CD": "Congo - Kinshasa", "KP": "Coreia do Norte", "KR": "Coreia do Sul", "CI": "Costa do Marfim", "CR": "Costa Rica", "HR": "Cro\u00e1cia", "CU": "Cuba", "CW": "Cura\u00e7ao", "DK": "Dinamarca", "DJ": "Djibuti", "DM": "Dominica", "EG": "Egito", "SV": "El Salvador", "AE": "Emirados \u00c1rabes Unidos", "EC": "Equador", "ER": "Eritreia", "SK": "Eslov\u00e1quia", "SI": "Eslov\u00eania", "ES": "Espanha", "SZ": "Essuat\u00edni", "US": "Estados Unidos", "EE": "Est\u00f4nia", "ET": "Eti\u00f3pia", "FJ": "Fiji", "PH": "Filipinas", "FI": "Finl\u00e2ndia", "FR": "Fran\u00e7a", "GA": "Gab\u00e3o", "GM": "G\u00e2mbia", "GH": "Gana", "GE": "Ge\u00f3rgia", "GI": "Gibraltar", "GD": "Granada", "GR": "Gr\u00e9cia", "GL": "Groenl\u00e2ndia", "GP": "Guadalupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GY": "Guiana", "GF": "Guiana Francesa", "GN": "Guin\u00e9", "GQ": "Guin\u00e9 Equatorial", "GW": "Guin\u00e9-Bissau", "HT": "Haiti", "HN": "Honduras", "HK": "Hong Kong, RAE da China", "HU": "Hungria", "YE": "I\u00eamen", "BV": "Ilha Bouvet", "CX": "Ilha Christmas", "IM": "Ilha de Man", "NF": "Ilha Norfolk", "AX": "Ilhas Aland", "KY": "Ilhas Cayman", "CC": "Ilhas Cocos (Keeling)", "CK": "Ilhas Cook", "FO": "Ilhas Faroe", "GS": "Ilhas Ge\u00f3rgia do Sul e Sandwich do Sul", "HM": "Ilhas Heard e McDonald", "FK": "Ilhas Malvinas", "PN": "Ilhas Pitcairn", "SB": "Ilhas Salom\u00e3o", "TC": "Ilhas Turcas e Caicos", "VI": "Ilhas Virgens Americanas", "VG": "Ilhas Virgens Brit\u00e2nicas", "IN": "\u00cdndia", "ID": "Indon\u00e9sia", "IR": "Ir\u00e3", "IQ": "Iraque", "IE": "Irlanda", "IS": "Isl\u00e2ndia", "IL": "Israel", "IT": "It\u00e1lia", "JM": "Jamaica", "JP": "Jap\u00e3o", "JO": "Jord\u00e2nia", "KW": "Kuwait", "LA": "Laos", "LS": "Lesoto", "LV": "Let\u00f4nia", "LB": "L\u00edbano", "LR": "Lib\u00e9ria", "LY": "L\u00edbia", "LI": "Liechtenstein", "LT": "Litu\u00e2nia", "LU": "Luxemburgo", "MO": "Macau, RAE da China", "MK": "Maced\u00f4nia do Norte", "MG": "Madagascar", "MY": "Mal\u00e1sia", "MW": "Malaui", "MV": "Maldivas", "ML": "Mali", "MT": "Malta", "MA": "Marrocos", "MQ": "Martinica", "MU": "Maur\u00edcio", "MR": "Maurit\u00e2nia", "YT": "Mayotte", "MX": "M\u00e9xico", "MM": "Mianmar (Birm\u00e2nia)", "MZ": "Mo\u00e7ambique", "MD": "Moldova", "MC": "M\u00f4naco", "MN": "Mong\u00f3lia", "ME": "Montenegro", "MS": "Montserrat", "NA": "Nam\u00edbia", "NR": "Nauru", "NP": "Nepal", "NI": "Nicar\u00e1gua", "NE": "N\u00edger", "NG": "Nig\u00e9ria", "NU": "Niue", "NO": "Noruega", "NC": "Nova Caled\u00f4nia", "NZ": "Nova Zel\u00e2ndia", "OM": "Om\u00e3", "NL": "Pa\u00edses Baixos", "BQ": "Pa\u00edses Baixos Caribenhos", "PW": "Palau", "PA": "Panam\u00e1", "PG": "Papua-Nova Guin\u00e9", "PK": "Paquist\u00e3o", "PY": "Paraguai", "PE": "Peru", "PF": "Polin\u00e9sia Francesa", "PL": "Pol\u00f4nia", "PR": "Porto Rico", "PT": "Portugal", "KE": "Qu\u00eania", "KG": "Quirguist\u00e3o", "KI": "Quiribati", "GB": "Reino Unido", "CF": "Rep\u00fablica Centro-Africana", "CG": "Rep\u00fablica do Congo", "DO": "Rep\u00fablica Dominicana", "RE": "Reuni\u00e3o", "RO": "Rom\u00eania", "RW": "Ruanda", "RU": "R\u00fassia", "EH": "Saara Ocidental", "WS": "Samoa", "AS": "Samoa Americana", "SM": "San Marino", "SH": "Santa Helena", "LC": "Santa L\u00facia", "BL": "S\u00e3o Bartolomeu", "KN": "S\u00e3o Crist\u00f3v\u00e3o e N\u00e9vis", "MF": "S\u00e3o Martinho", "PM": "S\u00e3o Pedro e Miquel\u00e3o", "ST": "S\u00e3o Tom\u00e9 e Pr\u00edncipe", "VC": "S\u00e3o Vicente e Granadinas", "SC": "Seicheles", "SN": "Senegal", "SL": "Serra Leoa", "RS": "S\u00e9rvia", "SG": "Singapura", "SX": "Sint Maarten", "SY": "S\u00edria", "SO": "Som\u00e1lia", "LK": "Sri Lanka", "SD": "Sud\u00e3o", "SS": "Sud\u00e3o do Sul", "SE": "Su\u00e9cia", "CH": "Su\u00ed\u00e7a", "SR": "Suriname", "SJ": "Svalbard e Jan Mayen", "TJ": "Tadjiquist\u00e3o", "TH": "Tail\u00e2ndia", "TW": "Taiwan", "TZ": "Tanz\u00e2nia", "CZ": "Tch\u00e9quia", "IO": "Territ\u00f3rio Brit\u00e2nico do Oceano \u00cdndico", "TF": "Territ\u00f3rios Franceses do Sul", "TL": "Timor-Leste", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad e Tobago", "TN": "Tun\u00edsia", "TM": "Turcomenist\u00e3o", "TR": "Turquia", "UA": "Ucr\u00e2nia", "UG": "Uganda", "UY": "Uruguai", "UZ": "Uzbequist\u00e3o", "VU": "Vanuatu", "VE": "Venezuela", "VN": "Vietn\u00e3", "WF": "Wallis e Futuna", "ZM": "Z\u00e2mbia", "ZW": "Zimb\u00e1bue"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/pt_PT.json000066400000000000000000000125511521174352300303130ustar00rootroot00000000000000{"AF": "Afeganist\u00e3o", "ZA": "\u00c1frica do Sul", "AX": "Alanda", "AL": "Alb\u00e2nia", "DE": "Alemanha", "AD": "Andorra", "AO": "Angola", "AI": "Anguila", "AQ": "Ant\u00e1rtida", "AG": "Ant\u00edgua e Barbuda", "SA": "Ar\u00e1bia Saudita", "DZ": "Arg\u00e9lia", "AR": "Argentina", "AM": "Arm\u00e9nia", "AW": "Aruba", "AU": "Austr\u00e1lia", "AT": "\u00c1ustria", "AZ": "Azerbaij\u00e3o", "BS": "Baamas", "BD": "Bangladeche", "BB": "Barbados", "BH": "Bar\u00e9m", "BE": "B\u00e9lgica", "BZ": "Belize", "BJ": "Benim", "BM": "Bermudas", "BY": "Bielorr\u00fassia", "BO": "Bol\u00edvia", "BA": "B\u00f3snia e Herzegovina", "BW": "Botsuana", "BR": "Brasil", "BN": "Brunei", "BG": "Bulg\u00e1ria", "BF": "Burquina Faso", "BI": "Burundi", "BT": "But\u00e3o", "CV": "Cabo Verde", "CM": "Camar\u00f5es", "KH": "Camboja", "CA": "Canad\u00e1", "QA": "Catar", "KZ": "Cazaquist\u00e3o", "TD": "Chade", "CZ": "Ch\u00e9quia", "CL": "Chile", "CN": "China", "CY": "Chipre", "VA": "Cidade do Vaticano", "CO": "Col\u00f4mbia", "KM": "Comores", "CG": "Congo-Brazzaville", "CD": "Congo-Kinshasa", "KP": "Coreia do Norte", "KR": "Coreia do Sul", "CR": "Costa Rica", "CI": "C\u00f4te d\u2019Ivoire (Costa do Marfim)", "HR": "Cro\u00e1cia", "CU": "Cuba", "CW": "Cura\u00e7au", "DK": "Dinamarca", "DM": "Dom\u00ednica", "EG": "Egito", "AE": "Emirados \u00c1rabes Unidos", "EC": "Equador", "ER": "Eritreia", "SK": "Eslov\u00e1quia", "SI": "Eslov\u00e9nia", "ES": "Espanha", "SZ": "Essuat\u00edni", "US": "Estados Unidos", "EE": "Est\u00f3nia", "ET": "Eti\u00f3pia", "FJ": "Fiji", "PH": "Filipinas", "FI": "Finl\u00e2ndia", "FR": "Fran\u00e7a", "GA": "Gab\u00e3o", "GM": "G\u00e2mbia", "GH": "Gana", "GE": "Ge\u00f3rgia", "GI": "Gibraltar", "GD": "Granada", "GR": "Gr\u00e9cia", "GL": "Gronel\u00e2ndia", "GP": "Guadalupe", "GU": "Guame", "GT": "Guatemala", "GG": "Guernesey", "GY": "Guiana", "GF": "Guiana Francesa", "GN": "Guin\u00e9", "GQ": "Guin\u00e9 Equatorial", "GW": "Guin\u00e9-Bissau", "HT": "Haiti", "HN": "Honduras", "HK": "Hong Kong, RAE da China", "HU": "Hungria", "YE": "I\u00e9men", "BV": "Ilha Bouvet", "IM": "Ilha de Man", "CX": "Ilha do Natal", "NF": "Ilha Norfolk", "KY": "Ilhas Caim\u00e3o", "CK": "Ilhas Cook", "CC": "Ilhas dos Cocos (Keeling)", "FO": "Ilhas Faro\u00e9", "GS": "Ilhas Ge\u00f3rgia do Sul e Sandwich do Sul", "HM": "Ilhas Heard e McDonald", "FK": "Ilhas Malvinas (Falkland)", "PN": "Ilhas Pitcairn", "SB": "Ilhas Salom\u00e3o", "TC": "Ilhas Turcas e Caicos", "VG": "Ilhas Virgens Brit\u00e2nicas", "VI": "Ilhas Virgens dos EUA", "IN": "\u00cdndia", "ID": "Indon\u00e9sia", "IR": "Ir\u00e3o", "IQ": "Iraque", "IE": "Irlanda", "IS": "Isl\u00e2ndia", "IL": "Israel", "IT": "It\u00e1lia", "JM": "Jamaica", "JP": "Jap\u00e3o", "DJ": "Jibuti", "JO": "Jord\u00e2nia", "KW": "Koweit", "LA": "Laos", "LS": "Lesoto", "LV": "Let\u00f3nia", "LB": "L\u00edbano", "LR": "Lib\u00e9ria", "LY": "L\u00edbia", "LI": "Listenstaine", "LT": "Litu\u00e2nia", "LU": "Luxemburgo", "MO": "Macau, RAE da China", "MK": "Maced\u00f3nia do Norte", "MG": "Madag\u00e1scar", "YT": "Maiote", "MY": "Mal\u00e1sia", "MW": "Mal\u00e1ui", "MV": "Maldivas", "ML": "Mali", "MT": "Malta", "MA": "Marrocos", "MQ": "Martinica", "MU": "Maur\u00edcia", "MR": "Maurit\u00e2nia", "MX": "M\u00e9xico", "MM": "Mianmar (Birm\u00e2nia)", "MZ": "Mo\u00e7ambique", "MD": "Mold\u00e1via", "MC": "M\u00f3naco", "MN": "Mong\u00f3lia", "MS": "Monserrate", "ME": "Montenegro", "NA": "Nam\u00edbia", "NR": "Nauru", "NP": "Nepal", "NI": "Nicar\u00e1gua", "NE": "N\u00edger", "NG": "Nig\u00e9ria", "NU": "Niu\u00ea", "NO": "Noruega", "NC": "Nova Caled\u00f3nia", "NZ": "Nova Zel\u00e2ndia", "OM": "Om\u00e3", "NL": "Pa\u00edses Baixos", "BQ": "Pa\u00edses Baixos Caribenhos", "PW": "Palau", "PA": "Panam\u00e1", "PG": "Papua-Nova Guin\u00e9", "PK": "Paquist\u00e3o", "PY": "Paraguai", "PE": "Peru", "PF": "Polin\u00e9sia Francesa", "PL": "Pol\u00f3nia", "PR": "Porto Rico", "PT": "Portugal", "KE": "Qu\u00e9nia", "KG": "Quirguist\u00e3o", "KI": "Quirib\u00e1ti", "GB": "Reino Unido", "CF": "Rep\u00fablica Centro-Africana", "DO": "Rep\u00fablica Dominicana", "RE": "Reuni\u00e3o", "RO": "Rom\u00e9nia", "RW": "Ruanda", "RU": "R\u00fassia", "SV": "Salvador", "WS": "Samoa", "AS": "Samoa Americana", "SH": "Santa Helena", "LC": "Santa L\u00facia", "BL": "S\u00e3o Bartolomeu", "KN": "S\u00e3o Crist\u00f3v\u00e3o e Neves", "SM": "S\u00e3o Marinho", "MF": "S\u00e3o Martinho", "SX": "S\u00e3o Martinho (Sint Maarten)", "PM": "S\u00e3o Pedro e Miquel\u00e3o", "ST": "S\u00e3o Tom\u00e9 e Pr\u00edncipe", "VC": "S\u00e3o Vicente e Granadinas", "EH": "Sara Ocidental", "SC": "Seicheles", "SN": "Senegal", "SL": "Serra Leoa", "RS": "S\u00e9rvia", "SG": "Singapura", "SY": "S\u00edria", "SO": "Som\u00e1lia", "LK": "Sri Lanca", "SD": "Sud\u00e3o", "SS": "Sud\u00e3o do Sul", "SE": "Su\u00e9cia", "CH": "Su\u00ed\u00e7a", "SR": "Suriname", "SJ": "Svalbard e Jan Mayen", "TH": "Tail\u00e2ndia", "TW": "Taiwan", "TJ": "Tajiquist\u00e3o", "TZ": "Tanz\u00e2nia", "IO": "Territ\u00f3rio Brit\u00e2nico do Oceano \u00cdndico", "TF": "Territ\u00f3rios Austrais Franceses", "TL": "Timor-Leste", "TG": "Togo", "TO": "Tonga", "TK": "Toquelau", "TT": "Trindade e Tobago", "TN": "Tun\u00edsia", "TM": "Turquemenist\u00e3o", "TR": "Turquia", "UA": "Ucr\u00e2nia", "UG": "Uganda", "UY": "Uruguai", "UZ": "Usbequist\u00e3o", "VU": "Vanuatu", "VE": "Venezuela", "VN": "Vietname", "WF": "Wallis e Futuna", "ZM": "Z\u00e2mbia", "ZW": "Zimbabu\u00e9"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/ru.json000066400000000000000000000367101521174352300277160ustar00rootroot00000000000000{"AU": "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f", "AT": "\u0410\u0432\u0441\u0442\u0440\u0438\u044f", "AZ": "\u0410\u0437\u0435\u0440\u0431\u0430\u0439\u0434\u0436\u0430\u043d", "AX": "\u0410\u043b\u0430\u043d\u0434\u0441\u043a\u0438\u0435 \u043e-\u0432\u0430", "AL": "\u0410\u043b\u0431\u0430\u043d\u0438\u044f", "DZ": "\u0410\u043b\u0436\u0438\u0440", "AS": "\u0410\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u043e\u0435 \u0421\u0430\u043c\u043e\u0430", "AI": "\u0410\u043d\u0433\u0438\u043b\u044c\u044f", "AO": "\u0410\u043d\u0433\u043e\u043b\u0430", "AD": "\u0410\u043d\u0434\u043e\u0440\u0440\u0430", "AQ": "\u0410\u043d\u0442\u0430\u0440\u043a\u0442\u0438\u0434\u0430", "AG": "\u0410\u043d\u0442\u0438\u0433\u0443\u0430 \u0438 \u0411\u0430\u0440\u0431\u0443\u0434\u0430", "AR": "\u0410\u0440\u0433\u0435\u043d\u0442\u0438\u043d\u0430", "AM": "\u0410\u0440\u043c\u0435\u043d\u0438\u044f", "AW": "\u0410\u0440\u0443\u0431\u0430", "AF": "\u0410\u0444\u0433\u0430\u043d\u0438\u0441\u0442\u0430\u043d", "BS": "\u0411\u0430\u0433\u0430\u043c\u044b", "BD": "\u0411\u0430\u043d\u0433\u043b\u0430\u0434\u0435\u0448", "BB": "\u0411\u0430\u0440\u0431\u0430\u0434\u043e\u0441", "BH": "\u0411\u0430\u0445\u0440\u0435\u0439\u043d", "BY": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u044c", "BZ": "\u0411\u0435\u043b\u0438\u0437", "BE": "\u0411\u0435\u043b\u044c\u0433\u0438\u044f", "BJ": "\u0411\u0435\u043d\u0438\u043d", "BM": "\u0411\u0435\u0440\u043c\u0443\u0434\u0441\u043a\u0438\u0435 \u043e-\u0432\u0430", "BG": "\u0411\u043e\u043b\u0433\u0430\u0440\u0438\u044f", "BO": "\u0411\u043e\u043b\u0438\u0432\u0438\u044f", "BQ": "\u0411\u043e\u043d\u044d\u0439\u0440, \u0421\u0438\u043d\u0442-\u042d\u0441\u0442\u0430\u0442\u0438\u0443\u0441 \u0438 \u0421\u0430\u0431\u0430", "BA": "\u0411\u043e\u0441\u043d\u0438\u044f \u0438 \u0413\u0435\u0440\u0446\u0435\u0433\u043e\u0432\u0438\u043d\u0430", "BW": "\u0411\u043e\u0442\u0441\u0432\u0430\u043d\u0430", "BR": "\u0411\u0440\u0430\u0437\u0438\u043b\u0438\u044f", "IO": "\u0411\u0440\u0438\u0442\u0430\u043d\u0441\u043a\u0430\u044f \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u044f \u0432 \u0418\u043d\u0434\u0438\u0439\u0441\u043a\u043e\u043c \u043e\u043a\u0435\u0430\u043d\u0435", "BN": "\u0411\u0440\u0443\u043d\u0435\u0439-\u0414\u0430\u0440\u0443\u0441\u0441\u0430\u043b\u0430\u043c", "BF": "\u0411\u0443\u0440\u043a\u0438\u043d\u0430-\u0424\u0430\u0441\u043e", "BI": "\u0411\u0443\u0440\u0443\u043d\u0434\u0438", "BT": "\u0411\u0443\u0442\u0430\u043d", "VU": "\u0412\u0430\u043d\u0443\u0430\u0442\u0443", "VA": "\u0412\u0430\u0442\u0438\u043a\u0430\u043d", "GB": "\u0412\u0435\u043b\u0438\u043a\u043e\u0431\u0440\u0438\u0442\u0430\u043d\u0438\u044f", "HU": "\u0412\u0435\u043d\u0433\u0440\u0438\u044f", "VE": "\u0412\u0435\u043d\u0435\u0441\u0443\u044d\u043b\u0430", "VG": "\u0412\u0438\u0440\u0433\u0438\u043d\u0441\u043a\u0438\u0435 \u043e-\u0432\u0430 (\u0412\u0435\u043b\u0438\u043a\u043e\u0431\u0440\u0438\u0442\u0430\u043d\u0438\u044f)", "VI": "\u0412\u0438\u0440\u0433\u0438\u043d\u0441\u043a\u0438\u0435 \u043e-\u0432\u0430 (\u0421\u0428\u0410)", "TL": "\u0412\u043e\u0441\u0442\u043e\u0447\u043d\u044b\u0439 \u0422\u0438\u043c\u043e\u0440", "VN": "\u0412\u044c\u0435\u0442\u043d\u0430\u043c", "GA": "\u0413\u0430\u0431\u043e\u043d", "HT": "\u0413\u0430\u0438\u0442\u0438", "GY": "\u0413\u0430\u0439\u0430\u043d\u0430", "GM": "\u0413\u0430\u043c\u0431\u0438\u044f", "GH": "\u0413\u0430\u043d\u0430", "GP": "\u0413\u0432\u0430\u0434\u0435\u043b\u0443\u043f\u0430", "GT": "\u0413\u0432\u0430\u0442\u0435\u043c\u0430\u043b\u0430", "GN": "\u0413\u0432\u0438\u043d\u0435\u044f", "GW": "\u0413\u0432\u0438\u043d\u0435\u044f-\u0411\u0438\u0441\u0430\u0443", "DE": "\u0413\u0435\u0440\u043c\u0430\u043d\u0438\u044f", "GG": "\u0413\u0435\u0440\u043d\u0441\u0438", "GI": "\u0413\u0438\u0431\u0440\u0430\u043b\u0442\u0430\u0440", "HN": "\u0413\u043e\u043d\u0434\u0443\u0440\u0430\u0441", "HK": "\u0413\u043e\u043d\u043a\u043e\u043d\u0433 (\u0421\u0410\u0420)", "GD": "\u0413\u0440\u0435\u043d\u0430\u0434\u0430", "GL": "\u0413\u0440\u0435\u043d\u043b\u0430\u043d\u0434\u0438\u044f", "GR": "\u0413\u0440\u0435\u0446\u0438\u044f", "GE": "\u0413\u0440\u0443\u0437\u0438\u044f", "GU": "\u0413\u0443\u0430\u043c", "DK": "\u0414\u0430\u043d\u0438\u044f", "DJ": "\u0414\u0436\u0438\u0431\u0443\u0442\u0438", "DM": "\u0414\u043e\u043c\u0438\u043d\u0438\u043a\u0430", "DO": "\u0414\u043e\u043c\u0438\u043d\u0438\u043a\u0430\u043d\u0441\u043a\u0430\u044f \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430", "EG": "\u0415\u0433\u0438\u043f\u0435\u0442", "ZM": "\u0417\u0430\u043c\u0431\u0438\u044f", "EH": "\u0417\u0430\u043f\u0430\u0434\u043d\u0430\u044f \u0421\u0430\u0445\u0430\u0440\u0430", "ZW": "\u0417\u0438\u043c\u0431\u0430\u0431\u0432\u0435", "IL": "\u0418\u0437\u0440\u0430\u0438\u043b\u044c", "IN": "\u0418\u043d\u0434\u0438\u044f", "ID": "\u0418\u043d\u0434\u043e\u043d\u0435\u0437\u0438\u044f", "JO": "\u0418\u043e\u0440\u0434\u0430\u043d\u0438\u044f", "IQ": "\u0418\u0440\u0430\u043a", "IR": "\u0418\u0440\u0430\u043d", "IE": "\u0418\u0440\u043b\u0430\u043d\u0434\u0438\u044f", "IS": "\u0418\u0441\u043b\u0430\u043d\u0434\u0438\u044f", "ES": "\u0418\u0441\u043f\u0430\u043d\u0438\u044f", "IT": "\u0418\u0442\u0430\u043b\u0438\u044f", "YE": "\u0419\u0435\u043c\u0435\u043d", "CV": "\u041a\u0430\u0431\u043e-\u0412\u0435\u0440\u0434\u0435", "KZ": "\u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d", "KH": "\u041a\u0430\u043c\u0431\u043e\u0434\u0436\u0430", "CM": "\u041a\u0430\u043c\u0435\u0440\u0443\u043d", "CA": "\u041a\u0430\u043d\u0430\u0434\u0430", "QA": "\u041a\u0430\u0442\u0430\u0440", "KE": "\u041a\u0435\u043d\u0438\u044f", "CY": "\u041a\u0438\u043f\u0440", "KG": "\u041a\u0438\u0440\u0433\u0438\u0437\u0438\u044f", "KI": "\u041a\u0438\u0440\u0438\u0431\u0430\u0442\u0438", "CN": "\u041a\u0438\u0442\u0430\u0439", "KP": "\u041a\u041d\u0414\u0420", "CC": "\u041a\u043e\u043a\u043e\u0441\u043e\u0432\u044b\u0435 \u043e-\u0432\u0430", "CO": "\u041a\u043e\u043b\u0443\u043c\u0431\u0438\u044f", "KM": "\u041a\u043e\u043c\u043e\u0440\u044b", "CG": "\u041a\u043e\u043d\u0433\u043e - \u0411\u0440\u0430\u0437\u0437\u0430\u0432\u0438\u043b\u044c", "CD": "\u041a\u043e\u043d\u0433\u043e - \u041a\u0438\u043d\u0448\u0430\u0441\u0430", "CR": "\u041a\u043e\u0441\u0442\u0430-\u0420\u0438\u043a\u0430", "CI": "\u041a\u043e\u0442-\u0434\u2019\u0418\u0432\u0443\u0430\u0440", "CU": "\u041a\u0443\u0431\u0430", "KW": "\u041a\u0443\u0432\u0435\u0439\u0442", "CW": "\u041a\u044e\u0440\u0430\u0441\u0430\u043e", "LA": "\u041b\u0430\u043e\u0441", "LV": "\u041b\u0430\u0442\u0432\u0438\u044f", "LS": "\u041b\u0435\u0441\u043e\u0442\u043e", "LR": "\u041b\u0438\u0431\u0435\u0440\u0438\u044f", "LB": "\u041b\u0438\u0432\u0430\u043d", "LY": "\u041b\u0438\u0432\u0438\u044f", "LT": "\u041b\u0438\u0442\u0432\u0430", "LI": "\u041b\u0438\u0445\u0442\u0435\u043d\u0448\u0442\u0435\u0439\u043d", "LU": "\u041b\u044e\u043a\u0441\u0435\u043c\u0431\u0443\u0440\u0433", "MU": "\u041c\u0430\u0432\u0440\u0438\u043a\u0438\u0439", "MR": "\u041c\u0430\u0432\u0440\u0438\u0442\u0430\u043d\u0438\u044f", "MG": "\u041c\u0430\u0434\u0430\u0433\u0430\u0441\u043a\u0430\u0440", "YT": "\u041c\u0430\u0439\u043e\u0442\u0442\u0430", "MO": "\u041c\u0430\u043a\u0430\u043e (\u0421\u0410\u0420)", "MW": "\u041c\u0430\u043b\u0430\u0432\u0438", "MY": "\u041c\u0430\u043b\u0430\u0439\u0437\u0438\u044f", "ML": "\u041c\u0430\u043b\u0438", "MV": "\u041c\u0430\u043b\u044c\u0434\u0438\u0432\u044b", "MT": "\u041c\u0430\u043b\u044c\u0442\u0430", "MA": "\u041c\u0430\u0440\u043e\u043a\u043a\u043e", "MQ": "\u041c\u0430\u0440\u0442\u0438\u043d\u0438\u043a\u0430", "MX": "\u041c\u0435\u043a\u0441\u0438\u043a\u0430", "MZ": "\u041c\u043e\u0437\u0430\u043c\u0431\u0438\u043a", "MD": "\u041c\u043e\u043b\u0434\u043e\u0432\u0430", "MC": "\u041c\u043e\u043d\u0430\u043a\u043e", "MN": "\u041c\u043e\u043d\u0433\u043e\u043b\u0438\u044f", "MS": "\u041c\u043e\u043d\u0442\u0441\u0435\u0440\u0440\u0430\u0442", "MM": "\u041c\u044c\u044f\u043d\u043c\u0430 (\u0411\u0438\u0440\u043c\u0430)", "NA": "\u041d\u0430\u043c\u0438\u0431\u0438\u044f", "NR": "\u041d\u0430\u0443\u0440\u0443", "NP": "\u041d\u0435\u043f\u0430\u043b", "NE": "\u041d\u0438\u0433\u0435\u0440", "NG": "\u041d\u0438\u0433\u0435\u0440\u0438\u044f", "NL": "\u041d\u0438\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u044b", "NI": "\u041d\u0438\u043a\u0430\u0440\u0430\u0433\u0443\u0430", "NU": "\u041d\u0438\u0443\u044d", "NZ": "\u041d\u043e\u0432\u0430\u044f \u0417\u0435\u043b\u0430\u043d\u0434\u0438\u044f", "NC": "\u041d\u043e\u0432\u0430\u044f \u041a\u0430\u043b\u0435\u0434\u043e\u043d\u0438\u044f", "NO": "\u041d\u043e\u0440\u0432\u0435\u0433\u0438\u044f", "BV": "\u043e-\u0432 \u0411\u0443\u0432\u0435", "IM": "\u043e-\u0432 \u041c\u044d\u043d", "NF": "\u043e-\u0432 \u041d\u043e\u0440\u0444\u043e\u043b\u043a", "CX": "\u043e-\u0432 \u0420\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u0430", "SH": "\u043e-\u0432 \u0421\u0432. \u0415\u043b\u0435\u043d\u044b", "PN": "\u043e-\u0432\u0430 \u041f\u0438\u0442\u043a\u044d\u0440\u043d", "TC": "\u043e-\u0432\u0430 \u0422\u0451\u0440\u043a\u0441 \u0438 \u041a\u0430\u0439\u043a\u043e\u0441", "HM": "\u043e-\u0432\u0430 \u0425\u0435\u0440\u0434 \u0438 \u041c\u0430\u043a\u0434\u043e\u043d\u0430\u043b\u044c\u0434", "AE": "\u041e\u0410\u042d", "OM": "\u041e\u043c\u0430\u043d", "KY": "\u041e\u0441\u0442\u0440\u043e\u0432\u0430 \u041a\u0430\u0439\u043c\u0430\u043d", "CK": "\u041e\u0441\u0442\u0440\u043e\u0432\u0430 \u041a\u0443\u043a\u0430", "PK": "\u041f\u0430\u043a\u0438\u0441\u0442\u0430\u043d", "PW": "\u041f\u0430\u043b\u0430\u0443", "PA": "\u041f\u0430\u043d\u0430\u043c\u0430", "PG": "\u041f\u0430\u043f\u0443\u0430 \u2014 \u041d\u043e\u0432\u0430\u044f \u0413\u0432\u0438\u043d\u0435\u044f", "PY": "\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439", "PE": "\u041f\u0435\u0440\u0443", "PL": "\u041f\u043e\u043b\u044c\u0448\u0430", "PT": "\u041f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u0438\u044f", "PR": "\u041f\u0443\u044d\u0440\u0442\u043e-\u0420\u0438\u043a\u043e", "KR": "\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u041a\u043e\u0440\u0435\u044f", "RE": "\u0420\u0435\u044e\u043d\u044c\u043e\u043d", "RU": "\u0420\u043e\u0441\u0441\u0438\u044f", "RW": "\u0420\u0443\u0430\u043d\u0434\u0430", "RO": "\u0420\u0443\u043c\u044b\u043d\u0438\u044f", "SV": "\u0421\u0430\u043b\u044c\u0432\u0430\u0434\u043e\u0440", "WS": "\u0421\u0430\u043c\u043e\u0430", "SM": "\u0421\u0430\u043d-\u041c\u0430\u0440\u0438\u043d\u043e", "ST": "\u0421\u0430\u043d-\u0422\u043e\u043c\u0435 \u0438 \u041f\u0440\u0438\u043d\u0441\u0438\u043f\u0438", "SA": "\u0421\u0430\u0443\u0434\u043e\u0432\u0441\u043a\u0430\u044f \u0410\u0440\u0430\u0432\u0438\u044f", "MK": "\u0421\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0438\u044f", "SC": "\u0421\u0435\u0439\u0448\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u041e\u0441\u0442\u0440\u043e\u0432\u0430", "BL": "\u0421\u0435\u043d-\u0411\u0430\u0440\u0442\u0435\u043b\u0435\u043c\u0438", "MF": "\u0421\u0435\u043d-\u041c\u0430\u0440\u0442\u0435\u043d", "PM": "\u0421\u0435\u043d-\u041f\u044c\u0435\u0440 \u0438 \u041c\u0438\u043a\u0435\u043b\u043e\u043d", "SN": "\u0421\u0435\u043d\u0435\u0433\u0430\u043b", "VC": "\u0421\u0435\u043d\u0442-\u0412\u0438\u043d\u0441\u0435\u043d\u0442 \u0438 \u0413\u0440\u0435\u043d\u0430\u0434\u0438\u043d\u044b", "KN": "\u0421\u0435\u043d\u0442-\u041a\u0438\u0442\u0441 \u0438 \u041d\u0435\u0432\u0438\u0441", "LC": "\u0421\u0435\u043d\u0442-\u041b\u044e\u0441\u0438\u044f", "RS": "\u0421\u0435\u0440\u0431\u0438\u044f", "SG": "\u0421\u0438\u043d\u0433\u0430\u043f\u0443\u0440", "SX": "\u0421\u0438\u043d\u0442-\u041c\u0430\u0440\u0442\u0435\u043d", "SY": "\u0421\u0438\u0440\u0438\u044f", "SK": "\u0421\u043b\u043e\u0432\u0430\u043a\u0438\u044f", "SI": "\u0421\u043b\u043e\u0432\u0435\u043d\u0438\u044f", "US": "\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0435 \u0428\u0442\u0430\u0442\u044b", "SB": "\u0421\u043e\u043b\u043e\u043c\u043e\u043d\u043e\u0432\u044b \u041e\u0441\u0442\u0440\u043e\u0432\u0430", "SO": "\u0421\u043e\u043c\u0430\u043b\u0438", "SD": "\u0421\u0443\u0434\u0430\u043d", "SR": "\u0421\u0443\u0440\u0438\u043d\u0430\u043c", "SL": "\u0421\u044c\u0435\u0440\u0440\u0430-\u041b\u0435\u043e\u043d\u0435", "TJ": "\u0422\u0430\u0434\u0436\u0438\u043a\u0438\u0441\u0442\u0430\u043d", "TH": "\u0422\u0430\u0438\u043b\u0430\u043d\u0434", "TW": "\u0422\u0430\u0439\u0432\u0430\u043d\u044c", "TZ": "\u0422\u0430\u043d\u0437\u0430\u043d\u0438\u044f", "TG": "\u0422\u043e\u0433\u043e", "TK": "\u0422\u043e\u043a\u0435\u043b\u0430\u0443", "TO": "\u0422\u043e\u043d\u0433\u0430", "TT": "\u0422\u0440\u0438\u043d\u0438\u0434\u0430\u0434 \u0438 \u0422\u043e\u0431\u0430\u0433\u043e", "TN": "\u0422\u0443\u043d\u0438\u0441", "TM": "\u0422\u0443\u0440\u043a\u043c\u0435\u043d\u0438\u0441\u0442\u0430\u043d", "TR": "\u0422\u0443\u0440\u0446\u0438\u044f", "UG": "\u0423\u0433\u0430\u043d\u0434\u0430", "UZ": "\u0423\u0437\u0431\u0435\u043a\u0438\u0441\u0442\u0430\u043d", "UA": "\u0423\u043a\u0440\u0430\u0438\u043d\u0430", "WF": "\u0423\u043e\u043b\u043b\u0438\u0441 \u0438 \u0424\u0443\u0442\u0443\u043d\u0430", "UY": "\u0423\u0440\u0443\u0433\u0432\u0430\u0439", "FO": "\u0424\u0430\u0440\u0435\u0440\u0441\u043a\u0438\u0435 \u043e-\u0432\u0430", "FJ": "\u0424\u0438\u0434\u0436\u0438", "PH": "\u0424\u0438\u043b\u0438\u043f\u043f\u0438\u043d\u044b", "FI": "\u0424\u0438\u043d\u043b\u044f\u043d\u0434\u0438\u044f", "FK": "\u0424\u043e\u043b\u043a\u043b\u0435\u043d\u0434\u0441\u043a\u0438\u0435 \u043e-\u0432\u0430", "FR": "\u0424\u0440\u0430\u043d\u0446\u0438\u044f", "GF": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0430\u044f \u0413\u0432\u0438\u0430\u043d\u0430", "PF": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0430\u044f \u041f\u043e\u043b\u0438\u043d\u0435\u0437\u0438\u044f", "TF": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0435 \u042e\u0436\u043d\u044b\u0435 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438", "HR": "\u0425\u043e\u0440\u0432\u0430\u0442\u0438\u044f", "CF": "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e-\u0410\u0444\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0430\u044f \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430", "TD": "\u0427\u0430\u0434", "ME": "\u0427\u0435\u0440\u043d\u043e\u0433\u043e\u0440\u0438\u044f", "CZ": "\u0427\u0435\u0445\u0438\u044f", "CL": "\u0427\u0438\u043b\u0438", "CH": "\u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0438\u044f", "SE": "\u0428\u0432\u0435\u0446\u0438\u044f", "SJ": "\u0428\u043f\u0438\u0446\u0431\u0435\u0440\u0433\u0435\u043d \u0438 \u042f\u043d-\u041c\u0430\u0439\u0435\u043d", "LK": "\u0428\u0440\u0438-\u041b\u0430\u043d\u043a\u0430", "EC": "\u042d\u043a\u0432\u0430\u0434\u043e\u0440", "GQ": "\u042d\u043a\u0432\u0430\u0442\u043e\u0440\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0413\u0432\u0438\u043d\u0435\u044f", "ER": "\u042d\u0440\u0438\u0442\u0440\u0435\u044f", "SZ": "\u042d\u0441\u0432\u0430\u0442\u0438\u043d\u0438", "EE": "\u042d\u0441\u0442\u043e\u043d\u0438\u044f", "ET": "\u042d\u0444\u0438\u043e\u043f\u0438\u044f", "GS": "\u042e\u0436\u043d\u0430\u044f \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0438 \u042e\u0436\u043d\u044b\u0435 \u0421\u0430\u043d\u0434\u0432\u0438\u0447\u0435\u0432\u044b \u043e-\u0432\u0430", "ZA": "\u042e\u0436\u043d\u043e-\u0410\u0444\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0430\u044f \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430", "SS": "\u042e\u0436\u043d\u044b\u0439 \u0421\u0443\u0434\u0430\u043d", "JM": "\u042f\u043c\u0430\u0439\u043a\u0430", "JP": "\u042f\u043f\u043e\u043d\u0438\u044f"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/sk.json000066400000000000000000000130121521174352300276730ustar00rootroot00000000000000{"AF": "Afganistan", "AX": "Alandy", "AL": "Alb\u00e1nsko", "DZ": "Al\u017e\u00edrsko", "AS": "Americk\u00e1 Samoa", "VI": "Americk\u00e9 Panensk\u00e9 ostrovy", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarkt\u00edda", "AG": "Antigua a Barbuda", "AR": "Argent\u00edna", "AM": "Arm\u00e9nsko", "AW": "Aruba", "AU": "Austr\u00e1lia", "AZ": "Azerbajd\u017ean", "BS": "Bahamy", "BH": "Bahrajn", "BD": "Banglad\u00e9\u0161", "BB": "Barbados", "BE": "Belgicko", "BZ": "Belize", "BJ": "Benin", "BM": "Bermudy", "BT": "Bhut\u00e1n", "BY": "Bielorusko", "BO": "Bol\u00edvia", "BA": "Bosna a Hercegovina", "BW": "Botswana", "BV": "Bouvetov ostrov", "BR": "Braz\u00edlia", "IO": "Britsk\u00e9 indickooce\u00e1nske \u00fazemie", "VG": "Britsk\u00e9 Panensk\u00e9 ostrovy", "BN": "Brunej", "BG": "Bulharsko", "BF": "Burkina Faso", "BI": "Burundi", "CK": "Cookove ostrovy", "CW": "Cura\u00e7ao", "CY": "Cyprus", "TD": "\u010cad", "CZ": "\u010cesko", "ME": "\u010cierna Hora", "CL": "\u010cile", "CN": "\u010c\u00edna", "DK": "D\u00e1nsko", "DM": "Dominika", "DO": "Dominik\u00e1nska republika", "DJ": "D\u017eibutsko", "EG": "Egypt", "EC": "Ekv\u00e1dor", "ER": "Eritrea", "EE": "Est\u00f3nsko", "SZ": "Eswatini", "ET": "Eti\u00f3pia", "FO": "Faersk\u00e9 ostrovy", "FK": "Falklandy", "FJ": "Fid\u017ei", "PH": "Filip\u00edny", "FI": "F\u00ednsko", "GF": "Franc\u00fazska Guyana", "PF": "Franc\u00fazska Polyn\u00e9zia", "TF": "Franc\u00fazske ju\u017en\u00e9 a antarktick\u00e9 \u00fazemia", "FR": "Franc\u00fazsko", "GA": "Gabon", "GM": "Gambia", "GH": "Ghana", "GI": "Gibralt\u00e1r", "GR": "Gr\u00e9cko", "GD": "Grenada", "GL": "Gr\u00f3nsko", "GE": "Gruz\u00ednsko", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GW": "Guinea-Bissau", "GY": "Guyana", "HT": "Haiti", "HM": "Heardov ostrov a Macdonaldove ostrovy", "NL": "Holandsko", "HN": "Honduras", "HK": "Hongkong \u2013 OAO \u010c\u00edny", "HR": "Chorv\u00e1tsko", "IN": "India", "ID": "Indon\u00e9zia", "IQ": "Irak", "IR": "Ir\u00e1n", "IE": "\u00cdrsko", "IS": "Island", "IL": "Izrael", "JM": "Jamajka", "JP": "Japonsko", "YE": "Jemen", "JO": "Jord\u00e1nsko", "ZA": "Ju\u017en\u00e1 Afrika", "GS": "Ju\u017en\u00e1 Georgia a Ju\u017en\u00e9 Sandwichove ostrovy", "KR": "Ju\u017en\u00e1 K\u00f3rea", "SS": "Ju\u017en\u00fd Sud\u00e1n", "KY": "Kajmanie ostrovy", "KH": "Kambod\u017ea", "CM": "Kamerun", "CA": "Kanada", "CV": "Kapverdy", "BQ": "Karibsk\u00e9 Holandsko", "QA": "Katar", "KZ": "Kazachstan", "KE": "Ke\u0148a", "KG": "Kirgizsko", "KI": "Kiribati", "CC": "Kokosov\u00e9 ostrovy", "CO": "Kolumbia", "KM": "Komory", "CD": "Kon\u017esk\u00e1 demokratick\u00e1 republika", "CG": "Kon\u017esk\u00e1 republika", "CR": "Kostarika", "CU": "Kuba", "KW": "Kuvajt", "LA": "Laos", "LS": "Lesotho", "LB": "Libanon", "LR": "Lib\u00e9ria", "LY": "L\u00edbya", "LI": "Lichten\u0161tajnsko", "LT": "Litva", "LV": "Loty\u0161sko", "LU": "Luxembursko", "MO": "Macao \u2013 OAO \u010c\u00edny", "MG": "Madagaskar", "HU": "Ma\u010farsko", "MY": "Malajzia", "MW": "Malawi", "MV": "Maldivy", "ML": "Mali", "MT": "Malta", "MA": "Maroko", "MQ": "Martinik", "MU": "Maur\u00edcius", "MR": "Maurit\u00e1nia", "YT": "Mayotte", "MX": "Mexiko", "MM": "Mjanmarsko", "MD": "Moldavsko", "MC": "Monako", "MN": "Mongolsko", "MS": "Montserrat", "MZ": "Mozambik", "NA": "Nam\u00edbia", "NR": "Nauru", "DE": "Nemecko", "NP": "Nep\u00e1l", "NE": "Niger", "NG": "Nig\u00e9ria", "NI": "Nikaragua", "NU": "Niue", "NF": "Norfolk", "NO": "N\u00f3rsko", "NC": "Nov\u00e1 Kaled\u00f3nia", "NZ": "Nov\u00fd Z\u00e9land", "OM": "Om\u00e1n", "IM": "Ostrov Man", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua-Nov\u00e1 Guinea", "PY": "Paraguaj", "PE": "Peru", "PN": "Pitcairnove ostrovy", "CI": "Pobre\u017eie Slonoviny", "PL": "Po\u013esko", "PR": "Portoriko", "PT": "Portugalsko", "AT": "Rak\u00fasko", "RE": "R\u00e9union", "GQ": "Rovn\u00edkov\u00e1 Guinea", "RO": "Rumunsko", "RU": "Rusko", "RW": "Rwanda", "PM": "Saint Pierre a Miquelon", "SV": "Salv\u00e1dor", "WS": "Samoa", "SM": "San Mar\u00edno", "SA": "Saudsk\u00e1 Ar\u00e1bia", "SN": "Senegal", "KP": "Severn\u00e1 K\u00f3rea", "MK": "Severn\u00e9 Maced\u00f3nsko", "SC": "Seychely", "SL": "Sierra Leone", "SG": "Singapur", "SK": "Slovensko", "SI": "Slovinsko", "SO": "Som\u00e1lsko", "AE": "Spojen\u00e9 arabsk\u00e9 emir\u00e1ty", "GB": "Spojen\u00e9 kr\u00e1\u013eovstvo", "US": "Spojen\u00e9 \u0161t\u00e1ty", "RS": "Srbsko", "LK": "Sr\u00ed Lanka", "CF": "Stredoafrick\u00e1 republika", "SD": "Sud\u00e1n", "SR": "Surinam", "SJ": "Svalbard a Jan Mayen", "SH": "Sv\u00e4t\u00e1 Helena", "LC": "Sv\u00e4t\u00e1 Lucia", "BL": "Sv\u00e4t\u00fd Bartolomej", "KN": "Sv\u00e4t\u00fd Kri\u0161tof a Nevis", "MF": "Sv\u00e4t\u00fd Martin (fr.)", "SX": "Sv\u00e4t\u00fd Martin (hol.)", "ST": "Sv\u00e4t\u00fd Tom\u00e1\u0161 a Princov ostrov", "VC": "Sv\u00e4t\u00fd Vincent a Grenad\u00edny", "SY": "S\u00fdria", "SB": "\u0160alam\u00fanove ostrovy", "ES": "\u0160panielsko", "CH": "\u0160vaj\u010diarsko", "SE": "\u0160v\u00e9dsko", "TJ": "Tad\u017eikistan", "TW": "Taiwan", "IT": "Taliansko", "TZ": "Tanz\u00e1nia", "TH": "Thajsko", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad a Tobago", "TN": "Tunisko", "TR": "Turecko", "TM": "Turkm\u00e9nsko", "TC": "Turks a Caicos", "UG": "Uganda", "UA": "Ukrajina", "UY": "Uruguaj", "UZ": "Uzbekistan", "VU": "Vanuatu", "VA": "Vatik\u00e1n", "VE": "Venezuela", "CX": "Viano\u010dn\u00fd ostrov", "VN": "Vietnam", "TL": "V\u00fdchodn\u00fd Timor", "WF": "Wallis a Futuna", "ZM": "Zambia", "EH": "Z\u00e1padn\u00e1 Sahara", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/sn.json000066400000000000000000000113221521174352300277000ustar00rootroot00000000000000{"AF": "Afuganistani", "AR": "Ajentina", "AX": "\u00c5land Islands", "AL": "Albania", "DZ": "Aljeria", "US": "Amerika", "AD": "Andora", "AO": "Angola", "AI": "Anguila", "AQ": "Antarctica", "AG": "Antigua ne Barbuda", "AM": "Armenia", "AW": "Arubha", "AU": "Australia", "AT": "Austria", "AZ": "Azabajani", "BS": "Bahama", "BH": "Bahareni", "BD": "Bangladeshi", "BB": "Barbados", "BY": "Belarusi", "BZ": "Belize", "BE": "Beljium", "BJ": "Benini", "BM": "Bermuda", "BT": "Bhutani", "BO": "Bolivia", "BW": "Botswana", "BV": "Bouvet Island", "BA": "Boznia ne Herzegovina", "BR": "Brazil", "IO": "British Indian Ocean Territory", "BF": "Bukinafaso", "BG": "Bulgaria", "BI": "Burundi", "BN": "Burunei", "BQ": "Caribbean Netherlands", "CF": "Central African Republic", "TD": "Chadi", "CL": "Chile", "CN": "China", "NF": "Chitsuwa cheNorfolk", "CX": "Christmas Island", "CC": "Cocos (Keeling) Islands", "CU": "Cuba", "CW": "Cura\u00e7ao", "CY": "Cyprus", "CZ": "Czech Republic", "CD": "Democratic Republic of the Congo", "DK": "Denmark", "DJ": "Djibouti", "DM": "Dominica", "DO": "Dominican Republic", "TL": "East Timor", "EC": "Ecuador", "EG": "Egypt", "SV": "El Salvador", "GQ": "Equatorial Guinea", "ER": "Eritrea", "EE": "Estonia", "ET": "Etiopia", "FO": "Faroe Islands", "FJ": "Fiji", "FI": "Finland", "FR": "France", "GF": "French Guiana", "PF": "French Polynesia", "TF": "French Southern Territories", "GA": "Gabon", "GM": "Gambia", "GE": "Georgia", "DE": "Germany", "GH": "Ghana", "GI": "Gibraltar", "GR": "Greece", "GL": "Greenland", "GD": "Grenada", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GW": "Guinea-Bissau", "GY": "Guyana", "HT": "Haiti", "HM": "Heard & McDonald Islands", "HN": "Honduras", "HK": "Hong Kong SAR China", "HU": "Hungary", "IS": "Iceland", "IN": "India", "ID": "Indonesia", "IR": "Iran", "IQ": "Iraq", "IE": "Ireland", "IM": "Isle of Man", "IT": "Italy", "CI": "Ivory Coast", "IL": "Izuraeri", "JM": "Jamaica", "JP": "Japan", "JO": "Jordan", "KH": "Kambodia", "CM": "Kameruni", "CA": "Kanada", "KZ": "Kazakhstan", "KE": "Kenya", "KI": "Kiribati", "CO": "Kolombia", "KM": "Komoro", "CG": "Kongo", "HR": "Korasia", "KP": "Korea, North", "KR": "Korea, South", "CR": "Kostarika", "KW": "Kuwait", "KG": "Kyrgyzstan", "LA": "Laos", "LV": "Latvia", "LB": "Lebanon", "LS": "Lesotho", "LR": "Liberia", "LY": "Libya", "LI": "Liechtenstein", "LT": "Lithuania", "LU": "Luxembourg", "MO": "Macao SAR China", "MG": "Madagascar", "MW": "Malawi", "MY": "Malaysia", "MV": "Maldives", "ML": "Mali", "MT": "Malta", "MQ": "Martinique", "MR": "Mauritania", "MU": "Mauritius", "YT": "Mayotte", "MX": "Mexico", "MD": "Moldova", "MC": "Monaco", "MN": "Mongolia", "ME": "Montenegro", "MS": "Montserrat", "MA": "Morocco", "MZ": "Mozambique", "MM": "Myanmar", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NL": "Netherlands", "NC": "New Caledonia", "NZ": "New Zealand", "NI": "Nicaragua", "NE": "Niger", "NG": "Nigeria", "NU": "Niue", "MK": "North Macedonia", "NO": "Norway", "OM": "Oman", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua New Guinea", "PY": "Paraguay", "PE": "Peru", "PH": "Philippines", "PN": "Pitcairn", "PL": "Poland", "PT": "Portugal", "PR": "Puerto Rico", "QA": "Qatar", "RE": "R\u00e9union", "RO": "Romania", "RU": "Russia", "RW": "Rwanda", "SH": "Saint Helena", "KN": "Saint Kitts and Nevis", "LC": "Saint Lucia", "PM": "Saint Pierre and Miquelon", "VC": "Saint Vincent and the Grenadines", "WS": "Samoa", "AS": "Samoa ye Amerika", "SM": "San Marino", "ST": "S\u00e3o Tom\u00e9 and Pr\u00edncipe", "SA": "Saudi Arabia", "SN": "Senegal", "RS": "Serbia", "SC": "Seychelles", "SL": "Sierra Leone", "SG": "Singapore", "SX": "Sint Maarten", "SK": "Slovakia", "SI": "Slovenia", "SO": "Somalia", "ZA": "South Africa", "GS": "South Georgia & South Sandwich Islands", "SS": "South Sudan", "ES": "Spain", "LK": "Sri Lanka", "BL": "St. Barth\u00e9lemy", "MF": "St. Martin", "SD": "Sudan", "SR": "Suriname", "SJ": "Svalbard & Jan Mayen", "SZ": "Swaziland", "SE": "Sweden", "CH": "Switzerland", "SY": "Syria", "TW": "Taiwan", "TJ": "Tajikistan", "TZ": "Tanzania", "TH": "Thailand", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad and Tobago", "TN": "Tunisia", "TR": "Turkey", "TM": "Turkmenistan", "UG": "Uganda", "UA": "Ukraine", "AE": "United Arab Emirates", "GB": "United Kingdom", "UY": "Uruguay", "UZ": "Uzbekistan", "VU": "Vanuatu", "VA": "Vatican State", "VE": "Venezuela", "VN": "Vietnam", "WF": "Wallis and Futuna", "EH": "Western Sahara", "YE": "Yemen", "ZM": "Zambia", "ZW": "Zimbabwe", "SB": "Zvitsuwa zvaSolomon", "VI": "Zvitsuwa zveAmerika", "CV": "Zvitsuwa zveCape Verde", "KY": "Zvitsuwa zveCayman", "CK": "Zvitsuwa zveCook", "FK": "Zvitsuwa zveFalklands", "VG": "Zvitsuwa zveHingirandi", "TC": "Zvitsuwa zveTurk neCaico"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/sq.json000066400000000000000000000116741521174352300277150ustar00rootroot00000000000000{"AF": "Afganistan", "ZA": "Afrika e Jugut", "DZ": "Algjeri", "AD": "Andorr\u00eb", "AO": "Angol\u00eb", "AI": "Anguil\u00eb", "AQ": "Antarktik\u00eb", "AG": "Antigua e Barbuda", "SA": "Arabi Saudite", "AR": "Argjentin\u00eb", "AM": "Armeni", "AW": "Arub\u00eb", "AU": "Australi", "AT": "Austri", "AZ": "Azerbajxhan", "BS": "Bahama", "BH": "Bahrejn", "BD": "Bangladesh", "BB": "Barbados", "BE": "Belgjik\u00eb", "BZ": "Beliz\u00eb", "BJ": "Benin", "BM": "Bermude", "BY": "Bjellorusi", "BO": "Bolivi", "BA": "Bosnj\u00eb-Hercegovin\u00eb", "BW": "Botsvan\u00eb", "BR": "Brazil", "BN": "Brunei", "BG": "Bullgari", "BF": "Burkina-Faso", "BI": "Burundi", "BT": "Butan", "CI": "C\u00f4te d\u2019Ivoire", "TD": "\u00c7ad", "CZ": "\u00c7eki", "DK": "Danimark\u00eb", "DM": "Dominik\u00eb", "EG": "Egjipt", "EC": "Ekuador", "AE": "Emiratet e Bashkuara Arabe", "ER": "Eritre", "EE": "Estoni", "SZ": "Esvatini", "ET": "Etiopi", "PH": "Filipine", "FI": "Finland\u00eb", "FJ": "Fixhi", "FR": "Franc\u00eb", "GA": "Gabon", "GM": "Gambi", "GH": "Gan\u00eb", "GG": "Gernsej", "GD": "Granad\u00eb", "GR": "Greqi", "GL": "Gr\u00ebnland\u00eb", "GP": "Guadelup\u00eb", "GF": "Guajana Franceze", "GY": "Guajan\u00eb", "GU": "Guam", "GT": "Guatemal\u00eb", "GN": "Guine", "GW": "Guine-Bisau", "PG": "Guineja e Re-Papua", "GQ": "Guineja Ekuatoriale", "GE": "Gjeorgji", "DE": "Gjermani", "GI": "Gjibraltar", "HT": "Haiti", "NL": "Holand\u00eb", "HN": "Honduras", "HU": "Hungari", "IN": "Indi", "ID": "Indonezi", "IQ": "Irak", "IR": "Iran", "IE": "Irland\u00eb", "IS": "Island\u00eb", "AX": "Ishujt Aland\u00eb", "VG": "Ishujt e Virgj\u00ebr Britanik\u00eb", "VI": "Ishujt e Virgj\u00ebr t\u00eb SHBA-s\u00eb", "FK": "Ishujt Falkland", "FO": "Ishujt Faroe", "HM": "Ishujt H\u00ebrd e Mekdonald", "KY": "Ishujt Kajman", "CC": "Ishujt Kokos", "CK": "Ishujt Kuk", "PN": "Ishujt Pitkern", "SB": "Ishujt Solomon", "TC": "Ishujt Turks dhe Kaikos", "BV": "Ishulli Bove", "CX": "Ishulli i Krishtlindjes", "IM": "Ishulli i Manit", "NF": "Ishulli Norfolk", "IT": "Itali", "IL": "Izrael", "JP": "Japoni", "YE": "Jemen", "JO": "Jordani", "NC": "Kaledoni e Re", "KH": "Kamboxhia", "CM": "Kamerun", "CA": "Kanada", "BQ": "Karaibet holandeze", "QA": "Katar", "KZ": "Kazakistan", "KE": "Kenia", "CV": "Kepi i Gjelb\u00ebr", "CL": "Kili", "CN": "Kin\u00eb", "KG": "Kirgizi", "KI": "Kiribati", "CO": "Kolumbi", "KM": "Komore", "CG": "Kongo-Brazavil\u00eb", "CD": "Kongo-Kinshasa", "KR": "Kore e Jugut", "KP": "Kore e Veriut", "CR": "Kosta-Rik\u00eb", "HR": "Kroaci", "CU": "Kub\u00eb", "CW": "Kurasao", "KW": "Kuvajt", "LA": "Laos", "LS": "Lesoto", "LV": "Letoni", "LB": "Liban", "LR": "Liberi", "LY": "Libi", "LI": "Lihtenshtajn", "LT": "Lituani", "LU": "Luksemburg", "MG": "Madagaskar", "YT": "Majot\u00eb", "ME": "Mal i Zi", "MY": "Malajzi", "MW": "Malavi", "MV": "Maldive", "ML": "Mali", "MT": "Malt\u00eb", "MK": "Maqedonia e Veriut", "MA": "Marok", "MQ": "Martinik\u00eb", "MR": "Mauritani", "MU": "Mauritius", "GB": "Mbret\u00ebria e Bashkuar", "MX": "Meksik\u00eb", "MM": "Mianmar (Burm\u00eb)", "MD": "Moldavi", "MC": "Monako", "MN": "Mongoli", "MS": "Montserat", "MZ": "Mozambik", "NA": "Namibi", "NR": "Nauru", "NP": "Nepal", "NE": "Niger", "NG": "Nigeri", "NI": "Nikaragua", "NU": "Niue", "NO": "Norvegji", "OM": "Oman", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PY": "Paraguai", "PE": "Peru", "PF": "Polinezia Franceze", "PL": "Poloni", "PR": "Porto-Riko", "PT": "Portugali", "CY": "Qipro", "DO": "Republika Dominikane", "CF": "Republika e Afrik\u00ebs Qendrore", "RE": "Reunion", "HK": "RPA i Hong-Kongut", "MO": "RPA i Makaos", "RW": "Ruand\u00eb", "RO": "Rumani", "RU": "Rusi", "EH": "Saharaja Per\u00ebndimore", "SV": "Salvador", "WS": "Samoa", "AS": "Samoa Amerikane", "SM": "San-Marino", "ST": "Sao-Tome e Principe", "SC": "Sejshelle", "BL": "Sen-Bartelemi", "MF": "Sen-Marten", "SN": "Senegal", "RS": "Serbi", "SL": "Sierra-Leone", "SG": "Singapor", "SX": "Sint-Marten", "SY": "Siri", "SK": "Sllovaki", "SI": "Slloveni", "SO": "Somali", "ES": "Spanj\u00eb", "LK": "Sri-Lank\u00eb", "SD": "Sudan", "SS": "Sudani i Jugut", "SE": "Suedi", "SR": "Surinami", "SJ": "Svalbard e Jan-Majen", "US": "SHBA", "SH": "Sh\u00ebn-Elen\u00eb", "KN": "Sh\u00ebn-Kits dhe Nevis", "LC": "Sh\u00ebn-Lu\u00e7ia", "PM": "Sh\u00ebn-Pier dhe Mikelon", "VC": "Sh\u00ebn-Vincent dhe Grenadine", "AL": "Shqip\u00ebri", "TH": "Tajland\u00eb", "TW": "Tajvan", "TZ": "Tanzani", "TJ": "Taxhikistan", "TF": "Territoret Jugore Franceze", "IO": "Territori Britanik i Oqeanit Indian", "TL": "Timor-Leste", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad e Tobago", "TN": "Tunizi", "TM": "Turkmenistan", "TR": "Turqi", "UG": "Ugand\u00eb", "UA": "Ukrain\u00eb", "WF": "Uollis e Futuna", "UY": "Uruguai", "UZ": "Uzbekistan", "VU": "Vanuatu", "VA": "Vatikan", "VE": "Venezuel\u00eb", "VN": "Vietnam", "JM": "Xhamajk\u00eb", "DJ": "Xhibuti", "GS": "Xhorxha Jugore dhe Ishujt Sendui\u00e7\u00eb t\u00eb Jugut", "ZM": "Zambi", "NZ": "Zeland\u00eb e Re", "ZW": "Zimbabve", "CH": "Zvic\u00ebr"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/sv.json000066400000000000000000000114371521174352300277170ustar00rootroot00000000000000{"AF": "Afghanistan", "AL": "Albanien", "DZ": "Algeriet", "VI": "Amerikanska Jungfru\u00f6arna", "AS": "Amerikanska Samoa", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarktis", "AG": "Antigua och Barbuda", "AR": "Argentina", "AM": "Armenien", "AW": "Aruba", "AU": "Australien", "AZ": "Azerbajdzjan", "BS": "Bahamas", "BH": "Bahrain", "BD": "Bangladesh", "BB": "Barbados", "BE": "Belgien", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhutan", "BO": "Bolivia", "BA": "Bosnien och Hercegovina", "BW": "Botswana", "BV": "Bouvet\u00f6n", "BR": "Brasilien", "VG": "Brittiska Jungfru\u00f6arna", "IO": "Brittiska territoriet i Indiska oceanen", "BN": "Brunei", "BG": "Bulgarien", "BF": "Burkina Faso", "BI": "Burundi", "KY": "Cayman\u00f6arna", "CF": "Centralafrikanska republiken", "CL": "Chile", "CO": "Colombia", "CK": "Cook\u00f6arna", "CR": "Costa Rica", "CW": "Cura\u00e7ao", "CY": "Cypern", "CI": "C\u00f4te d\u2019Ivoire", "DK": "Danmark", "DJ": "Djibouti", "DM": "Dominica", "DO": "Dominikanska republiken", "EC": "Ecuador", "EG": "Egypten", "GQ": "Ekvatorialguinea", "SV": "El Salvador", "ER": "Eritrea", "EE": "Estland", "ET": "Etiopien", "FK": "Falklands\u00f6arna", "FJ": "Fiji", "PH": "Filippinerna", "FI": "Finland", "FR": "Frankrike", "GF": "Franska Guyana", "PF": "Franska Polynesien", "TF": "Franska sydterritorierna", "FO": "F\u00e4r\u00f6arna", "AE": "F\u00f6renade Arabemiraten", "GA": "Gabon", "GM": "Gambia", "GE": "Georgien", "GH": "Ghana", "GI": "Gibraltar", "GR": "Grekland", "GD": "Grenada", "GL": "Gr\u00f6nland", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GN": "Guinea", "GW": "Guinea-Bissau", "GY": "Guyana", "HT": "Haiti", "HM": "Heard\u00f6n och McDonald\u00f6arna", "HN": "Honduras", "HK": "Hongkong", "IN": "Indien", "ID": "Indonesien", "IQ": "Irak", "IR": "Iran", "IE": "Irland", "IS": "Island", "IM": "Isle of Man", "IL": "Israel", "IT": "Italien", "JM": "Jamaica", "JP": "Japan", "YE": "Jemen", "JO": "Jordanien", "CX": "Jul\u00f6n", "KH": "Kambodja", "CM": "Kamerun", "CA": "Kanada", "CV": "Kap Verde", "BQ": "Karibiska Nederl\u00e4nderna", "KZ": "Kazakstan", "KE": "Kenya", "CN": "Kina", "KG": "Kirgizistan", "KI": "Kiribati", "CC": "Kokos\u00f6arna", "KM": "Komorerna", "CG": "Kongo-Brazzaville", "CD": "Kongo-Kinshasa", "HR": "Kroatien", "CU": "Kuba", "KW": "Kuwait", "LA": "Laos", "LS": "Lesotho", "LV": "Lettland", "LB": "Libanon", "LR": "Liberia", "LY": "Libyen", "LI": "Liechtenstein", "LT": "Litauen", "LU": "Luxemburg", "MO": "Macao", "MG": "Madagaskar", "MW": "Malawi", "MY": "Malaysia", "MV": "Maldiverna", "ML": "Mali", "MT": "Malta", "MA": "Marocko", "MQ": "Martinique", "MR": "Mauretanien", "MU": "Mauritius", "YT": "Mayotte", "MX": "Mexiko", "MZ": "Mo\u00e7ambique", "MD": "Moldavien", "MC": "Monaco", "MN": "Mongoliet", "ME": "Montenegro", "MS": "Montserrat", "MM": "Myanmar (Burma)", "NA": "Namibia", "NR": "Nauru", "NL": "Nederl\u00e4nderna", "NP": "Nepal", "NI": "Nicaragua", "NE": "Niger", "NG": "Nigeria", "NU": "Niue", "KP": "Nordkorea", "MK": "Nordmakedonien", "NF": "Norfolk\u00f6n", "NO": "Norge", "NC": "Nya Kaledonien", "NZ": "Nya Zeeland", "OM": "Oman", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua Nya Guinea", "PY": "Paraguay", "PE": "Peru", "PN": "Pitcairn\u00f6arna", "PL": "Polen", "PT": "Portugal", "PR": "Puerto Rico", "QA": "Qatar", "RE": "R\u00e9union", "RO": "Rum\u00e4nien", "RW": "Rwanda", "RU": "Ryssland", "BL": "S:t Barth\u00e9lemy", "SH": "S:t Helena", "KN": "S:t Kitts och Nevis", "LC": "S:t Lucia", "PM": "S:t Pierre och Miquelon", "VC": "S:t Vincent och Grenadinerna", "MF": "Saint-Martin", "SB": "Salomon\u00f6arna", "WS": "Samoa", "SM": "San Marino", "ST": "S\u00e3o Tom\u00e9 och Pr\u00edncipe", "SA": "Saudiarabien", "CH": "Schweiz", "SN": "Senegal", "RS": "Serbien", "SC": "Seychellerna", "SL": "Sierra Leone", "SG": "Singapore", "SX": "Sint Maarten", "SK": "Slovakien", "SI": "Slovenien", "SO": "Somalia", "ES": "Spanien", "LK": "Sri Lanka", "GB": "Storbritannien", "SD": "Sudan", "SR": "Surinam", "SJ": "Svalbard och Jan Mayen", "SE": "Sverige", "SZ": "Swaziland", "ZA": "Sydafrika", "GS": "Sydgeorgien och Sydsandwich\u00f6arna", "KR": "Sydkorea", "SS": "Sydsudan", "SY": "Syrien", "TJ": "Tadzjikistan", "TW": "Taiwan", "TZ": "Tanzania", "TD": "Tchad", "TH": "Thailand", "CZ": "Tjeckien", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad och Tobago", "TN": "Tunisien", "TR": "Turkiet", "TM": "Turkmenistan", "TC": "Turks- och Caicos\u00f6arna", "DE": "Tyskland", "UG": "Uganda", "UA": "Ukraina", "HU": "Ungern", "UY": "Uruguay", "US": "USA", "UZ": "Uzbekistan", "VU": "Vanuatu", "VA": "Vatikanstaten", "VE": "Venezuela", "VN": "Vietnam", "BY": "Vitryssland", "EH": "V\u00e4stsahara", "WF": "Wallis- och Futuna\u00f6arna", "ZM": "Zambia", "ZW": "Zimbabwe", "AX": "\u00c5land", "AT": "\u00d6sterrike", "TL": "\u00d6sttimor"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/sw.json000066400000000000000000000114051521174352300277130ustar00rootroot00000000000000{"AF": "Afghanistan", "ZA": "Afrika Kusini", "IS": "Aisilandi", "AR": "Ajentina", "AL": "Albania", "DZ": "Aljeria", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antaktiki", "AG": "Antigua na Barbuda", "AM": "Armenia", "AW": "Aruba", "AU": "Australia", "AT": "Austria", "IE": "Ayalandi", "AZ": "Azerbaijani", "BB": "Babadosi", "BS": "Bahama", "BH": "Bahareni", "BD": "Bangladeshi", "BY": "Belarus", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhutan", "BO": "Bolivia", "BA": "Bosnia na Hezegovina", "BW": "Botswana", "BR": "Brazil", "BN": "Brunei", "BF": "Bukinafaso", "BG": "Bulgaria", "BI": "Burundi", "CV": "Cape Verde", "TD": "Chad", "CZ": "Chechia", "CL": "Chile", "CI": "Cote d\u2019Ivoire", "HR": "Croatia", "CU": "Cuba", "CW": "Curacao", "CY": "Cyprus", "DK": "Denmark", "DM": "Dominika", "EC": "Ecuador", "SV": "El Salvador", "IO": "Eneo la Uingereza katika Bahari Hindi", "ER": "Eritrea", "EE": "Estonia", "ET": "Ethiopia", "AE": "Falme za Kiarabu", "FJ": "Fiji", "GA": "Gabon", "GM": "Gambia", "GH": "Ghana", "GI": "Gibraltar", "GN": "Gine", "GW": "Ginebisau", "GL": "Greenland", "GD": "Grenada", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GF": "Guiana ya Ufaransa", "GQ": "Guinea ya Ikweta", "GY": "Guyana", "HT": "Haiti", "TF": "Himaya za Kusini za Kifaranza", "HN": "Honduras", "HK": "Hong Kong SAR China", "HU": "Hungaria", "IN": "India", "ID": "Indonesia", "IQ": "Iraki", "IR": "Iran", "IL": "Israeli", "IT": "Italia", "JM": "Jamaika", "CF": "Jamhuri ya Afrika ya Kati", "DO": "Jamhuri ya Dominika", "CD": "Jamhuri ya Kidemokrasia ya Kongo", "JP": "Japani", "DJ": "Jibuti", "GE": "Jojia", "JO": "Jordan", "KH": "Kambodia", "CM": "Kameruni", "CA": "Kanada", "KZ": "Kazakistani", "KE": "Kenya", "KI": "Kiribati", "KG": "Kirigizistani", "BV": "Kisiwa cha Bouvet", "HM": "Kisiwa cha Heard na Visiwa vya McDonald", "CX": "Kisiwa cha Krismasi", "IM": "Kisiwa cha Man", "NF": "Kisiwa cha Norfolk", "CO": "Kolombia", "KM": "Komoro", "CG": "Kongo - Brazzaville", "KP": "Korea Kaskazini", "KR": "Korea Kusini", "CR": "Kostarika", "KW": "Kuwait", "LA": "Laos", "LV": "Latvia", "LB": "Lebanon", "LS": "Lesoto", "LR": "Liberia", "LY": "Libya", "LI": "Liechtenstein", "LT": "Lithuania", "LU": "Luxembourg", "MG": "Madagaska", "MO": "Makau SAR China", "MW": "Malawi", "MV": "Maldives", "MY": "Malesia", "ML": "Mali", "MT": "Malta", "US": "Marekani", "MQ": "Martinique", "MK": "Masedonia ya Kaskazini", "YT": "Mayotte", "MX": "Meksiko", "EG": "Misri", "VA": "Mji wa Vatican", "MD": "Moldova", "MC": "Monaco", "MN": "Mongolia", "ME": "Montenegro", "MS": "Montserrat", "MU": "Morisi", "MR": "Moritania", "MA": "Morocco", "MZ": "Msumbiji", "MM": "Myanmar (Burma)", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NC": "New Caledonia", "NE": "Niger", "NG": "Nigeria", "NI": "Nikaragwa", "NU": "Niue", "NO": "Norway", "NZ": "Nyuzilandi", "OM": "Oman", "PK": "Pakistani", "PW": "Palau", "PA": "Panama", "PG": "Papua New Guinea", "PY": "Paraguay", "PE": "Peru", "PL": "Poland", "PF": "Polynesia ya Ufaransa", "PR": "Puerto Rico", "QA": "Qatar", "RE": "Reunion", "RO": "Romania", "RW": "Rwanda", "EH": "Sahara Magharibi", "WS": "Samoa", "AS": "Samoa ya Marekani", "SM": "San Marino", "PM": "Santapierre na Miquelon", "ST": "S\u00e3o Tom\u00e9 na Pr\u00edncipe", "SA": "Saudia", "SN": "Senegali", "RS": "Serbia", "SL": "Siera Leoni", "SG": "Singapore", "SX": "Sint Maarten", "SK": "Slovakia", "SI": "Slovenia", "SO": "Somalia", "LK": "Sri Lanka", "BL": "St. Barthelemy", "SH": "St. Helena", "KN": "St. Kitts na Nevis", "LC": "St. Lucia", "MF": "St. Martin", "VC": "St. Vincent na Grenadines", "SD": "Sudan", "SS": "Sudan Kusini", "SR": "Suriname", "SJ": "Svalbard na Jan Mayen", "SY": "Syria", "TH": "Tailandi", "TW": "Taiwan", "TJ": "Tajikistani", "TZ": "Tanzania", "TL": "Timor-Leste", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad na Tobago", "TN": "Tunisia", "TM": "Turkmenistan", "BE": "Ubelgiji", "CN": "Uchina", "GB": "Ufalme wa Muungano", "FR": "Ufaransa", "PH": "Ufilipino", "FI": "Ufini", "UG": "Uganda", "GR": "Ugiriki", "ES": "Uhispania", "NL": "Uholanzi", "BQ": "Uholanzi ya Karibiani", "DE": "Ujerumani", "UA": "Ukraine", "PT": "Ureno", "UY": "Uruguay", "RU": "Urusi", "SC": "Ushelisheli", "SZ": "Uswazi", "SE": "Uswidi", "CH": "Uswisi", "TR": "Uturuki", "UZ": "Uzibekistani", "VU": "Vanuatu", "VE": "Venezuela", "VN": "Vietnam", "AX": "Visiwa vya Aland", "KY": "Visiwa vya Cayman", "CC": "Visiwa vya Cocos (Keeling)", "CK": "Visiwa vya Cook", "FK": "Visiwa vya Falkland", "FO": "Visiwa vya Faroe", "GS": "Visiwa vya Georgia Kusini na Sandwich Kusini", "PN": "Visiwa vya Pitcairn", "SB": "Visiwa vya Solomon", "TC": "Visiwa vya Turks na Caicos", "VI": "Visiwa vya Virgin, Marekani", "VG": "Visiwa vya Virgin, Uingereza", "WF": "Wallis na Futuna", "YE": "Yemeni", "ZM": "Zambia", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/ta.json000066400000000000000000000423201521174352300276660ustar00rootroot00000000000000{"AI": "\u0b85\u0b99\u0bcd\u0b95\u0bbf\u0baf\u0bc1\u0bb2\u0bbe", "AO": "\u0b85\u0b99\u0bcd\u0b95\u0bcb\u0bb2\u0bbe", "AZ": "\u0b85\u0b9a\u0bb0\u0bcd\u0baa\u0bc8\u0b9c\u0bbe\u0ba9\u0bcd", "AQ": "\u0b85\u0ba3\u0bcd\u0b9f\u0bbe\u0bb0\u0bcd\u0b9f\u0bbf\u0b95\u0bbe", "AS": "\u0b85\u0bae\u0bc6\u0bb0\u0bbf\u0b95\u0bcd\u0b95 \u0b9a\u0bae\u0bcb\u0bb5\u0bbe", "US": "\u0b85\u0bae\u0bc6\u0bb0\u0bbf\u0b95\u0bcd\u0b95\u0bbe", "IE": "\u0b85\u0baf\u0bb0\u0bcd\u0bb2\u0bbe\u0ba8\u0bcd\u0ba4\u0bc1", "AM": "\u0b85\u0bb0\u0bcd\u0bae\u0bc7\u0ba9\u0bbf\u0baf\u0bbe", "AR": "\u0b85\u0bb0\u0bcd\u0b9c\u0bc6\u0ba9\u0bcd\u0b9f\u0bbf\u0ba9\u0bbe", "AW": "\u0b85\u0bb0\u0bc2\u0baa\u0bbe", "AL": "\u0b85\u0bb2\u0bcd\u0baa\u0bc7\u0ba9\u0bbf\u0baf\u0bbe", "DZ": "\u0b85\u0bb2\u0bcd\u0b9c\u0bc0\u0bb0\u0bbf\u0baf\u0bbe", "AD": "\u0b85\u0ba9\u0bcd\u0b9f\u0bcb\u0bb0\u0bbe", "AF": "\u0b86\u0b83\u0baa\u0bcd\u0b95\u0bbe\u0ba9\u0bbf\u0bb8\u0bcd\u0ba4\u0bbe\u0ba9\u0bcd", "AG": "\u0b86\u0ba3\u0bcd\u0b9f\u0bbf\u0b95\u0bc1\u0bb5\u0bbe \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0baa\u0bbe\u0bb0\u0bcd\u0baa\u0bc1\u0b9f\u0bbe", "AX": "\u0b86\u0bb2\u0ba8\u0bcd\u0ba4\u0bc1 \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "AT": "\u0b86\u0bb8\u0bcd\u0ba4\u0bbf\u0bb0\u0bbf\u0baf\u0bbe", "AU": "\u0b86\u0bb8\u0bcd\u0ba4\u0bbf\u0bb0\u0bc7\u0bb2\u0bbf\u0baf\u0bbe", "IT": "\u0b87\u0ba4\u0bcd\u0ba4\u0bbe\u0bb2\u0bbf", "IN": "\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe", "ID": "\u0b87\u0ba8\u0bcd\u0ba4\u0bcb\u0ba9\u0bc7\u0b9a\u0bbf\u0baf\u0bbe", "LK": "\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8", "IL": "\u0b87\u0bb8\u0bcd\u0bb0\u0bc7\u0bb2\u0bcd", "EC": "\u0b88\u0b95\u0bcd\u0bb5\u0b9f\u0bbe\u0bb0\u0bcd", "GQ": "\u0b88\u0b95\u0bcd\u0bb5\u0b9f\u0bcb\u0bb0\u0bbf\u0baf\u0bb2\u0bcd \u0b95\u0bbf\u0ba9\u0bbf\u0baf\u0bbe", "IQ": "\u0b88\u0bb0\u0bbe\u0b95\u0bcd", "IR": "\u0b88\u0bb0\u0bbe\u0ba9\u0bcd", "UA": "\u0b89\u0b95\u0bcd\u0bb0\u0bc8\u0ba9\u0bcd", "UG": "\u0b89\u0b95\u0bbe\u0ba3\u0bcd\u0b9f\u0bbe", "UY": "\u0b89\u0bb0\u0bc1\u0b95\u0bc1\u0bb5\u0bc7", "UZ": "\u0b89\u0bb8\u0bcd\u0baa\u0bc6\u0b95\u0bbf\u0bb8\u0bcd\u0ba4\u0bbe\u0ba9\u0bcd", "EG": "\u0b8e\u0b95\u0bbf\u0baa\u0bcd\u0ba4\u0bc1", "ET": "\u0b8e\u0ba4\u0bcd\u0ba4\u0bbf\u0baf\u0bcb\u0baa\u0bcd\u0baa\u0bbf\u0baf\u0bbe", "ER": "\u0b8e\u0bb0\u0bbf\u0b9f\u0bcd\u0bb0\u0bbf\u0baf\u0bbe", "SV": "\u0b8e\u0bb2\u0bcd \u0b9a\u0bbe\u0bb2\u0bcd\u0bb5\u0b9f\u0bbe\u0bb0\u0bcd", "EE": "\u0b8e\u0bb8\u0bcd\u0b9f\u0bcb\u0ba9\u0bbf\u0baf\u0bbe", "SZ": "\u0b8e\u0bb8\u0bcd\u0bb5\u0bbe\u0b9f\u0bcd\u0b9f\u0bc0\u0ba9\u0bbf", "YE": "\u0b8f\u0bae\u0ba9\u0bcd", "AE": "\u0b90\u0b95\u0bcd\u0b95\u0bbf\u0baf \u0b85\u0bb0\u0baa\u0bc1 \u0b8e\u0bae\u0bbf\u0bb0\u0bc7\u0b9f\u0bcd\u0bb8\u0bcd", "IM": "\u0b90\u0bb2\u0bcd \u0b86\u0b83\u0baa\u0bcd \u0bae\u0bc7\u0ba9\u0bcd", "IS": "\u0b90\u0bb8\u0bcd\u0bb2\u0bbe\u0ba8\u0bcd\u0ba4\u0bc1", "OM": "\u0b93\u0bae\u0ba9\u0bcd", "FK": "\u0b83\u0baa\u0bbe\u0b95\u0bcd\u0bb2\u0bbe\u0ba8\u0bcd\u0ba4\u0bc1 \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "FO": "\u0b83\u0baa\u0bbe\u0bb0\u0bcb \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "FJ": "\u0b83\u0baa\u0bbf\u0b9c\u0bbf", "GP": "\u0b95\u0bcd\u0bb5\u0bbe\u0ba4\u0bc7\u0bb2\u0bcb\u0baa\u0bcd", "QA": "\u0b95\u0ba4\u0bcd\u0ba4\u0bbe\u0bb0\u0bcd", "KH": "\u0b95\u0bae\u0bcd\u0baa\u0bcb\u0b9f\u0bbf\u0baf\u0bbe", "GY": "\u0b95\u0baf\u0bbe\u0ba9\u0bbe", "BQ": "\u0b95\u0bb0\u0bc0\u0baa\u0bbf\u0baf\u0ba9\u0bcd \u0ba8\u0bc6\u0ba4\u0bb0\u0bcd\u0bb2\u0bbe\u0ba8\u0bcd\u0ba4\u0bc1", "GT": "\u0b95\u0bb5\u0bc1\u0ba4\u0bae\u0bbe\u0bb2\u0bbe", "CA": "\u0b95\u0ba9\u0b9f\u0bbe", "KZ": "\u0b95\u0bb8\u0b95\u0bb8\u0bcd\u0ba4\u0bbe\u0ba9\u0bcd", "CD": "\u0b95\u0bbe\u0b99\u0bcd\u0b95\u0bcb - \u0b95\u0bbf\u0ba9\u0bcd\u0bb7\u0bbe\u0b9a\u0bbe", "CG": "\u0b95\u0bbe\u0b99\u0bcd\u0b95\u0bcb - \u0baa\u0bcd\u0bb0\u0bbe\u0bb8\u0bbe\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc7", "GM": "\u0b95\u0bbe\u0bae\u0bcd\u0baa\u0bbf\u0baf\u0bbe", "GH": "\u0b95\u0bbe\u0ba9\u0bbe", "CU": "\u0b95\u0bbf\u0baf\u0bc2\u0baa\u0bbe", "KG": "\u0b95\u0bbf\u0bb0\u0bcd\u0b95\u0bbf\u0bb8\u0bcd\u0ba4\u0bbe\u0ba9\u0bcd", "GD": "\u0b95\u0bbf\u0bb0\u0ba9\u0bc6\u0b9f\u0bbe", "KI": "\u0b95\u0bbf\u0bb0\u0bbf\u0baa\u0bbe\u0b9f\u0bcd\u0b9f\u0bbf", "GL": "\u0b95\u0bbf\u0bb0\u0bc0\u0ba9\u0bcd\u0bb2\u0bbe\u0ba8\u0bcd\u0ba4\u0bc1", "GR": "\u0b95\u0bbf\u0bb0\u0bc0\u0bb8\u0bcd", "CX": "\u0b95\u0bbf\u0bb1\u0bbf\u0bb8\u0bcd\u0ba4\u0bc1\u0bae\u0bb8\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1", "GN": "\u0b95\u0bbf\u0ba9\u0bbf\u0baf\u0bbe", "GW": "\u0b95\u0bbf\u0ba9\u0bbf\u0baf\u0bbe-\u0baa\u0bbf\u0bb8\u0bcd\u0bb8\u0bbe\u0bb5\u0bcd", "CK": "\u0b95\u0bc1\u0b95\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "CW": "\u0b95\u0bc1\u0bb0\u0bbe\u0b95\u0bb5\u0bcd", "HR": "\u0b95\u0bc1\u0bb0\u0bcb\u0bb7\u0bbf\u0baf\u0bbe", "GU": "\u0b95\u0bc1\u0bb5\u0bbe\u0bae\u0bcd", "KW": "\u0b95\u0bc1\u0bb5\u0bc8\u0ba4\u0bcd", "KY": "\u0b95\u0bc6\u0baf\u0bcd\u0bae\u0bc6\u0ba9\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "GG": "\u0b95\u0bc6\u0bb0\u0bcd\u0ba9\u0bcd\u0b9a\u0bbf", "KE": "\u0b95\u0bc6\u0ba9\u0bcd\u0baf\u0bbe", "CV": "\u0b95\u0bc7\u0baa\u0bcd \u0bb5\u0bc6\u0bb0\u0bcd\u0b9f\u0bc7", "GA": "\u0b95\u0bc7\u0baa\u0bbe\u0ba9\u0bcd", "CM": "\u0b95\u0bc7\u0bae\u0bb0\u0bc2\u0ba9\u0bcd", "CO": "\u0b95\u0bca\u0bb2\u0bae\u0bcd\u0baa\u0bbf\u0baf\u0bbe", "CC": "\u0b95\u0bcb\u0b95\u0bcb\u0bb8\u0bcd (\u0b95\u0bc0\u0bb2\u0bbf\u0b99\u0bcd) \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "CI": "\u0b95\u0bcb\u0b9f\u0bcd \u0ba4\u0bbf\u2019\u0bb5\u0bbe\u0baf\u0bb0\u0bcd", "KM": "\u0b95\u0bcb\u0bae\u0bb0\u0bcb\u0bb8\u0bcd", "CR": "\u0b95\u0bcb\u0bb8\u0bcd\u0b9f\u0bbe\u0bb0\u0bbf\u0b95\u0bbe", "WS": "\u0b9a\u0bae\u0bcb\u0bb5\u0bbe", "SA": "\u0b9a\u0bb5\u0bc2\u0ba4\u0bbf \u0b85\u0bb0\u0bc7\u0baa\u0bbf\u0baf\u0bbe", "TD": "\u0b9a\u0bbe\u0b9f\u0bcd", "SB": "\u0b9a\u0bbe\u0bb2\u0bae\u0ba9\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "ST": "\u0b9a\u0bbe\u0bb5\u0bcd \u0ba4\u0bcb\u0bae\u0bcd & \u0baa\u0bcd\u0bb0\u0bbf\u0ba9\u0bcd\u0b9a\u0bbf\u0baa\u0bbf", "SM": "\u0b9a\u0bbe\u0ba9\u0bcd \u0bae\u0bb0\u0bbf\u0ba9\u0bcb", "SG": "\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd", "SL": "\u0b9a\u0bbf\u0baf\u0bbe\u0bb0\u0bbe \u0bb2\u0bbf\u0baf\u0bcb\u0ba9\u0bcd", "SY": "\u0b9a\u0bbf\u0bb0\u0bbf\u0baf\u0bbe", "CL": "\u0b9a\u0bbf\u0bb2\u0bbf", "SX": "\u0b9a\u0bbf\u0ba9\u0bcd\u0b9f\u0bcd \u0bae\u0bbe\u0bb0\u0bcd\u0b9f\u0bc6\u0ba9\u0bcd", "CN": "\u0b9a\u0bc0\u0ba9\u0bbe", "SC": "\u0b9a\u0bc0\u0bb7\u0bc6\u0bb2\u0bcd\u0bb8\u0bcd", "SR": "\u0b9a\u0bc1\u0bb0\u0bbf\u0ba9\u0bbe\u0bae\u0bcd", "SD": "\u0b9a\u0bc2\u0b9f\u0bbe\u0ba9\u0bcd", "CZ": "\u0b9a\u0bc6\u0b9a\u0bbf\u0baf\u0bbe", "KN": "\u0b9a\u0bc6\u0baf\u0bbf\u0ba9\u0bcd\u0b9f\u0bcd \u0b95\u0bbf\u0b9f\u0bcd\u0bb8\u0bcd & \u0ba8\u0bc6\u0bb5\u0bbf\u0bb8\u0bcd", "BL": "\u0b9a\u0bc6\u0baf\u0bbf\u0ba9\u0bcd\u0b9f\u0bcd \u0baa\u0bbe\u0bb0\u0bcd\u0ba4\u0bc7\u0bb2\u0bc6\u0bae\u0bbf", "PM": "\u0b9a\u0bc6\u0baf\u0bbf\u0ba9\u0bcd\u0b9f\u0bcd \u0baa\u0bbf\u0baf\u0bb0\u0bcd & \u0bae\u0bbf\u0b95\u0bcd\u0bb5\u0bc7\u0bb2\u0bbe\u0ba9\u0bcd", "MF": "\u0b9a\u0bc6\u0baf\u0bbf\u0ba9\u0bcd\u0b9f\u0bcd \u0bae\u0bbe\u0bb0\u0bcd\u0b9f\u0bcd\u0b9f\u0bc0\u0ba9\u0bcd", "LC": "\u0b9a\u0bc6\u0baf\u0bbf\u0ba9\u0bcd\u0b9f\u0bcd \u0bb2\u0bc2\u0b9a\u0bbf\u0baf\u0bbe", "VC": "\u0b9a\u0bc6\u0baf\u0bbf\u0ba9\u0bcd\u0b9f\u0bcd \u0bb5\u0bbf\u0ba9\u0bcd\u0b9a\u0bc6\u0ba9\u0bcd\u0b9f\u0bcd & \u0b95\u0bbf\u0bb0\u0bc6\u0ba9\u0b9f\u0bc8\u0ba9\u0bcd\u0bb8\u0bcd", "SH": "\u0b9a\u0bc6\u0baf\u0bbf\u0ba9\u0bcd\u0b9f\u0bcd \u0bb9\u0bc6\u0bb2\u0bc6\u0ba9\u0bbe", "RS": "\u0b9a\u0bc6\u0bb0\u0bcd\u0baa\u0bbf\u0baf\u0bbe", "SN": "\u0b9a\u0bc6\u0ba9\u0bc6\u0b95\u0bb2\u0bcd", "CY": "\u0b9a\u0bc8\u0baa\u0bcd\u0bb0\u0bb8\u0bcd", "SO": "\u0b9a\u0bcb\u0bae\u0bbe\u0bb2\u0bbf\u0baf\u0bbe", "TC": "\u0b9f\u0bb0\u0bcd\u0b95\u0bcd\u0bb8\u0bcd & \u0b95\u0bc8\u0b95\u0bcb\u0bb8\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "TT": "\u0b9f\u0bbf\u0bb0\u0bbf\u0ba9\u0bbf\u0b9f\u0bbe\u0b9f\u0bcd & \u0b9f\u0bca\u0baa\u0bbe\u0b95\u0bcb", "TN": "\u0b9f\u0bc1\u0ba9\u0bbf\u0b9a\u0bbf\u0baf\u0bbe", "DK": "\u0b9f\u0bc6\u0ba9\u0bcd\u0bae\u0bbe\u0bb0\u0bcd\u0b95\u0bcd", "DO": "\u0b9f\u0bca\u0bae\u0bbf\u0ba9\u0bbf\u0b95\u0ba9\u0bcd \u0b95\u0bc1\u0b9f\u0bbf\u0baf\u0bb0\u0b9a\u0bc1", "DM": "\u0b9f\u0bca\u0bae\u0bbf\u0ba9\u0bbf\u0b95\u0bbe", "TK": "\u0b9f\u0bcb\u0b95\u0bc7\u0bb2\u0bcb", "TG": "\u0b9f\u0bcb\u0b95\u0bcb", "TO": "\u0b9f\u0bcb\u0b99\u0bcd\u0b95\u0bbe", "TJ": "\u0ba4\u0b9c\u0bbf\u0b95\u0bbf\u0bb8\u0bcd\u0ba4\u0bbe\u0ba9\u0bcd", "TH": "\u0ba4\u0bbe\u0baf\u0bcd\u0bb2\u0bbe\u0ba8\u0bcd\u0ba4\u0bc1", "TZ": "\u0ba4\u0bbe\u0ba9\u0bcd\u0b9a\u0bbe\u0ba9\u0bbf\u0baf\u0bbe", "TL": "\u0ba4\u0bbf\u0bae\u0bcb\u0bb0\u0bcd-\u0bb2\u0bc6\u0bb8\u0bcd\u0ba4\u0bc7", "TM": "\u0ba4\u0bc1\u0bb0\u0bcd\u0b95\u0bcd\u0bae\u0bc6\u0ba9\u0bbf\u0bb8\u0bcd\u0ba4\u0bbe\u0ba9\u0bcd", "TR": "\u0ba4\u0bc1\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bbf", "SS": "\u0ba4\u0bc6\u0bb1\u0bcd\u0b95\u0bc1 \u0b9a\u0bc2\u0b9f\u0bbe\u0ba9\u0bcd", "GS": "\u0ba4\u0bc6\u0bb1\u0bcd\u0b95\u0bc1 \u0b9c\u0bbe\u0bb0\u0bcd\u0b9c\u0bbf\u0baf\u0bbe \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0ba4\u0bc6\u0bb1\u0bcd\u0b95\u0bc1 \u0b9a\u0bbe\u0ba3\u0bcd\u0b9f\u0bcd\u0bb5\u0bbf\u0b9a\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "ZA": "\u0ba4\u0bc6\u0ba9\u0bcd \u0b86\u0baa\u0bcd\u0baa\u0bbf\u0bb0\u0bbf\u0b95\u0bcd\u0b95\u0bbe", "KR": "\u0ba4\u0bc6\u0ba9\u0bcd \u0b95\u0bca\u0bb0\u0bbf\u0baf\u0bbe", "TW": "\u0ba4\u0bc8\u0bb5\u0bbe\u0ba9\u0bcd", "NA": "\u0ba8\u0bae\u0bc0\u0baa\u0bbf\u0baf\u0bbe", "NF": "\u0ba8\u0bbe\u0bb0\u0bcd\u0b83\u0baa\u0bcb\u0b95\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1", "NO": "\u0ba8\u0bbe\u0bb0\u0bcd\u0bb5\u0bc7", "NI": "\u0ba8\u0bbf\u0b95\u0bb0\u0b95\u0bc1\u0bb5\u0bbe", "NU": "\u0ba8\u0bbf\u0baf\u0bc1\u0bb5\u0bc7", "NC": "\u0ba8\u0bbf\u0baf\u0bc2 \u0b95\u0bc7\u0bb2\u0bbf\u0b9f\u0bcb\u0ba9\u0bbf\u0baf\u0bbe", "NZ": "\u0ba8\u0bbf\u0baf\u0bc2\u0b9a\u0bbf\u0bb2\u0bbe\u0ba8\u0bcd\u0ba4\u0bc1", "NL": "\u0ba8\u0bc6\u0ba4\u0bb0\u0bcd\u0bb2\u0bbe\u0ba8\u0bcd\u0ba4\u0bc1", "NP": "\u0ba8\u0bc7\u0baa\u0bbe\u0bb3\u0bae\u0bcd", "NE": "\u0ba8\u0bc8\u0b9c\u0bb0\u0bcd", "NG": "\u0ba8\u0bc8\u0b9c\u0bc0\u0bb0\u0bbf\u0baf\u0bbe", "NR": "\u0ba8\u0bcc\u0bb0\u0bc1", "BD": "\u0baa\u0b99\u0bcd\u0b95\u0bb3\u0bbe\u0ba4\u0bc7\u0bb7\u0bcd", "PG": "\u0baa\u0baa\u0bcd\u0baa\u0bc1\u0bb5\u0bbe \u0ba8\u0bbf\u0baf\u0bc2 \u0b95\u0bbf\u0ba9\u0bbf\u0baf\u0bbe", "PY": "\u0baa\u0bb0\u0bbe\u0b95\u0bc1\u0bb5\u0bc7", "BG": "\u0baa\u0bb2\u0bcd\u0b95\u0bc7\u0bb0\u0bbf\u0baf\u0bbe", "PA": "\u0baa\u0ba9\u0bbe\u0bae\u0bbe", "BH": "\u0baa\u0bb9\u0bcd\u0bb0\u0bc8\u0ba9\u0bcd", "BS": "\u0baa\u0bb9\u0bbe\u0bae\u0bbe\u0bb8\u0bcd", "PK": "\u0baa\u0bbe\u0b95\u0bbf\u0bb8\u0bcd\u0ba4\u0bbe\u0ba9\u0bcd", "BB": "\u0baa\u0bbe\u0bb0\u0bcd\u0baa\u0b9f\u0bbe\u0bb8\u0bcd", "PW": "\u0baa\u0bbe\u0bb2\u0bcb", "PN": "\u0baa\u0bbf\u0b9f\u0bcd\u0b95\u0bc6\u0baf\u0bcd\u0bb0\u0bcd\u0ba9\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "PR": "\u0baa\u0bbf\u0baf\u0bc2\u0bb0\u0bcd\u0b9f\u0bcb \u0bb0\u0bbf\u0b95\u0bcb", "FR": "\u0baa\u0bbf\u0bb0\u0bbe\u0ba9\u0bcd\u0bb8\u0bcd", "IO": "\u0baa\u0bbf\u0bb0\u0bbf\u0b9f\u0bcd\u0b9f\u0bbf\u0bb7\u0bcd \u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0baa\u0bcd \u0baa\u0bc6\u0bb0\u0bc1\u0b99\u0bcd\u0b95\u0b9f\u0bb2\u0bcd \u0baa\u0bbf\u0bb0\u0ba4\u0bc7\u0b9a\u0bae\u0bcd", "VG": "\u0baa\u0bbf\u0bb0\u0bbf\u0b9f\u0bcd\u0b9f\u0bc0\u0bb7\u0bcd \u0b95\u0ba9\u0bcd\u0ba9\u0bbf\u0ba4\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "GF": "\u0baa\u0bbf\u0bb0\u0bc6\u0b9e\u0bcd\u0b9a\u0bc1 \u0b95\u0baf\u0bbe\u0ba9\u0bbe", "TF": "\u0baa\u0bbf\u0bb0\u0bc6\u0b9e\u0bcd\u0b9a\u0bc1 \u0ba4\u0bc6\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0bb0\u0ba4\u0bc7\u0b9a\u0b99\u0bcd\u0b95\u0bb3\u0bcd", "PF": "\u0baa\u0bbf\u0bb0\u0bc6\u0b9e\u0bcd\u0b9a\u0bc1 \u0baa\u0bbe\u0bb2\u0bbf\u0ba9\u0bc7\u0bb7\u0bbf\u0baf\u0bbe", "BR": "\u0baa\u0bbf\u0bb0\u0bc7\u0b9a\u0bbf\u0bb2\u0bcd", "PH": "\u0baa\u0bbf\u0bb2\u0bbf\u0baa\u0bcd\u0baa\u0bc8\u0ba9\u0bcd\u0bb8\u0bcd", "FI": "\u0baa\u0bbf\u0ba9\u0bcd\u0bb2\u0bbe\u0ba8\u0bcd\u0ba4\u0bc1", "BF": "\u0baa\u0bc1\u0bb0\u0bcd\u0b95\u0bbf\u0ba9\u0bbe \u0b83\u0baa\u0bbe\u0bb8\u0bcb", "BI": "\u0baa\u0bc1\u0bb0\u0bc1\u0ba3\u0bcd\u0b9f\u0bbf", "BN": "\u0baa\u0bc1\u0bb0\u0bc1\u0ba9\u0bc7", "BT": "\u0baa\u0bc2\u0b9f\u0bbe\u0ba9\u0bcd", "BM": "\u0baa\u0bc6\u0bb0\u0bcd\u0bae\u0bc1\u0b9f\u0bbe", "PE": "\u0baa\u0bc6\u0bb0\u0bc1", "BE": "\u0baa\u0bc6\u0bb2\u0bcd\u0b9c\u0bbf\u0baf\u0bae\u0bcd", "BY": "\u0baa\u0bc6\u0bb2\u0bbe\u0bb0\u0bb8\u0bcd", "BZ": "\u0baa\u0bc6\u0bb2\u0bbf\u0bb8\u0bcd", "BJ": "\u0baa\u0bc6\u0ba9\u0bbf\u0ba9\u0bcd", "BO": "\u0baa\u0bca\u0bb2\u0bbf\u0bb5\u0bbf\u0baf\u0bbe", "BV": "\u0baa\u0bca\u0bb5\u0bc7\u0b9f\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1", "BW": "\u0baa\u0bcb\u0b9f\u0bcd\u0bb8\u0bcd\u0bb5\u0bbe\u0ba9\u0bbe", "PT": "\u0baa\u0bcb\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bc1\u0b95\u0bcd\u0b95\u0bb2\u0bcd", "PL": "\u0baa\u0bcb\u0bb2\u0ba8\u0bcd\u0ba4\u0bc1", "BA": "\u0baa\u0bcb\u0bb8\u0bcd\u0ba9\u0bbf\u0baf\u0bbe & \u0bb9\u0bc6\u0bb0\u0bcd\u0bb8\u0b95\u0bcb\u0bb5\u0bbf\u0ba9\u0bbe", "MO": "\u0bae\u0b95\u0bbe\u0bb5\u0bcd \u0b8e\u0bb8\u0bcd\u0b8f\u0b86\u0bb0\u0bcd \u0b9a\u0bc0\u0ba9\u0bbe", "MN": "\u0bae\u0b99\u0bcd\u0b95\u0bcb\u0bb2\u0bbf\u0baf\u0bbe", "MG": "\u0bae\u0b9f\u0b95\u0bbe\u0bb8\u0bcd\u0b95\u0bb0\u0bcd", "CF": "\u0bae\u0ba4\u0bcd\u0ba4\u0bbf\u0baf \u0b86\u0baa\u0bcd\u0bb0\u0bbf\u0b95\u0bcd\u0b95\u0b95\u0bcd \u0b95\u0bc1\u0b9f\u0bbf\u0baf\u0bb0\u0b9a\u0bc1", "YT": "\u0bae\u0baf\u0bcb\u0b9f\u0bcd", "MW": "\u0bae\u0bb2\u0bbe\u0bb5\u0bbf", "MY": "\u0bae\u0bb2\u0bc7\u0b9a\u0bbf\u0baf\u0bbe", "MS": "\u0bae\u0bbe\u0ba3\u0bcd\u0b9f\u0bcd\u0b9a\u0bc6\u0bb0\u0bbe\u0b9f\u0bcd", "MQ": "\u0bae\u0bbe\u0bb0\u0bcd\u0b9f\u0bbf\u0ba9\u0bbf\u0b95\u0bcd", "MT": "\u0bae\u0bbe\u0bb2\u0bcd\u0b9f\u0bbe", "MD": "\u0bae\u0bbe\u0bb2\u0bcd\u0b9f\u0bcb\u0bb5\u0bbe", "MV": "\u0bae\u0bbe\u0bb2\u0ba4\u0bcd\u0ba4\u0bc0\u0bb5\u0bc1", "ML": "\u0bae\u0bbe\u0bb2\u0bbf", "ME": "\u0bae\u0bbe\u0ba9\u0bcd\u0b9f\u0bc7\u0ba9\u0bc6\u0b95\u0bcd\u0bb0\u0bcb", "MM": "\u0bae\u0bbf\u0baf\u0bbe\u0ba9\u0bcd\u0bae\u0bbe\u0bb0\u0bcd (\u0baa\u0bb0\u0bcd\u0bae\u0bbe)", "MX": "\u0bae\u0bc6\u0b95\u0bcd\u0b9a\u0bbf\u0b95\u0bcb", "EH": "\u0bae\u0bc7\u0bb1\u0bcd\u0b95\u0bc1 \u0b9a\u0bb9\u0bbe\u0bb0\u0bbe", "MZ": "\u0bae\u0bca\u0b9a\u0bbe\u0bae\u0bcd\u0baa\u0bbf\u0b95\u0bcd", "MA": "\u0bae\u0bca\u0bb0\u0bbe\u0b95\u0bcd\u0b95\u0bcb", "MU": "\u0bae\u0bca\u0bb0\u0bbf\u0b9a\u0bbf\u0baf\u0bb8\u0bcd", "MC": "\u0bae\u0bca\u0ba9\u0bbe\u0b95\u0bcd\u0b95\u0bcb", "MR": "\u0bae\u0bcc\u0bb0\u0bbf\u0b9f\u0bbe\u0ba9\u0bbf\u0baf\u0bbe", "GB": "\u0baf\u0bc1\u0ba9\u0bc8\u0b9f\u0bc6\u0b9f\u0bcd \u0b95\u0bbf\u0b99\u0bcd\u0b9f\u0bae\u0bcd", "VI": "\u0baf\u0bc2.\u0b8e\u0bb8\u0bcd. \u0b95\u0ba9\u0bcd\u0ba9\u0bbf\u0ba4\u0bcd \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "RU": "\u0bb0\u0bb7\u0bcd\u0baf\u0bbe", "RE": "\u0bb0\u0bc0\u0baf\u0bc2\u0ba9\u0bbf\u0baf\u0ba9\u0bcd", "RO": "\u0bb0\u0bc1\u0bae\u0bc7\u0ba9\u0bbf\u0baf\u0bbe", "RW": "\u0bb0\u0bc1\u0bb5\u0bbe\u0ba3\u0bcd\u0b9f\u0bbe", "LU": "\u0bb2\u0b95\u0bcd\u0bb8\u0bcd\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd\u0b95\u0bcd", "LV": "\u0bb2\u0bbe\u0b9f\u0bcd\u0bb5\u0bbf\u0baf\u0bbe", "LA": "\u0bb2\u0bbe\u0bb5\u0bcb\u0bb8\u0bcd", "LI": "\u0bb2\u0bbf\u0b9a\u0bcd\u0b9a\u0bc6\u0ba3\u0bcd\u0bb8\u0bcd\u0b9f\u0bc6\u0baf\u0bcd\u0ba9\u0bcd", "LT": "\u0bb2\u0bbf\u0ba4\u0bc1\u0bb5\u0bc7\u0ba9\u0bbf\u0baf\u0bbe", "LY": "\u0bb2\u0bbf\u0baa\u0bbf\u0baf\u0bbe", "LS": "\u0bb2\u0bc6\u0b9a\u0bcb\u0ba4\u0bcb", "LB": "\u0bb2\u0bc6\u0baa\u0ba9\u0bbe\u0ba9\u0bcd", "LR": "\u0bb2\u0bc8\u0baa\u0bc0\u0bb0\u0bbf\u0baf\u0bbe", "KP": "\u0bb5\u0b9f \u0b95\u0bca\u0bb0\u0bbf\u0baf\u0bbe", "MK": "\u0bb5\u0b9f\u0b95\u0bcd\u0b95\u0bc1 \u0bae\u0bbe\u0b9a\u0bbf\u0b9f\u0bcb\u0ba9\u0bbf\u0baf\u0bbe", "VU": "\u0bb5\u0ba9\u0bc1\u0bb5\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1", "VA": "\u0bb5\u0bbe\u0b9f\u0bbf\u0b95\u0ba9\u0bcd \u0ba8\u0b95\u0bb0\u0bae\u0bcd", "WF": "\u0bb5\u0bbe\u0bb2\u0bbf\u0bb8\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b83\u0baa\u0bc1\u0b9f\u0bc1\u0ba9\u0bbe", "VN": "\u0bb5\u0bbf\u0baf\u0b9f\u0bcd\u0ba8\u0bbe\u0bae\u0bcd", "VE": "\u0bb5\u0bc6\u0ba9\u0bbf\u0b9a\u0bc1\u0bb2\u0bbe", "JP": "\u0b9c\u0baa\u0bcd\u0baa\u0bbe\u0ba9\u0bcd", "JM": "\u0b9c\u0bae\u0bc8\u0b95\u0bbe", "ZM": "\u0b9c\u0bbe\u0bae\u0bcd\u0baa\u0bbf\u0baf\u0bbe", "GE": "\u0b9c\u0bbe\u0bb0\u0bcd\u0b9c\u0bbf\u0baf\u0bbe", "GI": "\u0b9c\u0bbf\u0baa\u0bcd\u0bb0\u0bbe\u0bb2\u0bcd\u0b9f\u0bb0\u0bcd", "DJ": "\u0b9c\u0bbf\u0baa\u0bcc\u0b9f\u0bcd\u0b9f\u0bbf", "ZW": "\u0b9c\u0bbf\u0bae\u0bcd\u0baa\u0bbe\u0baa\u0bcd\u0bb5\u0bc7", "DE": "\u0b9c\u0bc6\u0bb0\u0bcd\u0bae\u0ba9\u0bbf", "JO": "\u0b9c\u0bcb\u0bb0\u0bcd\u0b9f\u0bbe\u0ba9\u0bcd", "ES": "\u0bb8\u0bcd\u0baa\u0bc6\u0baf\u0bbf\u0ba9\u0bcd", "SK": "\u0bb8\u0bcd\u0bb2\u0bcb\u0bb5\u0bbe\u0b95\u0bbf\u0baf\u0bbe", "SI": "\u0bb8\u0bcd\u0bb2\u0bcb\u0bb5\u0bc7\u0ba9\u0bbf\u0baf\u0bbe", "SJ": "\u0bb8\u0bcd\u0bb5\u0bb2\u0bcd\u0baa\u0bbe\u0bb0\u0bcd\u0b9f\u0bc1 & \u0b9c\u0bbe\u0ba9\u0bcd \u0bae\u0bc7\u0baf\u0ba9\u0bcd", "CH": "\u0bb8\u0bcd\u0bb5\u0bbf\u0b9f\u0bcd\u0b9a\u0bb0\u0bcd\u0bb2\u0bbe\u0ba8\u0bcd\u0ba4\u0bc1", "SE": "\u0bb8\u0bcd\u0bb5\u0bc0\u0b9f\u0ba9\u0bcd", "HU": "\u0bb9\u0b99\u0bcd\u0b95\u0bc7\u0bb0\u0bbf", "HK": "\u0bb9\u0bbe\u0b99\u0bcd\u0b95\u0bbe\u0b99\u0bcd \u0b8e\u0bb8\u0bcd\u0b8f\u0b86\u0bb0\u0bcd \u0b9a\u0bc0\u0ba9\u0bbe", "HM": "\u0bb9\u0bc7\u0bb0\u0bcd\u0b9f\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0bae\u0bc6\u0b95\u0bcd\u0b9f\u0bca\u0ba9\u0bbe\u0bb2\u0bcd\u0b9f\u0bc1 \u0ba4\u0bc0\u0bb5\u0bc1\u0b95\u0bb3\u0bcd", "HT": "\u0bb9\u0bc8\u0b9f\u0bcd\u0b9f\u0bbf", "HN": "\u0bb9\u0bcb\u0ba3\u0bcd\u0b9f\u0bc2\u0bb0\u0bbe\u0bb8\u0bcd"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/tr.json000066400000000000000000000121301521174352300277030ustar00rootroot00000000000000{"VI": "ABD Virjin Adalar\u0131", "AF": "Afganistan", "AX": "\u00c5land Adalar\u0131", "DE": "Almanya", "US": "Amerika Birle\u015fik Devletleri", "AS": "Amerikan Samoas\u0131", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AQ": "Antarktika", "AG": "Antigua ve Barbuda", "AR": "Arjantin", "AL": "Arnavutluk", "AW": "Aruba", "AU": "Avustralya", "AT": "Avusturya", "AZ": "Azerbaycan", "BS": "Bahamalar", "BH": "Bahreyn", "BD": "Banglade\u015f", "BB": "Barbados", "EH": "Bat\u0131 Sahra", "BY": "Belarus", "BE": "Bel\u00e7ika", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "AE": "Birle\u015fik Arap Emirlikleri", "GB": "Birle\u015fik Krall\u0131k", "BO": "Bolivya", "BA": "Bosna-Hersek", "BW": "Botsvana", "BV": "Bouvet Adas\u0131", "BR": "Brezilya", "IO": "Britanya Hint Okyanusu Topraklar\u0131", "VG": "Britanya Virjin Adalar\u0131", "BN": "Brunei", "BG": "Bulgaristan", "BF": "Burkina Faso", "BI": "Burundi", "BT": "Butan", "CV": "Cape Verde", "KY": "Cayman Adalar\u0131", "GI": "Cebelitar\u0131k", "DZ": "Cezayir", "CX": "Christmas Adas\u0131", "DJ": "Cibuti", "CC": "Cocos (Keeling) Adalar\u0131", "CK": "Cook Adalar\u0131", "CI": "C\u00f4te d\u2019Ivoire", "CW": "Cura\u00e7ao", "TD": "\u00c7ad", "CZ": "\u00c7ekya", "CN": "\u00c7in", "HK": "\u00c7in Hong Kong \u00d6\u0130B", "MO": "\u00c7in Makao \u00d6\u0130B", "DK": "Danimarka", "DO": "Dominik Cumhuriyeti", "DM": "Dominika", "EC": "Ekvador", "GQ": "Ekvator Ginesi", "SV": "El Salvador", "ID": "Endonezya", "ER": "Eritre", "AM": "Ermenistan", "EE": "Estonya", "SZ": "Esvatini", "ET": "Etiyopya", "FK": "Falkland Adalar\u0131", "FO": "Faroe Adalar\u0131", "MA": "Fas", "FJ": "Fiji", "PH": "Filipinler", "FI": "Finlandiya", "FR": "Fransa", "GF": "Frans\u0131z Guyanas\u0131", "TF": "Frans\u0131z G\u00fcney Topraklar\u0131", "PF": "Frans\u0131z Polinezyas\u0131", "GA": "Gabon", "GM": "Gambiya", "GH": "Gana", "GN": "Gine", "GW": "Gine-Bissau", "GD": "Grenada", "GL": "Gr\u00f6nland", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GY": "Guyana", "ZA": "G\u00fcney Afrika", "GS": "G\u00fcney Georgia ve G\u00fcney Sandwich Adalar\u0131", "KR": "G\u00fcney Kore", "SS": "G\u00fcney Sudan", "GE": "G\u00fcrcistan", "HT": "Haiti", "HM": "Heard Adas\u0131 ve McDonald Adalar\u0131", "HR": "H\u0131rvatistan", "IN": "Hindistan", "NL": "Hollanda", "HN": "Honduras", "IQ": "Irak", "IR": "\u0130ran", "IE": "\u0130rlanda", "ES": "\u0130spanya", "IL": "\u0130srail", "SE": "\u0130sve\u00e7", "CH": "\u0130svi\u00e7re", "IT": "\u0130talya", "IS": "\u0130zlanda", "JM": "Jamaika", "JP": "Japonya", "KH": "Kambo\u00e7ya", "CM": "Kamerun", "CA": "Kanada", "ME": "Karada\u011f", "BQ": "Karayip Hollandas\u0131", "QA": "Katar", "KZ": "Kazakistan", "KE": "Kenya", "CY": "K\u0131br\u0131s", "KG": "K\u0131rg\u0131zistan", "KI": "Kiribati", "CO": "Kolombiya", "KM": "Komorlar", "CG": "Kongo - Brazavil", "CD": "Kongo - Kin\u015fasa", "CR": "Kosta Rika", "KW": "Kuveyt", "KP": "Kuzey Kore", "MK": "Kuzey Makedonya", "CU": "K\u00fcba", "LA": "Laos", "LS": "Lesotho", "LV": "Letonya", "LR": "Liberya", "LY": "Libya", "LI": "Liechtenstein", "LT": "Litvanya", "LB": "L\u00fcbnan", "LU": "L\u00fcksemburg", "HU": "Macaristan", "MG": "Madagaskar", "MW": "Malavi", "MV": "Maldivler", "MY": "Malezya", "ML": "Mali", "MT": "Malta", "IM": "Man Adas\u0131", "MQ": "Martinik", "MU": "Mauritius", "YT": "Mayotte", "MX": "Meksika", "EG": "M\u0131s\u0131r", "MN": "Mo\u011folistan", "MD": "Moldova", "MC": "Monako", "MS": "Montserrat", "MR": "Moritanya", "MZ": "Mozambik", "MM": "Myanmar (Burma)", "NA": "Namibya", "NR": "Nauru", "NP": "Nepal", "NE": "Nijer", "NG": "Nijerya", "NI": "Nikaragua", "NU": "Niue", "NF": "Norfolk Adas\u0131", "NO": "Norve\u00e7", "CF": "Orta Afrika Cumhuriyeti", "UZ": "\u00d6zbekistan", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua Yeni Gine", "PY": "Paraguay", "PE": "Peru", "PN": "Pitcairn Adalar\u0131", "PL": "Polonya", "PT": "Portekiz", "PR": "Porto Riko", "RE": "Reunion", "RO": "Romanya", "RW": "Ruanda", "RU": "Rusya", "BL": "Saint Barthelemy", "SH": "Saint Helena", "KN": "Saint Kitts ve Nevis", "LC": "Saint Lucia", "MF": "Saint Martin", "PM": "Saint Pierre ve Miquelon", "VC": "Saint Vincent ve Grenadinler", "WS": "Samoa", "SM": "San Marino", "ST": "Sao Tome ve Principe", "SN": "Senegal", "SC": "Sey\u015feller", "RS": "S\u0131rbistan", "SL": "Sierra Leone", "SG": "Singapur", "SX": "Sint Maarten", "SK": "Slovakya", "SI": "Slovenya", "SB": "Solomon Adalar\u0131", "SO": "Somali", "LK": "Sri Lanka", "SD": "Sudan", "SR": "Surinam", "SY": "Suriye", "SA": "Suudi Arabistan", "SJ": "Svalbard ve Jan Mayen", "CL": "\u015eili", "TJ": "Tacikistan", "TZ": "Tanzanya", "TH": "Tayland", "TW": "Tayvan", "TL": "Timor-Leste", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "TT": "Trinidad ve Tobago", "TN": "Tunus", "TC": "Turks ve Caicos Adalar\u0131", "TR": "T\u00fcrkiye", "TM": "T\u00fcrkmenistan", "UG": "Uganda", "UA": "Ukrayna", "OM": "Umman", "UY": "Uruguay", "JO": "\u00dcrd\u00fcn", "VU": "Vanuatu", "VA": "Vatikan", "VE": "Venezuela", "VN": "Vietnam", "WF": "Wallis ve Futuna", "YE": "Yemen", "NC": "Yeni Kaledonya", "NZ": "Yeni Zelanda", "GR": "Yunanistan", "ZM": "Zambiya", "ZW": "Zimbabve"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/uk.json000066400000000000000000000402631521174352300277050ustar00rootroot00000000000000{"AU": "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0456\u044f", "AT": "\u0410\u0432\u0441\u0442\u0440\u0456\u044f", "AZ": "\u0410\u0437\u0435\u0440\u0431\u0430\u0439\u0434\u0436\u0430\u043d", "AX": "\u0410\u043b\u0430\u043d\u0434\u0441\u044c\u043a\u0456 \u041e\u0441\u0442\u0440\u043e\u0432\u0438", "AL": "\u0410\u043b\u0431\u0430\u043d\u0456\u044f", "DZ": "\u0410\u043b\u0436\u0438\u0440", "AS": "\u0410\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u044c\u043a\u0435 \u0421\u0430\u043c\u043e\u0430", "AO": "\u0410\u043d\u0433\u043e\u043b\u0430", "AI": "\u0410\u043d\u0491\u0456\u043b\u044c\u044f", "AD": "\u0410\u043d\u0434\u043e\u0440\u0440\u0430", "AQ": "\u0410\u043d\u0442\u0430\u0440\u043a\u0442\u0438\u043a\u0430", "AG": "\u0410\u043d\u0442\u0438\u0491\u0443\u0430 \u0456 \u0411\u0430\u0440\u0431\u0443\u0434\u0430", "AR": "\u0410\u0440\u0433\u0435\u043d\u0442\u0438\u043d\u0430", "AW": "\u0410\u0440\u0443\u0431\u0430", "AF": "\u0410\u0444\u0433\u0430\u043d\u0456\u0441\u0442\u0430\u043d", "BS": "\u0411\u0430\u0433\u0430\u043c\u0441\u044c\u043a\u0456 \u041e\u0441\u0442\u0440\u043e\u0432\u0438", "BD": "\u0411\u0430\u043d\u0433\u043b\u0430\u0434\u0435\u0448", "BB": "\u0411\u0430\u0440\u0431\u0430\u0434\u043e\u0441", "BH": "\u0411\u0430\u0445\u0440\u0435\u0439\u043d", "BZ": "\u0411\u0435\u043b\u0456\u0437", "BE": "\u0411\u0435\u043b\u044c\u0491\u0456\u044f", "BJ": "\u0411\u0435\u043d\u0456\u043d", "BM": "\u0411\u0435\u0440\u043c\u0443\u0434\u0441\u044c\u043a\u0456 \u041e\u0441\u0442\u0440\u043e\u0432\u0438", "BY": "\u0411\u0456\u043b\u043e\u0440\u0443\u0441\u044c", "BG": "\u0411\u043e\u043b\u0433\u0430\u0440\u0456\u044f", "BO": "\u0411\u043e\u043b\u0456\u0432\u0456\u044f", "BA": "\u0411\u043e\u0441\u043d\u0456\u044f \u0456 \u0413\u0435\u0440\u0446\u0435\u0491\u043e\u0432\u0438\u043d\u0430", "BW": "\u0411\u043e\u0442\u0441\u0432\u0430\u043d\u0430", "BR": "\u0411\u0440\u0430\u0437\u0456\u043b\u0456\u044f", "IO": "\u0411\u0440\u0438\u0442\u0430\u043d\u0441\u044c\u043a\u0430 \u0442\u0435\u0440\u0438\u0442\u043e\u0440\u0456\u044f \u0432 \u0406\u043d\u0434\u0456\u0439\u0441\u044c\u043a\u043e\u043c\u0443 \u041e\u043a\u0435\u0430\u043d\u0456", "VG": "\u0411\u0440\u0438\u0442\u0430\u043d\u0441\u044c\u043a\u0456 \u0412\u0456\u0440\u0433\u0456\u043d\u0441\u044c\u043a\u0456 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "BN": "\u0411\u0440\u0443\u043d\u0435\u0439", "BF": "\u0411\u0443\u0440\u043a\u0456\u043d\u0430-\u0424\u0430\u0441\u043e", "BI": "\u0411\u0443\u0440\u0443\u043d\u0434\u0456", "BT": "\u0411\u0443\u0442\u0430\u043d", "VU": "\u0412\u0430\u043d\u0443\u0430\u0442\u0443", "VA": "\u0412\u0430\u0442\u0438\u043a\u0430\u043d", "GB": "\u0412\u0435\u043b\u0438\u043a\u0430 \u0411\u0440\u0438\u0442\u0430\u043d\u0456\u044f", "VE": "\u0412\u0435\u043d\u0435\u0441\u0443\u0435\u043b\u0430", "VI": "\u0412\u0456\u0440\u0433\u0456\u043d\u0441\u044c\u043a\u0456 \u043e\u0441\u0442\u0440\u043e\u0432\u0438, \u0421\u0428\u0410", "AM": "\u0412\u0456\u0440\u043c\u0435\u043d\u0456\u044f", "VN": "\u0412\u02bc\u0454\u0442\u043d\u0430\u043c", "GA": "\u0413\u0430\u0431\u043e\u043d", "HT": "\u0413\u0430\u0457\u0442\u0456", "GM": "\u0413\u0430\u043c\u0431\u0456\u044f", "GH": "\u0413\u0430\u043d\u0430", "GN": "\u0413\u0432\u0456\u043d\u0435\u044f", "GW": "\u0413\u0432\u0456\u043d\u0435\u044f-\u0411\u0456\u0441\u0430\u0443", "HN": "\u0413\u043e\u043d\u0434\u0443\u0440\u0430\u0441", "HK": "\u0413\u043e\u043d\u043a\u043e\u043d\u0433, \u041e.\u0410.\u0420. \u041a\u0438\u0442\u0430\u044e", "GR": "\u0413\u0440\u0435\u0446\u0456\u044f", "GE": "\u0413\u0440\u0443\u0437\u0456\u044f", "GY": "\u0490\u0430\u0439\u0430\u043d\u0430", "GP": "\u0490\u0432\u0430\u0434\u0435\u043b\u0443\u043f\u0430", "GT": "\u0490\u0432\u0430\u0442\u0435\u043c\u0430\u043b\u0430", "GG": "\u0490\u0435\u0440\u043d\u0441\u0456", "GI": "\u0490\u0456\u0431\u0440\u0430\u043b\u0442\u0430\u0440", "GD": "\u0490\u0440\u0435\u043d\u0430\u0434\u0430", "GL": "\u0490\u0440\u0435\u043d\u043b\u0430\u043d\u0434\u0456\u044f", "GU": "\u0490\u0443\u0430\u043c", "DK": "\u0414\u0430\u043d\u0456\u044f", "DJ": "\u0414\u0436\u0438\u0431\u0443\u0442\u0456", "DM": "\u0414\u043e\u043c\u0456\u043d\u0456\u043a\u0430", "DO": "\u0414\u043e\u043c\u0456\u043d\u0456\u043a\u0430\u043d\u0441\u044c\u043a\u0430 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0456\u043a\u0430", "EC": "\u0415\u043a\u0432\u0430\u0434\u043e\u0440", "GQ": "\u0415\u043a\u0432\u0430\u0442\u043e\u0440\u0456\u0430\u043b\u044c\u043d\u0430 \u0413\u0432\u0456\u043d\u0435\u044f", "ER": "\u0415\u0440\u0438\u0442\u0440\u0435\u044f", "SZ": "\u0415\u0441\u0432\u0430\u0442\u0456\u043d\u0456", "EE": "\u0415\u0441\u0442\u043e\u043d\u0456\u044f", "ET": "\u0415\u0444\u0456\u043e\u043f\u0456\u044f", "EG": "\u0404\u0433\u0438\u043f\u0435\u0442", "YE": "\u0404\u043c\u0435\u043d", "ZM": "\u0417\u0430\u043c\u0431\u0456\u044f", "EH": "\u0417\u0430\u0445\u0456\u0434\u043d\u0430 \u0421\u0430\u0445\u0430\u0440\u0430", "ZW": "\u0417\u0456\u043c\u0431\u0430\u0431\u0432\u0435", "IL": "\u0406\u0437\u0440\u0430\u0457\u043b\u044c", "IN": "\u0406\u043d\u0434\u0456\u044f", "ID": "\u0406\u043d\u0434\u043e\u043d\u0435\u0437\u0456\u044f", "IQ": "\u0406\u0440\u0430\u043a", "IR": "\u0406\u0440\u0430\u043d", "IE": "\u0406\u0440\u043b\u0430\u043d\u0434\u0456\u044f", "IS": "\u0406\u0441\u043b\u0430\u043d\u0434\u0456\u044f", "ES": "\u0406\u0441\u043f\u0430\u043d\u0456\u044f", "IT": "\u0406\u0442\u0430\u043b\u0456\u044f", "JO": "\u0419\u043e\u0440\u0434\u0430\u043d\u0456\u044f", "CV": "\u041a\u0430\u0431\u043e-\u0412\u0435\u0440\u0434\u0435", "KZ": "\u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d", "KY": "\u041a\u0430\u0439\u043c\u0430\u043d\u043e\u0432\u0456 \u041e\u0441\u0442\u0440\u043e\u0432\u0438", "KH": "\u041a\u0430\u043c\u0431\u043e\u0434\u0436\u0430", "CM": "\u041a\u0430\u043c\u0435\u0440\u0443\u043d", "CA": "\u041a\u0430\u043d\u0430\u0434\u0430", "QA": "\u041a\u0430\u0442\u0430\u0440", "KE": "\u041a\u0435\u043d\u0456\u044f", "KG": "\u041a\u0438\u0440\u0433\u0438\u0437\u0441\u0442\u0430\u043d", "CN": "\u041a\u0438\u0442\u0430\u0439", "CY": "\u041a\u0456\u043f\u0440", "KI": "\u041a\u0456\u0440\u0456\u0431\u0430\u0442\u0456", "CC": "\u041a\u043e\u043a\u043e\u0441\u043e\u0432\u0456 (\u041a\u0456\u043b\u0456\u043d\u0491) \u041e\u0441\u0442\u0440\u043e\u0432\u0438", "CO": "\u041a\u043e\u043b\u0443\u043c\u0431\u0456\u044f", "KM": "\u041a\u043e\u043c\u043e\u0440\u0438", "CG": "\u041a\u043e\u043d\u0433\u043e \u2013 \u0411\u0440\u0430\u0437\u0437\u0430\u0432\u0456\u043b\u044c", "CD": "\u041a\u043e\u043d\u0433\u043e \u2013 \u041a\u0456\u043d\u0448\u0430\u0441\u0430", "CR": "\u041a\u043e\u0441\u0442\u0430-\u0420\u0456\u043a\u0430", "CI": "\u041a\u043e\u0442-\u0434\u02bc\u0406\u0432\u0443\u0430\u0440", "CU": "\u041a\u0443\u0431\u0430", "KW": "\u041a\u0443\u0432\u0435\u0439\u0442", "CW": "\u041a\u044e\u0440\u0430\u0441\u0430\u043e", "LA": "\u041b\u0430\u043e\u0441", "LV": "\u041b\u0430\u0442\u0432\u0456\u044f", "LS": "\u041b\u0435\u0441\u043e\u0442\u043e", "LT": "\u041b\u0438\u0442\u0432\u0430", "LR": "\u041b\u0456\u0431\u0435\u0440\u0456\u044f", "LB": "\u041b\u0456\u0432\u0430\u043d", "LY": "\u041b\u0456\u0432\u0456\u044f", "LI": "\u041b\u0456\u0445\u0442\u0435\u043d\u0448\u0442\u0435\u0439\u043d", "LU": "\u041b\u044e\u043a\u0441\u0435\u043c\u0431\u0443\u0440\u0491", "MR": "\u041c\u0430\u0432\u0440\u0438\u0442\u0430\u043d\u0456\u044f", "MU": "\u041c\u0430\u0432\u0440\u0456\u043a\u0456\u0439", "MG": "\u041c\u0430\u0434\u0430\u0433\u0430\u0441\u043a\u0430\u0440", "YT": "\u041c\u0430\u0439\u043e\u0442\u0442\u0430", "MO": "\u041c\u0430\u043a\u0430\u043e, \u041e.\u0410.\u0420 \u041a\u0438\u0442\u0430\u044e", "MW": "\u041c\u0430\u043b\u0430\u0432\u0456", "MY": "\u041c\u0430\u043b\u0430\u0439\u0437\u0456\u044f", "ML": "\u041c\u0430\u043b\u0456", "MV": "\u041c\u0430\u043b\u044c\u0434\u0456\u0432\u0438", "MT": "\u041c\u0430\u043b\u044c\u0442\u0430", "MA": "\u041c\u0430\u0440\u043e\u043a\u043a\u043e", "MQ": "\u041c\u0430\u0440\u0442\u0456\u043d\u0456\u043a\u0430", "MX": "\u041c\u0435\u043a\u0441\u0438\u043a\u0430", "MZ": "\u041c\u043e\u0437\u0430\u043c\u0431\u0456\u043a", "MD": "\u041c\u043e\u043b\u0434\u043e\u0432\u0430", "MC": "\u041c\u043e\u043d\u0430\u043a\u043e", "MN": "\u041c\u043e\u043d\u0433\u043e\u043b\u0456\u044f", "MS": "\u041c\u043e\u043d\u0442\u0441\u0435\u0440\u0440\u0430\u0442", "MM": "\u041c\u02bc\u044f\u043d\u043c\u0430 (\u0411\u0456\u0440\u043c\u0430)", "NA": "\u041d\u0430\u043c\u0456\u0431\u0456\u044f", "NR": "\u041d\u0430\u0443\u0440\u0443", "NP": "\u041d\u0435\u043f\u0430\u043b", "NE": "\u041d\u0456\u0433\u0435\u0440", "NG": "\u041d\u0456\u0433\u0435\u0440\u0456\u044f", "NL": "\u041d\u0456\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u0438", "BQ": "\u041d\u0456\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u0441\u044c\u043a\u0456 \u041a\u0430\u0440\u0438\u0431\u0441\u044c\u043a\u0456 \u043e\u0441\u0442\u0440\u043e\u0432\u0438", "NI": "\u041d\u0456\u043a\u0430\u0440\u0430\u0491\u0443\u0430", "DE": "\u041d\u0456\u043c\u0435\u0447\u0447\u0438\u043d\u0430", "NU": "\u041d\u0456\u0443\u0435", "NZ": "\u041d\u043e\u0432\u0430 \u0417\u0435\u043b\u0430\u043d\u0434\u0456\u044f", "NC": "\u041d\u043e\u0432\u0430 \u041a\u0430\u043b\u0435\u0434\u043e\u043d\u0456\u044f", "NO": "\u041d\u043e\u0440\u0432\u0435\u0491\u0456\u044f", "AE": "\u041e\u0431\u02bc\u0454\u0434\u043d\u0430\u043d\u0456 \u0410\u0440\u0430\u0431\u0441\u044c\u043a\u0456 \u0415\u043c\u0456\u0440\u0430\u0442\u0438", "OM": "\u041e\u043c\u0430\u043d", "BV": "\u041e\u0441\u0442\u0440\u0456\u0432 \u0411\u0443\u0432\u0435", "IM": "\u041e\u0441\u0442\u0440\u0456\u0432 \u041c\u0435\u043d", "NF": "\u041e\u0441\u0442\u0440\u0456\u0432 \u041d\u043e\u0440\u0444\u043e\u043b\u043a", "CX": "\u041e\u0441\u0442\u0440\u0456\u0432 \u0420\u0456\u0437\u0434\u0432\u0430", "SH": "\u041e\u0441\u0442\u0440\u0456\u0432 \u0421\u0432\u044f\u0442\u043e\u0457 \u0404\u043b\u0435\u043d\u0438", "HM": "\u041e\u0441\u0442\u0440\u043e\u0432\u0438 \u0413\u0435\u0440\u0434 \u0456 \u041c\u0430\u043a\u0434\u043e\u043d\u0430\u043b\u0434", "CK": "\u041e\u0441\u0442\u0440\u043e\u0432\u0438 \u041a\u0443\u043a\u0430", "PN": "\u041e\u0441\u0442\u0440\u043e\u0432\u0438 \u041f\u0456\u0442\u043a\u0435\u0440\u043d", "TC": "\u041e\u0441\u0442\u0440\u043e\u0432\u0438 \u0422\u0435\u0440\u043a\u0441 \u0456 \u041a\u0430\u0439\u043a\u043e\u0441", "PK": "\u041f\u0430\u043a\u0438\u0441\u0442\u0430\u043d", "PW": "\u041f\u0430\u043b\u0430\u0443", "PA": "\u041f\u0430\u043d\u0430\u043c\u0430", "PG": "\u041f\u0430\u043f\u0443\u0430-\u041d\u043e\u0432\u0430 \u0490\u0432\u0456\u043d\u0435\u044f", "PY": "\u041f\u0430\u0440\u0430\u0491\u0432\u0430\u0439", "PE": "\u041f\u0435\u0440\u0443", "GS": "\u041f\u0456\u0432\u0434\u0435\u043d\u043d\u0430 \u0414\u0436\u043e\u0440\u0434\u0436\u0456\u044f \u0442\u0430 \u041f\u0456\u0432\u0434\u0435\u043d\u043d\u0456 \u0421\u0430\u043d\u0434\u0432\u0456\u0447\u0435\u0432\u0456 \u041e\u0441\u0442\u0440\u043e\u0432\u0438", "KR": "\u041f\u0456\u0432\u0434\u0435\u043d\u043d\u0430 \u041a\u043e\u0440\u0435\u044f", "SS": "\u041f\u0456\u0432\u0434\u0435\u043d\u043d\u0438\u0439 \u0421\u0443\u0434\u0430\u043d", "ZA": "\u041f\u0456\u0432\u0434\u0435\u043d\u043d\u043e-\u0410\u0444\u0440\u0438\u043a\u0430\u043d\u0441\u044c\u043a\u0430 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0456\u043a\u0430", "KP": "\u041f\u0456\u0432\u043d\u0456\u0447\u043d\u0430 \u041a\u043e\u0440\u0435\u044f", "MK": "\u041f\u0456\u0432\u043d\u0456\u0447\u043d\u0430 \u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0456\u044f", "PL": "\u041f\u043e\u043b\u044c\u0449\u0430", "PT": "\u041f\u043e\u0440\u0442\u0443\u0491\u0430\u043b\u0456\u044f", "PR": "\u041f\u0443\u0435\u0440\u0442\u043e-\u0420\u0456\u043a\u043e", "RE": "\u0420\u0435\u044e\u043d\u044c\u0439\u043e\u043d", "RU": "\u0420\u043e\u0441\u0456\u044f", "RW": "\u0420\u0443\u0430\u043d\u0434\u0430", "RO": "\u0420\u0443\u043c\u0443\u043d\u0456\u044f", "SV": "\u0421\u0430\u043b\u044c\u0432\u0430\u0434\u043e\u0440", "WS": "\u0421\u0430\u043c\u043e\u0430", "SM": "\u0421\u0430\u043d-\u041c\u0430\u0440\u0456\u043d\u043e", "ST": "\u0421\u0430\u043d-\u0422\u043e\u043c\u0435 \u0456 \u041f\u0440\u0456\u043d\u0441\u0456\u043f\u0456", "SA": "\u0421\u0430\u0443\u0434\u0456\u0432\u0441\u044c\u043a\u0430 \u0410\u0440\u0430\u0432\u0456\u044f", "SC": "\u0421\u0435\u0439\u0448\u0435\u043b\u044c\u0441\u044c\u043a\u0456 \u041e\u0441\u0442\u0440\u043e\u0432\u0438", "BL": "\u0421\u0435\u043d-\u0411\u0430\u0440\u0442\u0435\u043b\u044c\u043c\u0456", "MF": "\u0421\u0435\u043d-\u041c\u0430\u0440\u0442\u0435\u043d", "PM": "\u0421\u0435\u043d-\u041f\u02bc\u0454\u0440 \u0456 \u041c\u0456\u043a\u0435\u043b\u043e\u043d", "SN": "\u0421\u0435\u043d\u0435\u0433\u0430\u043b", "VC": "\u0421\u0435\u043d\u0442-\u0412\u0456\u043d\u0441\u0435\u043d\u0442 \u0456 \u0490\u0440\u0435\u043d\u0430\u0434\u0456\u043d\u0438", "KN": "\u0421\u0435\u043d\u0442-\u041a\u0456\u0442\u0441 \u0456 \u041d\u0435\u0432\u0456\u0441", "LC": "\u0421\u0435\u043d\u0442-\u041b\u044e\u0441\u0456\u044f", "RS": "\u0421\u0435\u0440\u0431\u0456\u044f", "SY": "\u0421\u0438\u0440\u0456\u044f", "SG": "\u0421\u0456\u043d\u0433\u0430\u043f\u0443\u0440", "SX": "\u0421\u0456\u043d\u0442-\u041c\u0430\u0440\u0442\u0435\u043d", "SK": "\u0421\u043b\u043e\u0432\u0430\u0447\u0447\u0438\u043d\u0430", "SI": "\u0421\u043b\u043e\u0432\u0435\u043d\u0456\u044f", "SB": "\u0421\u043e\u043b\u043e\u043c\u043e\u043d\u043e\u0432\u0456 \u041e\u0441\u0442\u0440\u043e\u0432\u0438", "SO": "\u0421\u043e\u043c\u0430\u043b\u0456", "US": "\u0421\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0456 \u0428\u0442\u0430\u0442\u0438", "SD": "\u0421\u0443\u0434\u0430\u043d", "SR": "\u0421\u0443\u0440\u0456\u043d\u0430\u043c", "SL": "\u0421\u044c\u0454\u0440\u0440\u0430-\u041b\u0435\u043e\u043d\u0435", "TJ": "\u0422\u0430\u0434\u0436\u0438\u043a\u0438\u0441\u0442\u0430\u043d", "TH": "\u0422\u0430\u0457\u043b\u0430\u043d\u0434", "TW": "\u0422\u0430\u0439\u0432\u0430\u043d\u044c", "TZ": "\u0422\u0430\u043d\u0437\u0430\u043d\u0456\u044f", "TL": "\u0422\u0456\u043c\u043e\u0440-\u041b\u0435\u0448\u0442\u0456", "TG": "\u0422\u043e\u0433\u043e", "TK": "\u0422\u043e\u043a\u0435\u043b\u0430\u0443", "TO": "\u0422\u043e\u043d\u0491\u0430", "TT": "\u0422\u0440\u0456\u043d\u0456\u0434\u0430\u0434 \u0456 \u0422\u043e\u0431\u0430\u0491\u043e", "TN": "\u0422\u0443\u043d\u0456\u0441", "TR": "\u0422\u0443\u0440\u0435\u0447\u0447\u0438\u043d\u0430", "TM": "\u0422\u0443\u0440\u043a\u043c\u0435\u043d\u0456\u0441\u0442\u0430\u043d", "UG": "\u0423\u0433\u0430\u043d\u0434\u0430", "HU": "\u0423\u0433\u043e\u0440\u0449\u0438\u043d\u0430", "UZ": "\u0423\u0437\u0431\u0435\u043a\u0438\u0441\u0442\u0430\u043d", "UA": "\u0423\u043a\u0440\u0430\u0457\u043d\u0430", "WF": "\u0423\u043e\u043b\u043b\u0456\u0441 \u0456 \u0424\u0443\u0442\u0443\u043d\u0430", "UY": "\u0423\u0440\u0443\u0491\u0432\u0430\u0439", "FO": "\u0424\u0430\u0440\u0435\u0440\u0441\u044c\u043a\u0456 \u041e\u0441\u0442\u0440\u043e\u0432\u0438", "FJ": "\u0424\u0456\u0434\u0436\u0456", "PH": "\u0424\u0456\u043b\u0456\u043f\u043f\u0456\u043d\u0438", "FI": "\u0424\u0456\u043d\u043b\u044f\u043d\u0434\u0456\u044f", "FK": "\u0424\u043e\u043b\u043a\u043b\u0435\u043d\u0434\u0441\u044c\u043a\u0456 \u041e\u0441\u0442\u0440\u043e\u0432\u0438", "FR": "\u0424\u0440\u0430\u043d\u0446\u0456\u044f", "GF": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u044c\u043a\u0430 \u0490\u0432\u0456\u0430\u043d\u0430", "PF": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u044c\u043a\u0430 \u041f\u043e\u043b\u0456\u043d\u0435\u0437\u0456\u044f", "TF": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u044c\u043a\u0456 \u041f\u0456\u0432\u0434\u0435\u043d\u043d\u0456 \u0422\u0435\u0440\u0438\u0442\u043e\u0440\u0456\u0457", "HR": "\u0425\u043e\u0440\u0432\u0430\u0442\u0456\u044f", "CF": "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0430\u0444\u0440\u0438\u043a\u0430\u043d\u0441\u044c\u043a\u0430 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0456\u043a\u0430", "TD": "\u0427\u0430\u0434", "CZ": "\u0427\u0435\u0445\u0456\u044f", "CL": "\u0427\u0456\u043b\u0456", "ME": "\u0427\u043e\u0440\u043d\u043e\u0433\u043e\u0440\u0456\u044f", "CH": "\u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0456\u044f", "SE": "\u0428\u0432\u0435\u0446\u0456\u044f", "SJ": "\u0428\u043f\u0456\u0446\u0431\u0435\u0440\u0433\u0435\u043d \u0442\u0430 \u042f\u043d-\u041c\u0430\u0454\u043d", "LK": "\u0428\u0440\u0456-\u041b\u0430\u043d\u043a\u0430", "JM": "\u042f\u043c\u0430\u0439\u043a\u0430", "JP": "\u042f\u043f\u043e\u043d\u0456\u044f"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/vi.json000066400000000000000000000127121521174352300277020ustar00rootroot00000000000000{"SA": "\u1ea2 R\u1eadp X\u00ea-\u00fat", "AF": "Afghanistan", "EG": "Ai C\u1eadp", "AL": "Albania", "DZ": "Algeria", "AD": "Andorra", "AO": "Angola", "AI": "Anguilla", "AG": "Antigua v\u00e0 Barbuda", "AT": "\u00c1o", "AR": "Argentina", "AM": "Armenia", "AW": "Aruba", "AU": "Australia", "AZ": "Azerbaijan", "IN": "\u1ea4n \u0110\u1ed9", "PL": "Ba Lan", "BS": "Bahamas", "BH": "Bahrain", "BD": "Bangladesh", "BB": "Barbados", "MK": "B\u1eafc Macedonia", "BY": "Belarus", "BZ": "Belize", "BJ": "Benin", "BM": "Bermuda", "BT": "Bhutan", "BE": "B\u1ec9", "BO": "Bolivia", "BA": "Bosnia v\u00e0 Herzegovina", "BW": "Botswana", "PT": "B\u1ed3 \u0110\u00e0o Nha", "BR": "Brazil", "BN": "Brunei", "BG": "Bulgaria", "BF": "Burkina Faso", "BI": "Burundi", "BQ": "Ca-ri-b\u00ea H\u00e0 Lan", "AE": "C\u00e1c Ti\u1ec3u V\u01b0\u01a1ng qu\u1ed1c \u1ea2 R\u1eadp Th\u1ed1ng nh\u1ea5t", "CM": "Cameroon", "KH": "Campuchia", "CA": "Canada", "CV": "Cape Verde", "TD": "Chad", "CL": "Chile", "CO": "Colombia", "KM": "Comoros", "CG": "Congo - Brazzaville", "CD": "Congo - Kinshasa", "CR": "Costa Rica", "DO": "C\u1ed9ng h\u00f2a Dominica", "CF": "C\u1ed9ng h\u00f2a Trung Phi", "CI": "C\u00f4te d\u2019Ivoire", "HR": "Croatia", "CU": "Cuba", "CW": "Cura\u00e7ao", "DJ": "Djibouti", "DM": "Dominica", "TW": "\u0110\u00e0i Loan", "DK": "\u0110an M\u1ea1ch", "BV": "\u0110\u1ea3o Bouvet", "CX": "\u0110\u1ea3o Gi\u00e1ng Sinh", "IM": "\u0110\u1ea3o Man", "NF": "\u0110\u1ea3o Norfolk", "DE": "\u0110\u1ee9c", "EC": "Ecuador", "SV": "El Salvador", "ER": "Eritrea", "EE": "Estonia", "ET": "Ethiopia", "FJ": "Fiji", "GA": "Gabon", "GM": "Gambia", "GE": "Georgia", "GH": "Ghana", "GI": "Gibraltar", "GL": "Greenland", "GD": "Grenada", "GP": "Guadeloupe", "GU": "Guam", "GT": "Guatemala", "GG": "Guernsey", "GF": "Guiana thu\u1ed9c Ph\u00e1p", "GN": "Guinea", "GQ": "Guinea X\u00edch \u0110\u1ea1o", "GW": "Guinea-Bissau", "GY": "Guyana", "NL": "H\u00e0 Lan", "HT": "Haiti", "KR": "H\u00e0n Qu\u1ed1c", "US": "Hoa K\u1ef3", "HN": "Honduras", "HK": "H\u1ed3ng K\u00f4ng, Trung Qu\u1ed1c", "HU": "Hungary", "GR": "Hy L\u1ea1p", "IS": "Iceland", "ID": "Indonesia", "IR": "Iran", "IQ": "Iraq", "IE": "Ireland", "IL": "Israel", "IT": "Italy", "JM": "Jamaica", "JO": "Jordan", "KZ": "Kazakhstan", "KE": "Kenya", "KI": "Kiribati", "KW": "Kuwait", "KG": "Kyrgyzstan", "IO": "L\u00e3nh th\u1ed5 \u1ea4n \u0110\u1ed9 D\u01b0\u01a1ng thu\u1ed9c Anh", "TF": "L\u00e3nh th\u1ed5 ph\u00eda Nam Thu\u1ed9c Ph\u00e1p", "LA": "L\u00e0o", "LV": "Latvia", "LS": "Lesotho", "LB": "Li-b\u0103ng", "LR": "Liberia", "LY": "Libya", "LI": "Liechtenstein", "LT": "Litva", "LU": "Luxembourg", "MA": "Ma-r\u1ed1c", "MO": "Macao, Trung Qu\u1ed1c", "MG": "Madagascar", "MW": "Malawi", "MY": "Malaysia", "MV": "Maldives", "ML": "Mali", "MT": "Malta", "MQ": "Martinique", "MR": "Mauritania", "MU": "Mauritius", "YT": "Mayotte", "MX": "Mexico", "MD": "Moldova", "MC": "Monaco", "ME": "Montenegro", "MS": "Montserrat", "MZ": "Mozambique", "MN": "M\u00f4ng C\u1ed5", "MM": "Myanmar (Mi\u1ebfn \u0110i\u1ec7n)", "NO": "Na Uy", "AQ": "Nam C\u1ef1c", "GS": "Nam Georgia & Qu\u1ea7n \u0111\u1ea3o Nam Sandwich", "ZA": "Nam Phi", "SS": "Nam Sudan", "NA": "Namibia", "NR": "Nauru", "NP": "Nepal", "NC": "New Caledonia", "NZ": "New Zealand", "RU": "Nga", "JP": "Nh\u1eadt B\u1ea3n", "NI": "Nicaragua", "NE": "Niger", "NG": "Nigeria", "NU": "Niue", "OM": "Oman", "PK": "Pakistan", "PW": "Palau", "PA": "Panama", "PG": "Papua New Guinea", "PY": "Paraguay", "PE": "Peru", "FR": "Ph\u00e1p", "FI": "Ph\u1ea7n Lan", "PH": "Philippines", "PF": "Polynesia thu\u1ed9c Ph\u00e1p", "PR": "Puerto Rico", "QA": "Qatar", "AX": "Qu\u1ea7n \u0111\u1ea3o \u00c5land", "KY": "Qu\u1ea7n \u0111\u1ea3o Cayman", "CC": "Qu\u1ea7n \u0111\u1ea3o Cocos (Keeling)", "CK": "Qu\u1ea7n \u0111\u1ea3o Cook", "FK": "Qu\u1ea7n \u0111\u1ea3o Falkland", "FO": "Qu\u1ea7n \u0111\u1ea3o Faroe", "HM": "Qu\u1ea7n \u0111\u1ea3o Heard v\u00e0 McDonald", "PN": "Qu\u1ea7n \u0111\u1ea3o Pitcairn", "SB": "Qu\u1ea7n \u0111\u1ea3o Solomon", "TC": "Qu\u1ea7n \u0111\u1ea3o Turks v\u00e0 Caicos", "VG": "Qu\u1ea7n \u0111\u1ea3o Virgin thu\u1ed9c Anh", "VI": "Qu\u1ea7n \u0111\u1ea3o Virgin thu\u1ed9c M\u1ef9", "RE": "R\u00e9union", "RO": "Romania", "RW": "Rwanda", "PM": "Saint Pierre v\u00e0 Miquelon", "WS": "Samoa", "AS": "Samoa thu\u1ed9c M\u1ef9", "SM": "San Marino", "ST": "S\u00e3o Tom\u00e9 v\u00e0 Pr\u00edncipe", "CZ": "S\u00e9c", "SN": "Senegal", "RS": "Serbia", "SC": "Seychelles", "SL": "Sierra Leone", "SG": "Singapore", "SX": "Sint Maarten", "CY": "S\u00edp", "SK": "Slovakia", "SI": "Slovenia", "SO": "Somalia", "LK": "Sri Lanka", "BL": "St. Barth\u00e9lemy", "SH": "St. Helena", "KN": "St. Kitts v\u00e0 Nevis", "LC": "St. Lucia", "MF": "St. Martin", "VC": "St. Vincent v\u00e0 Grenadines", "SD": "Sudan", "SR": "Suriname", "SJ": "Svalbard v\u00e0 Jan Mayen", "SZ": "Swaziland", "SY": "Syria", "TJ": "Tajikistan", "TZ": "Tanzania", "ES": "T\u00e2y Ban Nha", "EH": "T\u00e2y Sahara", "TH": "Th\u00e1i Lan", "VA": "Th\u00e0nh Vatican", "TR": "Th\u1ed5 Nh\u0129 K\u1ef3", "SE": "Th\u1ee5y \u0110i\u1ec3n", "CH": "Th\u1ee5y S\u0129", "TL": "Timor-Leste", "TG": "Togo", "TK": "Tokelau", "TO": "Tonga", "KP": "Tri\u1ec1u Ti\u00ean", "TT": "Trinidad v\u00e0 Tobago", "CN": "Trung Qu\u1ed1c", "TN": "Tunisia", "TM": "Turkmenistan", "UG": "Uganda", "UA": "Ukraina", "UY": "Uruguay", "UZ": "Uzbekistan", "VU": "Vanuatu", "VE": "Venezuela", "VN": "Vi\u1ec7t Nam", "GB": "V\u01b0\u01a1ng qu\u1ed1c Anh", "WF": "Wallis v\u00e0 Futuna", "YE": "Yemen", "ZM": "Zambia", "ZW": "Zimbabwe"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/zh_Hans.json000066400000000000000000000174121521174352300306600ustar00rootroot00000000000000{"AL": "\u963f\u5c14\u5df4\u5c3c\u4e9a", "DZ": "\u963f\u5c14\u53ca\u5229\u4e9a", "AF": "\u963f\u5bcc\u6c57", "AR": "\u963f\u6839\u5ef7", "AE": "\u963f\u62c9\u4f2f\u8054\u5408\u914b\u957f\u56fd", "AW": "\u963f\u9c81\u5df4", "OM": "\u963f\u66fc", "AZ": "\u963f\u585e\u62dc\u7586", "EG": "\u57c3\u53ca", "ET": "\u57c3\u585e\u4fc4\u6bd4\u4e9a", "IE": "\u7231\u5c14\u5170", "EE": "\u7231\u6c99\u5c3c\u4e9a", "AD": "\u5b89\u9053\u5c14", "AO": "\u5b89\u54e5\u62c9", "AI": "\u5b89\u572d\u62c9", "AG": "\u5b89\u63d0\u74dc\u548c\u5df4\u5e03\u8fbe", "AT": "\u5965\u5730\u5229", "AX": "\u5965\u5170\u7fa4\u5c9b", "AU": "\u6fb3\u5927\u5229\u4e9a", "BB": "\u5df4\u5df4\u591a\u65af", "PG": "\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a", "BS": "\u5df4\u54c8\u9a6c", "PK": "\u5df4\u57fa\u65af\u5766", "PY": "\u5df4\u62c9\u572d", "BH": "\u5df4\u6797", "PA": "\u5df4\u62ff\u9a6c", "BR": "\u5df4\u897f", "BY": "\u767d\u4fc4\u7f57\u65af", "BM": "\u767e\u6155\u5927", "BG": "\u4fdd\u52a0\u5229\u4e9a", "MK": "\u5317\u9a6c\u5176\u987f", "BJ": "\u8d1d\u5b81", "BE": "\u6bd4\u5229\u65f6", "IS": "\u51b0\u5c9b", "PR": "\u6ce2\u591a\u9ece\u5404", "PL": "\u6ce2\u5170", "BA": "\u6ce2\u65af\u5c3c\u4e9a\u548c\u9ed1\u585e\u54e5\u7ef4\u90a3", "BO": "\u73bb\u5229\u7ef4\u4e9a", "BZ": "\u4f2f\u5229\u5179", "BW": "\u535a\u8328\u74e6\u7eb3", "BT": "\u4e0d\u4e39", "BF": "\u5e03\u57fa\u7eb3\u6cd5\u7d22", "BI": "\u5e03\u9686\u8fea", "BV": "\u5e03\u97e6\u5c9b", "KP": "\u671d\u9c9c", "GQ": "\u8d64\u9053\u51e0\u5185\u4e9a", "DK": "\u4e39\u9ea6", "DE": "\u5fb7\u56fd", "TL": "\u4e1c\u5e1d\u6c76", "TG": "\u591a\u54e5", "DO": "\u591a\u7c73\u5c3c\u52a0\u5171\u548c\u56fd", "DM": "\u591a\u7c73\u5c3c\u514b", "RU": "\u4fc4\u7f57\u65af", "EC": "\u5384\u74dc\u591a\u5c14", "ER": "\u5384\u7acb\u7279\u91cc\u4e9a", "FR": "\u6cd5\u56fd", "FO": "\u6cd5\u7f57\u7fa4\u5c9b", "PF": "\u6cd5\u5c5e\u6ce2\u5229\u5c3c\u897f\u4e9a", "GF": "\u6cd5\u5c5e\u572d\u4e9a\u90a3", "TF": "\u6cd5\u5c5e\u5357\u90e8\u9886\u5730", "MF": "\u6cd5\u5c5e\u5723\u9a6c\u4e01", "VA": "\u68b5\u8482\u5188", "PH": "\u83f2\u5f8b\u5bbe", "FJ": "\u6590\u6d4e", "FI": "\u82ac\u5170", "CV": "\u4f5b\u5f97\u89d2", "FK": "\u798f\u514b\u5170\u7fa4\u5c9b", "GM": "\u5188\u6bd4\u4e9a", "CG": "\u521a\u679c\uff08\u5e03\uff09", "CD": "\u521a\u679c\uff08\u91d1\uff09", "CO": "\u54e5\u4f26\u6bd4\u4e9a", "CR": "\u54e5\u65af\u8fbe\u9ece\u52a0", "GD": "\u683c\u6797\u7eb3\u8fbe", "GL": "\u683c\u9675\u5170", "GE": "\u683c\u9c81\u5409\u4e9a", "GG": "\u6839\u897f\u5c9b", "CU": "\u53e4\u5df4", "GP": "\u74dc\u5fb7\u7f57\u666e", "GU": "\u5173\u5c9b", "GY": "\u572d\u4e9a\u90a3", "KZ": "\u54c8\u8428\u514b\u65af\u5766", "HT": "\u6d77\u5730", "KR": "\u97e9\u56fd", "NL": "\u8377\u5170", "BQ": "\u8377\u5c5e\u52a0\u52d2\u6bd4\u533a", "SX": "\u8377\u5c5e\u5723\u9a6c\u4e01", "HM": "\u8d6b\u5fb7\u5c9b\u548c\u9ea6\u514b\u5510\u7eb3\u7fa4\u5c9b", "ME": "\u9ed1\u5c71", "HN": "\u6d2a\u90fd\u62c9\u65af", "KI": "\u57fa\u91cc\u5df4\u65af", "DJ": "\u5409\u5e03\u63d0", "KG": "\u5409\u5c14\u5409\u65af\u65af\u5766", "GN": "\u51e0\u5185\u4e9a", "GW": "\u51e0\u5185\u4e9a\u6bd4\u7ecd", "CA": "\u52a0\u62ff\u5927", "GH": "\u52a0\u7eb3", "GA": "\u52a0\u84ec", "KH": "\u67ec\u57d4\u5be8", "CZ": "\u6377\u514b", "ZW": "\u6d25\u5df4\u5e03\u97e6", "CM": "\u5580\u9ea6\u9686", "QA": "\u5361\u5854\u5c14", "KY": "\u5f00\u66fc\u7fa4\u5c9b", "CC": "\u79d1\u79d1\u65af\uff08\u57fa\u6797\uff09\u7fa4\u5c9b", "KM": "\u79d1\u6469\u7f57", "CI": "\u79d1\u7279\u8fea\u74e6", "KW": "\u79d1\u5a01\u7279", "HR": "\u514b\u7f57\u5730\u4e9a", "KE": "\u80af\u5c3c\u4e9a", "CK": "\u5e93\u514b\u7fa4\u5c9b", "CW": "\u5e93\u62c9\u7d22", "LV": "\u62c9\u8131\u7ef4\u4e9a", "LS": "\u83b1\u7d22\u6258", "LA": "\u8001\u631d", "LB": "\u9ece\u5df4\u5ae9", "LT": "\u7acb\u9676\u5b9b", "LR": "\u5229\u6bd4\u91cc\u4e9a", "LY": "\u5229\u6bd4\u4e9a", "LI": "\u5217\u652f\u6566\u58eb\u767b", "RE": "\u7559\u5c3c\u6c6a", "LU": "\u5362\u68ee\u5821", "RW": "\u5362\u65fa\u8fbe", "RO": "\u7f57\u9a6c\u5c3c\u4e9a", "MG": "\u9a6c\u8fbe\u52a0\u65af\u52a0", "IM": "\u9a6c\u6069\u5c9b", "MV": "\u9a6c\u5c14\u4ee3\u592b", "MT": "\u9a6c\u8033\u4ed6", "MW": "\u9a6c\u62c9\u7ef4", "MY": "\u9a6c\u6765\u897f\u4e9a", "ML": "\u9a6c\u91cc", "MQ": "\u9a6c\u63d0\u5c3c\u514b", "YT": "\u9a6c\u7ea6\u7279", "MU": "\u6bdb\u91cc\u6c42\u65af", "MR": "\u6bdb\u91cc\u5854\u5c3c\u4e9a", "US": "\u7f8e\u56fd", "AS": "\u7f8e\u5c5e\u8428\u6469\u4e9a", "VI": "\u7f8e\u5c5e\u7ef4\u5c14\u4eac\u7fa4\u5c9b", "MN": "\u8499\u53e4", "MS": "\u8499\u7279\u585e\u62c9\u7279", "BD": "\u5b5f\u52a0\u62c9\u56fd", "PE": "\u79d8\u9c81", "MM": "\u7f05\u7538", "MD": "\u6469\u5c14\u591a\u74e6", "MA": "\u6469\u6d1b\u54e5", "MC": "\u6469\u7eb3\u54e5", "MZ": "\u83ab\u6851\u6bd4\u514b", "MX": "\u58a8\u897f\u54e5", "NA": "\u7eb3\u7c73\u6bd4\u4e9a", "ZA": "\u5357\u975e", "AQ": "\u5357\u6781\u6d32", "GS": "\u5357\u4e54\u6cbb\u4e9a\u548c\u5357\u6851\u5a01\u5947\u7fa4\u5c9b", "SS": "\u5357\u82cf\u4e39", "NR": "\u7459\u9c81", "NI": "\u5c3c\u52a0\u62c9\u74dc", "NP": "\u5c3c\u6cca\u5c14", "NE": "\u5c3c\u65e5\u5c14", "NG": "\u5c3c\u65e5\u5229\u4e9a", "NU": "\u7ebd\u57c3", "NO": "\u632a\u5a01", "NF": "\u8bfa\u798f\u514b\u5c9b", "PW": "\u5e15\u52b3", "PN": "\u76ae\u7279\u51ef\u6069\u7fa4\u5c9b", "PT": "\u8461\u8404\u7259", "JP": "\u65e5\u672c", "SE": "\u745e\u5178", "CH": "\u745e\u58eb", "SV": "\u8428\u5c14\u74e6\u591a", "WS": "\u8428\u6469\u4e9a", "RS": "\u585e\u5c14\u7ef4\u4e9a", "SL": "\u585e\u62c9\u5229\u6602", "SN": "\u585e\u5185\u52a0\u5c14", "CY": "\u585e\u6d66\u8def\u65af", "SC": "\u585e\u820c\u5c14", "SA": "\u6c99\u7279\u963f\u62c9\u4f2f", "BL": "\u5723\u5df4\u6cf0\u52d2\u7c73", "CX": "\u5723\u8bde\u5c9b", "ST": "\u5723\u591a\u7f8e\u548c\u666e\u6797\u897f\u6bd4", "SH": "\u5723\u8d6b\u52d2\u62ff", "KN": "\u5723\u57fa\u8328\u548c\u5c3c\u7ef4\u65af", "LC": "\u5723\u5362\u897f\u4e9a", "SM": "\u5723\u9a6c\u529b\u8bfa", "PM": "\u5723\u76ae\u57c3\u5c14\u548c\u5bc6\u514b\u9686\u7fa4\u5c9b", "VC": "\u5723\u6587\u68ee\u7279\u548c\u683c\u6797\u7eb3\u4e01\u65af", "LK": "\u65af\u91cc\u5170\u5361", "SK": "\u65af\u6d1b\u4f10\u514b", "SI": "\u65af\u6d1b\u6587\u5c3c\u4e9a", "SJ": "\u65af\u74e6\u5c14\u5df4\u548c\u626c\u9a6c\u5ef6", "SZ": "\u65af\u5a01\u58eb\u5170", "SD": "\u82cf\u4e39", "SR": "\u82cf\u91cc\u5357", "SB": "\u6240\u7f57\u95e8\u7fa4\u5c9b", "SO": "\u7d22\u9a6c\u91cc", "TJ": "\u5854\u5409\u514b\u65af\u5766", "TW": "\u53f0\u6e7e", "TH": "\u6cf0\u56fd", "TZ": "\u5766\u6851\u5c3c\u4e9a", "TO": "\u6c64\u52a0", "TC": "\u7279\u514b\u65af\u548c\u51ef\u79d1\u65af\u7fa4\u5c9b", "TT": "\u7279\u7acb\u5c3c\u8fbe\u548c\u591a\u5df4\u54e5", "TN": "\u7a81\u5c3c\u65af", "TR": "\u571f\u8033\u5176", "TM": "\u571f\u5e93\u66fc\u65af\u5766", "TK": "\u6258\u514b\u52b3", "WF": "\u74e6\u5229\u65af\u548c\u5bcc\u56fe\u7eb3", "VU": "\u74e6\u52aa\u963f\u56fe", "GT": "\u5371\u5730\u9a6c\u62c9", "VE": "\u59d4\u5185\u745e\u62c9", "BN": "\u6587\u83b1", "UG": "\u4e4c\u5e72\u8fbe", "UA": "\u4e4c\u514b\u5170", "UY": "\u4e4c\u62c9\u572d", "UZ": "\u4e4c\u5179\u522b\u514b\u65af\u5766", "ES": "\u897f\u73ed\u7259", "EH": "\u897f\u6492\u54c8\u62c9", "GR": "\u5e0c\u814a", "SG": "\u65b0\u52a0\u5761", "NC": "\u65b0\u5580\u91cc\u591a\u5c3c\u4e9a", "NZ": "\u65b0\u897f\u5170", "HU": "\u5308\u7259\u5229", "SY": "\u53d9\u5229\u4e9a", "JM": "\u7259\u4e70\u52a0", "AM": "\u4e9a\u7f8e\u5c3c\u4e9a", "YE": "\u4e5f\u95e8", "IQ": "\u4f0a\u62c9\u514b", "IR": "\u4f0a\u6717", "IL": "\u4ee5\u8272\u5217", "IT": "\u610f\u5927\u5229", "IN": "\u5370\u5ea6", "ID": "\u5370\u5ea6\u5c3c\u897f\u4e9a", "GB": "\u82f1\u56fd", "VG": "\u82f1\u5c5e\u7ef4\u5c14\u4eac\u7fa4\u5c9b", "IO": "\u82f1\u5c5e\u5370\u5ea6\u6d0b\u9886\u5730", "JO": "\u7ea6\u65e6", "VN": "\u8d8a\u5357", "ZM": "\u8d5e\u6bd4\u4e9a", "TD": "\u4e4d\u5f97", "GI": "\u76f4\u5e03\u7f57\u9640", "CL": "\u667a\u5229", "CF": "\u4e2d\u975e\u5171\u548c\u56fd", "CN": "\u4e2d\u56fd", "MO": "\u4e2d\u56fd\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a", "HK": "\u4e2d\u56fd\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/countries/zh_Hant.json000066400000000000000000000172441521174352300306640ustar00rootroot00000000000000{"TT": "\u5343\u91cc\u9054\u53ca\u6258\u5df4\u54e5", "TR": "\u571f\u8033\u5176", "TC": "\u571f\u514b\u65af\u53ca\u958b\u79d1\u65af\u7fa4\u5cf6", "TM": "\u571f\u5eab\u66fc", "BT": "\u4e0d\u4e39", "CF": "\u4e2d\u975e\u5171\u548c\u570b", "CN": "\u4e2d\u570b", "HK": "\u4e2d\u570b\u9999\u6e2f\u7279\u5225\u884c\u653f\u5340", "MO": "\u4e2d\u570b\u6fb3\u9580\u7279\u5225\u884c\u653f\u5340", "DK": "\u4e39\u9ea5", "EC": "\u5384\u74dc\u591a", "ER": "\u5384\u5229\u5782\u4e9e", "PG": "\u5df4\u5e03\u4e9e\u7d10\u5e7e\u5167\u4e9e", "BR": "\u5df4\u897f", "BB": "\u5df4\u8c9d\u591a", "PY": "\u5df4\u62c9\u572d", "BH": "\u5df4\u6797", "BS": "\u5df4\u54c8\u99ac", "PA": "\u5df4\u62ff\u99ac", "PK": "\u5df4\u57fa\u65af\u5766", "JP": "\u65e5\u672c", "BE": "\u6bd4\u5229\u6642", "JM": "\u7259\u8cb7\u52a0", "IL": "\u4ee5\u8272\u5217", "CA": "\u52a0\u62ff\u5927", "GA": "\u52a0\u5f6d", "MK": "\u5317\u99ac\u5176\u9813", "KP": "\u5317\u97d3", "QA": "\u5361\u9054", "CU": "\u53e4\u5df4", "TW": "\u53f0\u7063", "SZ": "\u53f2\u74e6\u5e1d\u5c3c", "NE": "\u5c3c\u65e5", "NI": "\u5c3c\u52a0\u62c9\u74dc", "NP": "\u5c3c\u6cca\u723e", "BF": "\u5e03\u5409\u7d0d\u6cd5\u7d22", "BV": "\u5e03\u5a01\u5cf6", "GP": "\u74dc\u5730\u6d1b\u666e", "GT": "\u74dc\u5730\u99ac\u62c9", "WF": "\u74e6\u5229\u65af\u7fa4\u5cf6\u548c\u5bcc\u5716\u90a3\u7fa4\u5cf6", "GM": "\u7518\u6bd4\u4e9e", "BY": "\u767d\u4fc4\u7f85\u65af", "PN": "\u76ae\u7279\u80af\u7fa4\u5cf6", "LT": "\u7acb\u9676\u5b9b", "IQ": "\u4f0a\u62c9\u514b", "IR": "\u4f0a\u6717", "IS": "\u51b0\u5cf6", "LI": "\u5217\u652f\u6566\u65af\u767b", "HU": "\u5308\u7259\u5229", "ID": "\u5370\u5c3c", "IN": "\u5370\u5ea6", "DJ": "\u5409\u5e03\u5730", "KI": "\u5409\u91cc\u5df4\u65af", "KG": "\u5409\u723e\u5409\u65af", "DM": "\u591a\u7c73\u5c3c\u514b", "DO": "\u591a\u660e\u5c3c\u52a0\u5171\u548c\u570b", "TG": "\u591a\u54e5", "AG": "\u5b89\u5730\u5361\u53ca\u5df4\u5e03\u9054", "AI": "\u5b89\u594e\u62c9", "AO": "\u5b89\u54e5\u62c9", "AD": "\u5b89\u9053\u723e", "TK": "\u6258\u514b\u52de\u7fa4\u5cf6", "BM": "\u767e\u6155\u9054", "ET": "\u8863\u7d22\u6bd4\u4e9e", "ES": "\u897f\u73ed\u7259", "EH": "\u897f\u6492\u54c8\u62c9", "HR": "\u514b\u7f85\u57c3\u897f\u4e9e", "LY": "\u5229\u6bd4\u4e9e", "HN": "\u5b8f\u90fd\u62c9\u65af", "GR": "\u5e0c\u81d8", "BN": "\u6c76\u840a", "SA": "\u6c99\u70cf\u5730\u963f\u62c9\u4f2f", "BZ": "\u8c9d\u91cc\u65af", "BJ": "\u8c9d\u5357", "GQ": "\u8d64\u9053\u5e7e\u5167\u4e9e", "ZW": "\u8f9b\u5df4\u5a01", "AM": "\u4e9e\u7f8e\u5c3c\u4e9e", "AZ": "\u4e9e\u585e\u62dc\u7136", "TZ": "\u5766\u5c1a\u5c3c\u4e9e", "NG": "\u5948\u53ca\u5229\u4e9e", "VE": "\u59d4\u5167\u745e\u62c9", "BD": "\u5b5f\u52a0\u62c9", "ZM": "\u5c1a\u6bd4\u4e9e", "PW": "\u5e1b\u7409", "LV": "\u62c9\u812b\u7dad\u4e9e", "TO": "\u6771\u52a0", "TL": "\u6771\u5e1d\u6c76", "FR": "\u6cd5\u570b", "FO": "\u6cd5\u7f85\u7fa4\u5cf6", "GF": "\u6cd5\u5c6c\u572d\u4e9e\u90a3", "TF": "\u6cd5\u5c6c\u5357\u90e8\u5c6c\u5730", "PF": "\u6cd5\u5c6c\u73bb\u91cc\u5c3c\u897f\u4e9e", "MF": "\u6cd5\u5c6c\u8056\u99ac\u4e01", "BA": "\u6ce2\u58eb\u5c3c\u4e9e\u8207\u8d6b\u585e\u54e5\u7dad\u7d0d", "BW": "\u6ce2\u672d\u90a3", "PR": "\u6ce2\u591a\u9ece\u5404", "PL": "\u6ce2\u862d", "GI": "\u76f4\u5e03\u7f85\u9640", "KE": "\u80af\u4e9e", "FI": "\u82ac\u862d", "AE": "\u963f\u62c9\u4f2f\u806f\u5408\u5927\u516c\u570b", "AR": "\u963f\u6839\u5ef7", "OM": "\u963f\u66fc", "AF": "\u963f\u5bcc\u6c57", "DZ": "\u963f\u723e\u53ca\u5229\u4e9e", "AL": "\u963f\u723e\u5df4\u5c3c\u4e9e", "RU": "\u4fc4\u7f85\u65af", "BG": "\u4fdd\u52a0\u5229\u4e9e", "ZA": "\u5357\u975e", "GS": "\u5357\u55ac\u6cbb\u4e9e\u8207\u5357\u4e09\u660e\u6cbb\u7fa4\u5cf6", "AQ": "\u5357\u6975\u6d32", "KR": "\u5357\u97d3", "SS": "\u5357\u8607\u4e39", "KZ": "\u54c8\u85a9\u514b", "TD": "\u67e5\u5fb7", "KH": "\u67ec\u57d4\u5be8", "BO": "\u73bb\u5229\u7dad\u4e9e", "CC": "\u79d1\u514b\u65af\uff08\u57fa\u9748\uff09\u7fa4\u5cf6", "KW": "\u79d1\u5a01\u7279", "TN": "\u7a81\u5c3c\u897f\u4e9e", "JO": "\u7d04\u65e6", "US": "\u7f8e\u570b", "VI": "\u7f8e\u5c6c\u7dad\u4eac\u7fa4\u5cf6", "AS": "\u7f8e\u5c6c\u85a9\u6469\u4e9e", "GB": "\u82f1\u570b", "IO": "\u82f1\u5c6c\u5370\u5ea6\u6d0b\u9818\u5730", "VG": "\u82f1\u5c6c\u7dad\u4eac\u7fa4\u5cf6", "MR": "\u8305\u5229\u5854\u5c3c\u4e9e", "GH": "\u8fe6\u7d0d", "CG": "\u525b\u679c\uff08\u5e03\u62c9\u85a9\uff09", "CD": "\u525b\u679c\uff08\u91d1\u590f\u6c99\uff09", "CO": "\u54e5\u502b\u6bd4\u4e9e", "CR": "\u54e5\u65af\u5927\u9ece\u52a0", "EG": "\u57c3\u53ca", "CK": "\u5eab\u514b\u7fa4\u5cf6", "CW": "\u5eab\u62c9\u7d22", "NO": "\u632a\u5a01", "SJ": "\u632a\u5a01\u5c6c\u65af\u74e6\u5df4\u53ca\u5c16\u68c9", "GG": "\u6839\u606f", "GL": "\u683c\u9675\u862d", "GD": "\u683c\u745e\u90a3\u9054", "TH": "\u6cf0\u570b", "HT": "\u6d77\u5730", "UG": "\u70cf\u5e72\u9054", "UA": "\u70cf\u514b\u862d", "UY": "\u70cf\u62c9\u572d", "UZ": "\u70cf\u8332\u5225\u514b", "RE": "\u7559\u5c3c\u65fa", "PE": "\u79d8\u9b6f", "NA": "\u7d0d\u7c73\u6bd4\u4e9e", "NZ": "\u7d10\u897f\u862d", "NU": "\u7d10\u57c3\u5cf6", "SO": "\u7d22\u99ac\u5229\u4e9e", "SB": "\u7d22\u7f85\u9580\u7fa4\u5cf6", "MQ": "\u99ac\u4e01\u5c3c\u514b", "ML": "\u99ac\u5229", "MY": "\u99ac\u4f86\u897f\u4e9e", "MW": "\u99ac\u62c9\u5a01", "YT": "\u99ac\u7d04\u7279\u5cf6", "MG": "\u99ac\u9054\u52a0\u65af\u52a0", "MT": "\u99ac\u723e\u4ed6", "MV": "\u99ac\u723e\u5730\u592b", "CZ": "\u6377\u514b", "SY": "\u6558\u5229\u4e9e", "IM": "\u66fc\u5cf6", "VA": "\u68b5\u8482\u5ca1", "AW": "\u8377\u5c6c\u963f\u9b6f\u5df4", "SX": "\u8377\u5c6c\u8056\u99ac\u4e01", "NL": "\u8377\u862d", "BQ": "\u8377\u862d\u52a0\u52d2\u6bd4\u5340", "MZ": "\u83ab\u4e09\u6bd4\u514b", "CM": "\u5580\u9ea5\u9686", "GE": "\u55ac\u6cbb\u4e9e", "GN": "\u5e7e\u5167\u4e9e", "GW": "\u5e7e\u5167\u4e9e\u6bd4\u7d22", "FJ": "\u6590\u6fdf", "LK": "\u65af\u91cc\u862d\u5361", "SK": "\u65af\u6d1b\u4f10\u514b", "SI": "\u65af\u6d1b\u7dad\u5c3c\u4e9e", "CL": "\u667a\u5229", "PH": "\u83f2\u5f8b\u8cd3", "CI": "\u8c61\u7259\u6d77\u5cb8", "VN": "\u8d8a\u5357", "KY": "\u958b\u66fc\u7fa4\u5cf6", "TJ": "\u5854\u5409\u514b", "SN": "\u585e\u5167\u52a0\u723e", "SC": "\u585e\u5e2d\u723e", "RS": "\u585e\u723e\u7dad\u4e9e", "AT": "\u5967\u5730\u5229", "AX": "\u5967\u862d\u7fa4\u5cf6", "EE": "\u611b\u6c99\u5c3c\u4e9e", "IE": "\u611b\u723e\u862d", "SG": "\u65b0\u52a0\u5761", "NC": "\u65b0\u5580\u91cc\u591a\u5c3c\u4e9e", "SL": "\u7345\u5b50\u5c71", "CH": "\u745e\u58eb", "SE": "\u745e\u5178", "VU": "\u842c\u90a3\u675c", "IT": "\u7fa9\u5927\u5229", "BL": "\u8056\u5df4\u745f\u7c73", "VC": "\u8056\u6587\u68ee\u53ca\u683c\u745e\u90a3\u4e01", "PM": "\u8056\u76ae\u57c3\u8207\u5bc6\u514b\u9686\u7fa4\u5cf6", "ST": "\u8056\u591a\u7f8e\u666e\u6797\u897f\u6bd4", "KN": "\u8056\u514b\u91cc\u65af\u591a\u798f\u53ca\u5c3c\u7dad\u65af", "SM": "\u8056\u99ac\u5229\u8afe", "SH": "\u8056\u8d6b\u52d2\u62ff\u5cf6", "CX": "\u8056\u8a95\u5cf6", "LC": "\u8056\u9732\u897f\u4e9e", "YE": "\u8449\u9580", "KM": "\u845b\u6469", "PT": "\u8461\u8404\u7259", "FK": "\u798f\u514b\u862d\u7fa4\u5cf6", "CV": "\u7dad\u5fb7\u89d2", "MN": "\u8499\u53e4", "MS": "\u8499\u54f2\u81d8", "ME": "\u8499\u7279\u5167\u54e5\u7f85", "BI": "\u84b2\u9686\u5730", "GY": "\u84cb\u4e9e\u90a3", "HM": "\u8d6b\u5fb7\u5cf6\u53ca\u9ea5\u5510\u7d0d\u7fa4\u5cf6", "LA": "\u5bee\u570b", "DE": "\u5fb7\u570b", "MA": "\u6469\u6d1b\u54e5", "MC": "\u6469\u7d0d\u54e5", "MD": "\u6469\u723e\u591a\u74e6", "MU": "\u6a21\u91cc\u897f\u65af", "MM": "\u7dec\u7538", "LB": "\u9ece\u5df4\u5ae9", "MX": "\u58a8\u897f\u54e5", "AU": "\u6fb3\u6d32", "RW": "\u76e7\u5b89\u9054", "LU": "\u76e7\u68ee\u5821", "NF": "\u8afe\u798f\u514b\u5cf6", "NR": "\u8afe\u9b6f", "LR": "\u8cf4\u6bd4\u745e\u4e9e", "LS": "\u8cf4\u7d22\u6258", "CY": "\u8cfd\u666e\u52d2\u65af", "SV": "\u85a9\u723e\u74e6\u591a", "WS": "\u85a9\u6469\u4e9e", "RO": "\u7f85\u99ac\u5c3c\u4e9e", "GU": "\u95dc\u5cf6", "SD": "\u8607\u4e39", "SR": "\u8607\u5229\u5357"}onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/000077500000000000000000000000001521174352300256205ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/000077500000000000000000000000001521174352300276335ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ad.png000066400000000000000000000031771521174352300307350ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 3s0IIDAThMo3o\+ҔDE"bvRvݢv h/S~ z'HN\ PFmnrlŖDJ,Q|X v|Z K<3ή`SAZ?$ ) ?EH@LXy6N3e([3e([3e([3e([3e([o뿏"Bz_$I].;<=tx9$qHljQ*c{ǨUqܡrgdK:8N/bM!@kAw$ۗ >5]wcvl$g-5{{.7' #%Q"IRF2~0Mct!ll_=wUFg!Fl`$H :фޙKiXRj[_>sKp> -V!iҮAHgy0V @@UYEFaym}po ]Ct">N<2"kO]S̀>:) WJ(ߥǙtHS˱R%?a f 'a@`&1d߳ X$? *^<}۠ps{'yi(nf~9+Ʊ`%c<|kbw8|RMMh->ݟlhAyAHL槙%%Hi˓Mǒ qoUa^k*I,ֈ**#\7)0f2*~BO^~ YFIK]58re^n la la la la la+T><RV:%IOHD :Ӻu \FRUrϲ} ;x:Z:M\Bץ>3C3)!pw[%~=( ֥KH^G$ ٸGq[}@"֣AUMNb}e!*nBM)pjE~$] H{ H۱C{~.8lf!ۨҸqИYʣC | @&]-Ph1;0`7X#C$xaFg~&g'P:PYBZKZYձ5v~mX8[l&v_r4щ<:9s:2@tI4;W@2JG'08#ӵia$HB{3hz%Bt1mngH w7h /_ G$bDmڻoq܋|ǁ q*X3ҙ"Yfgi(~zƹf ctg wE޷l=5밲8Pa`x 5Ae ^Hĸ |,POn.br*_}mF*9mPp hqJ%iJ'I$vl'УDUhL]Cüo8"I4ND+WSi=x sA G!c xnFEc!4fa P>zR_}SWIG(fE?8"@dt8]#=t82)L9n8PR!%\iG^LlV2O(M,|ܥj&+\yqM$FF73TΜŵ,j-Ӄ7giw僶0t'u[)8j=82ZO/ ̭cCh=7#W45A) ߇ n6#'2=d,HaMSpk ~EkY,;Bwow7y?E;οy%_qasj m lm lm lm lm l =%tEXtdate:create2022-03-16T11:51:12+00:00ДeD%tEXtdate:modify2022-03-16T11:51:12+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ag.png000066400000000000000000000044061521174352300307340ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 3SIDAThylT?X8\.%MQB¡%V[ i:&uJ B)GJ#D 4 R"ZdK\!sHl|w7cvgHg~}g~ͼX,=, pOf$r̈́Š(&dE%t}iX< K'f9Q"`^iBT8_w pDÀ:`-= Y:1]Ya0c \m'5=>e铃j\ 9Ӥ89'*<ꝁUKG/@kl;n4<(Ƅ1X T xX@~֭QeeLHOtȝK?8hl_EƏwdp*XhAXA\D!%SA,PSFtU!DS)̧E+ϟ#>؆1#":m%.tl @Q:/J^q>= ?̚e2Z,0&dH@bYeX22&<ݮpMF{w@z3AS@k$̚G 7IHJ{?!邸x-`ϡIyTgy綆@vdM- ${\Q mByX:>% g”ke#3`AqO1YG  \kaN.hzt]28pI0>cCcjV#W~^$\^j b 2-G3 *T(vz< @C@ ' ` >)XN6~`8Yo $ۀߝxR_:FDȿ_±U8.ָ ҕ{mo+n1Q0m|3F$k 5U)\@[gON+\^2'q1fDf`x_CSdmum$钻KmTgB<ؘ0$|- y4Ҳ`(DPU+&Gwn'|ѪKJ xRC۸_nbuqv]1 #qޢv\sy$U謬͢k@λo5ga{ o<|BJO֓zs~[Wjk$dw\d]oIv ? ^޽!8 &Txj]YIǦMv{ [o*-&Ʊx(*~`PۨF 23eϙs>{k;(qD/8Z<*B" Ijr<1۷sx\F s& %5U ='%))V(ukޡdclET'lmd%n0C I6I^WR_JԀn˦3y%B sWPSG"kWcU,yYSAy){0Dg(}pJKO$> 5 x|_1w[>'u/bbOR["<_S`c쌟R?iٶȋR9f ϝ&w?:jIOFàs2{'C2H5 _K%7Yb(:Tױb'zܐ(k;' l@Xc ƍc**O z@䱫UԮ@zF4`(RVT/+@;K>7'x[׿p)9tZ/icGE1C_QB{xQY5M{mjpRd XMBB *z#cf#"*?s^nOl&1oտ8Tl! :W~ʆǦ0}71y,x S?o _ ҳih oZ>FQR{~i&Hy)<2$=˜t_s# hM~{xӺax}ԭHՓ i/b%5zVwBh/_ȼY}0\97UQ|m+~ H92#n)8 aN.Ko@. (f ]g%܈ɤöԭ@l^L}pv3 UYks'3+#f.`ڴlH*lfYT jDBx рCv35GCÊ $zo|kjrqBQSn>JD%Q\!Ӄz gvV@?Y @pt=lE{tF7=Ql%FR-(+; յx=ؕ,1PZ|`o&B ly,ILw1Jvڢx+\bH)mWAޣPrs3RA:m Qbжة[wq]>#;âhk»eu,r !C `+B AjD(rA cR n[hr(h= {>`<  t]d `k '躁RVءN h@QT:tVx+# .0'՟BZpᪿԠ-$/VN .= ,*x2&n@C>S ^`oZ[48M&RX24YAD& Y!O fpةz@hlV(USF] A7 zt^bX+uS _ڟ@5C$0'%RBk)̀<@e4v?xi(|J 4t@B8]66o-A*B@i1aiBcIcl JDC_-N5"{dO6Oр_kjc`5{4lgDb#b2l!*LƖUtL(Eo{ ׄ]+Ъ: uELe'lp'5ZmVfa4q"b0d|$^4phK=MMj] ) Ҥ*Rm\Y QCV0m0| & oɏ[pˏ[pˏ[p{KW;%tEXtdate:create2022-03-16T11:51:16+00:00$AW%tEXtdate:modify2022-03-16T11:51:16+00:00UtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/al.png000066400000000000000000000030541521174352300307370ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE     pf 6yW #F =yi  q~+  x$C 7v0%ud G Y .H !b b Q X >T 5U ,tje -l:K mS h S Z ` 8<] zI U B R w?@ /M a  A O L s(nD E c !^ [ }'CcbKGD$ pHYs''iQtIME 3 IDATHUWWA]ww,!@TQQiIc!jF#h4vEcOf'yavf{~`30#' 0Nb_;#CB1"4Όx0f8#,BCJ`G"pŏ GFbE6#A "9 &l(>.ͅI8-]*g@Rr*=M*IAԚLR,PRPP+ԨYHDv!W !潆q8אI Q`,,9% KK鵨XG03- `Z *2 ?(Uz U\U)T DރLR-B#5#$roilpԽGrYr߃ه&5ZVrpNe+Z vOG6 ɓ!&1w?Ar{=&H}!/K]EtDB3U7:m714IQCqب 0ŝ!q,zspV3)$dLw~am]2-ClZB Jaxumm}#|hHlS+m9:xv 6 wI'O88H$ [hS G'AZ AiYWיtmˋCEivu}}=wA!!Y_?/A %tEXtdate:create2022-03-16T11:51:13+00:00vn%tEXtdate:modify2022-03-16T11:51:13+00:00LtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/am.png000066400000000000000000000006101521174352300307330ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTEarbKGDޕz pHYs''iQtIME 30IDAT8c`#  J10`()p!B 4U0{O/%tEXtdate:create2022-03-16T11:51:18+00:00t: %tEXtdate:modify2022-03-16T11:51:18+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ao.png000066400000000000000000000027441521174352300307470ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEPN}s! V J<m13A(|[w@$dnxo ޡ=VPSO ô+('$D@$" vaZ̽@;52ȻQK}ty&$nfŶ=8-*OJB=3/.*%"FAtk# ~uο95[Txo^Wwnǹng!vm,)LGrj{ia2.OI <7PJID]V>:e_`/bKGDU3 pHYs''iQtIME 3IDATHc``L,gecn^>~A!ar !r |J*d$55ѭc lidlBfV@N`xI7@b<.0`TX+A~pN@EPp#8Q1q pNbRrJ*+edfA99y$_PXT\R ᔕWTj@hUuMm]}C#J m]=}&n@SN>csΛO /]l$ya ֺ6nڼe+߶}]ٻo9z4Bo9qgΞ:Kdko,wIB_ÆG$'O=rǒbL`'~x_(3@5`d.VS+N%tEXtdate:create2022-03-16T11:51:16+00:00$AW%tEXtdate:modify2022-03-16T11:51:16+00:00UtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/aq.png000066400000000000000000000026451521174352300307510ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE:}9|8|F6z7{8{MOӤ菵u^TW;}Rӳx=;~α뚽YrQHѠb4yq۩hE|9|?@Aϱ]CЖd؅Xy<~wKRvݮp9}ΙLng5ys{AϚVYՐXIIрJlcؑBд>mڷPOӥz|jهNmB>Ϝ拲gUVxbKGDg( pHYs''iQtIME 3SdIDATHݖWQZTCS$MDTZbRDAY5mfQت{PN_p'{ ~;?~{g[0!?B@ƄTJ!T̖j2:m jw̜5[ [jj%P/q!6trS=-ۼH#\DI/x6h$1 M +XIͮZkfmY:NV 3mvlM@e4RUpnqm6"4<vJ;w `@6nĮT߇s)_zPakgtq>sd!rJ$vFlsCB+ y&.p(b$qo.DM $&5&"Е~v#z-$\u3h wGɛ|-$owxۍw5|{([? =z]IN\}тԫH1u5y2R{͸)rO}3g@HÆ}aOpЇ'9Etj9JF@J@ 1 wjb4ѥ>4m%tEXtdate:create2022-03-16T11:51:17+00:00J%tEXtdate:modify2022-03-16T11:51:17+00:00_tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ar.png000066400000000000000000000014551521174352300307500ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEtrބίɦ˪ͭԾϱ×࿑ݷݸ߼Ǡͮ—ڱxϞ]ȑKǏHԿȑJÀ ҍɑJڱyØ À!ΰ̫޹ȐHӎ ב ݷɒK ǏGϞ\  ҌьݹG bKGDMh e pHYs''iQtIME 3SIDATHR0@ҋP^ $PP{`;n_xyΜY$Ʌptq 7Etp1Q[], Xf#ҡ,2q1@tÇDz$`i4O?5c6_,Wm[u{*6F욳7;{hGNɐ@d8#rH|7|u,"HV^ڕc\ߘLC/eĔk!i:5%IH$?G+d5I%tEXtdate:create2022-03-16T11:51:17+00:00J%tEXtdate:modify2022-03-16T11:51:17+00:00_tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/as.png000066400000000000000000000053721521174352300307530ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 3s0 IDAThYlT{g=^cf%51D]VUCJi^Tj<5VjTMHԆ$fYeˌgsO] _{}WPAbV$ ٽ}` 1r%M.҅h^~iq݅cj'=#PQ `^ϟ(B^jHLeJ!A+V߱Xcn׬g5s9:/TiR1d*= r@q.ElL|g;egpqXJ5bBbv>}@Z;(8Eh]}I;š4(Z&li+,K %5 ߢ~j4ÅiCa-.)ro ڶ][n^,k]A 2}Kvf/ف.:Yp%|[ܜr2% Ic;{V0Jj %{bQL=B4JH)H9t"ge9.]c'N{͢&%u>oq{ 8X\'XoL WM]Ks׺ Iӝ`&}8 gHtuЛ*iS;W/4m 4!ߢ9? )L'hSXa$:,廄cHÏ DwK*Qh>6T{~Q%!%9@bILj|Z"q#u!"U-\rt´3ݘ!FY1\SoEㆦx4/} %Qs}}c4/V\鵨$m,i)cs䀉)ƣʡ2cXZ#i7JXy-f!Nj pFrϢg"S̋ل|&i}1h$Rlp74Skq΍0؉&4c,k^ǘ~HY 4&xg0)\xj.&54MɌJ%Q )5f5mid])'\"-'1]PUU9}mz56Q%-|{-2`L$$(i\n1Mou75=l kfӷ&ϳ4\%tEXtdate:create2022-03-16T11:51:15+00:003[%tEXtdate:modify2022-03-16T11:51:15+00:00dnvtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/at.png000066400000000000000000000006261521174352300307510ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE/-.,+F,GGbKGD ٥ pHYs''iQtIME 3!;IDAT8c`  %`T .C(F*J p bTb %tEXtdate:create2022-03-16T11:51:20+00:00Ʉs%tEXtdate:modify2022-03-16T11:51:20+00:002tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/au.png000066400000000000000000000070611521174352300307520ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 3g IDATh͚{|TյǿL&$ y 1ޕP%(h" iQBZ.\(Gn bV˫ Z%R(!ȃ<;<ϾL$@^|3sZk}D}^}©:ؾP]](4AjW .K tRU"7qs4!fJ@%$ԟ ,C f7$f (RjOKeժi$'/b@7E'i.neh| DWK"t.E[u2w8,\8?|3F( <4,x)nٍ#޿ 9ӑ R9c!1lK@L-֜8s ԄM%a/7a>Zv:Eqq5=54Ǐ{+Ks1VJ?gч?4I2xp(Xvj"ޅG)1MÇΟRM3y8;CGW yi>22y SY\2sI\ƃKf1hD?N *>?L<&3?M4#tIVL(W|Ǎ"0Ŏé|Dzev w 94u7W1ᑧcq^΢cX54>"y,v0|^Bіc4agS~+5 ]o Q԰aQ^{oUfx΀iFoFZ fyxX-|% |"{Py'[`:!)XG:"ֽLEh|((׏a201Ex?b:˓ҿ<7؇H,CEn2]Lvv ~ HƎ@J3dtfJtน2رsl6]Tٵ ,Ù3ߣ1' سE L;"vE+t!%txf_ʊHIyG)Y?_j׭,?.kŔRSE\nIP>9#h.|a4]Kbϝ h4JkwJbSDD^X[j#^}CM|-, ׿/c9B^^M +W~@AA%Q<W`EͿcQJB`=!܆zOV!PjuZ7KNw^0'!kN~v>i`dA~ jjj @R!(8$4,(@ `O 1)9%5-=(?0BP['3+;'WA-/K @F&)2f$j:*P"3`eUuM&)A蹱EZ;()P;)220BO!`@!`H!`D!`L!Ԁ){@8)NH'ύ0< ߰[Qh%tEXtdate:create2022-03-16T11:51:18+00:00t: %tEXtdate:modify2022-03-16T11:51:18+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ax.png000066400000000000000000000013301521174352300307460ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTESRPk_ 1444 4s5TRRQOk`S(f$dP,+g  1o;(;'1*3&-<' 5343=(='2*'- 'f&e#dP,)gX(bKGDAlN pHYs''iQtIME 3 IDATH0Bʼn .TnIMeI'@’)tFY%'!)_(I2PU)@#@(:pt@P@T3fI XQ` l8QTX+1Ƌ sp/aFx&n=;*cit&\sDNwtw%tEXtdate:create2022-03-16T11:51:13+00:00vn%tEXtdate:modify2022-03-16T11:51:13+00:00LtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/az.png000066400000000000000000000017561521174352300307640ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE:M:M8KN`eun}csJ\9L8L(7'7&6LYAO'6)9(8)9(8oz`lGUIVamq|DR&6fq^j%5'7%6+;:I,<*:;J3BitwIWkv]iz'8_k/>FT9H~2Aal(9(9'8&7LZAP(878684678JKb`kh_^GG5757T6S5S4S2S3S4>6=4@6>4?5sbKGDD pHYs''iQtIME 3J(IDATHc`` 00jT22Šsp \ܸ7/07> "KHJI+ J؀ vU@C#ucS33s K+k$`fcngb ֤l`lfBNPK\]=,=I0@EK{_?@R\jaGGFPd@4iP1D# ]b $x !1)9%5-=#3+!;7` KJr ܠ?` 074RF 5`*hnl>%tEXtdate:create2022-03-16T11:51:21+00:00ox:%tEXtdate:modify2022-03-16T11:51:21+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ba.png000066400000000000000000000036231521174352300307270ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEEEss=1t߳>2sww氰II O?i@3r tt..uu33N?iOOuu&&??##>>DDP@ivvJJP@h Q@hQAhRAgRBgKK SBg..VVppTCf((<<%%99KKppUDf筭GGUDe ++44VDe $$AAVEe BBWEdCCxxȃyy泳LLXFd 1100XFc ''YGc99 ZHc FFZHb**22[IbDD\Ia EE\Ja||豱HHxx]Ja MM]K`^K` GGss_K`zz篯_L_00--`L_ RRnn ))`M_A4qeP\7,wlobKGDK pHYs''iQtIME 3i+PxKU #n1ЂlHVH!@|Til!!`jRZ }|k1$+' ȍDs~!X ħF) =f,Ƴ?AOh`-&>Ne-, &OATatmA 3HIl )-Zl[YP.g@ /VD+R_7_CxbB ],w%K.{7୷dx]֢IApW3~P&}Q.>Q ">mg_]W~BpJ%p_טk*MkvvA8j=VXoiCs⻺ieۅ;@$iFJ7mfxGO>@y;ط{_wu#!]R^> /bi+߁޿ʊ4kGۅTşyG0 ZzZttXCa u#+ xTQ@~G9mfgRl_OzU2"?w /PJ X. X-c%tEXtdate:create2022-03-16T11:51:27+00:00 #M%tEXtdate:modify2022-03-16T11:51:27+00:00}~tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bb.png000066400000000000000000000021641521174352300307270ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE&%&~E$&%#$&{$&$C4 L< $E!Т%&  %͠"#gPaK%&"@2 I9 #%̟\H pX#$է!B3 ٩ M< ԥ:-(۬ e3(!% ӥޭ!,"n#զ*!!sZw]lU~b&˜ >0 #4) ˟#8,ة &A3 $'|a~t'Σ թ 'kØdN—g k[G ̠֧ !0%$D5 K: 6*"%"Ԧ%"ڪ ϡק $$ bKGD( pHYs''iQtIME 3`pfrIDATHc`L,80j60xx9n$EDŀFKHJI)#+'/D EUT544Tut H򂡑)!ijIb,yzys:pAX5BTIMa|"c8CIvAl\|B"ȀDd2R~JjȀt N u/(,'%eUe5d.\T ֶ K~ώNr `2bOo_9*4!6Y 4%_"QnT))T'O:BBuL@'P%tEXtdate:create2022-03-16T11:51:23+00:00li%tEXtdate:modify2022-03-16T11:51:23+00:001ѯtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bd.png000066400000000000000000000014201521174352300307230ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEjNiNkN gMdLbLjNiM"`LZRIDF:D4C2B9DCF[RIiM4\K1B*A(@)@)@1BcLGG/B)@)@*A*AGF2\K9D3\K>YJ3B3BiM5\KCF#`LDF/BGG"aL2UbKGD/#  pHYs''iQtIME 3`pfCIDATH[S0S.[MhZ?OAA f3 !Wшn?iZܲg}X{z#bQн\4pQ X~L`GR^VZuU5>HZNҡLU΢;/&)pALx "(^%bV\0^ B>o@h$ DD1^wY ꈁKg lmy 7;w.^|1tt[3-UI i[TNVqKMIzm٪h2?xw:|%dĪ#%tEXtdate:create2022-03-16T11:51:23+00:00li%tEXtdate:modify2022-03-16T11:51:23+00:001ѯtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/be.png000066400000000000000000000006001521174352300307230ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE 0/0zbKGDH pHYs''iQtIME 3"m%IDAT8c`!(pM  F*U0`T̙wP֝%tEXtdate:create2022-03-16T11:51:24+00:00=W%tEXtdate:modify2022-03-16T11:51:24+00:00L!tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bf.png000066400000000000000000000025221521174352300307310ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEIU!\[&%cbR}>@(ݔݖ)KKKJsuKKO32KM8538wy4942QR?gfDCmkbcGCF1shjqHo6rJnE9:,TTbKGDW pHYs''iQtIME 3$MpIDATHc``d00 `$d>)3"YX)1"(0|(0@DTLLTl%$%5@FVHLLHN(*5I 2 +#>$54@WK utuuA@_F&fP'&/%15D5*hD@a{&4 NhM)1!wOgtN ^?) š aX@xDd c±(eP'$cQ݀,d9q%/U?2]PPAEBFGqt oK}{GyFzzFgW70O':줬P_/抔;L(mz*<儎*=萚@Q)Ve1o|狕-?^bKGDdڸ pHYs''iQtIME 3@>IDATHǭVk;BA\aK9D7INIJ#r";==ӻsγSYnw4s%7鰰(+^k| ! ftKN$ijTzOF'dsyxfu; o֠h;<lxRb'`I\C..'^IۆBQ{ywzPd#j/t#FPo "ʙ/g:4/DH>#l$g;[(VD`c^mr;C X+Y#E`}wsyn*%tEXtdate:create2022-03-16T11:51:22+00:00^b%tEXtdate:modify2022-03-16T11:51:22+00:00/FtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bi.png000066400000000000000000000051761521174352300307440ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 3%J! HIDATh{pT?}ov7oh-P(*L=J;iuvL:NAEW(n 1 P;=9؜G2(I'#b`W(=R"rټțxl!" rh|յ?(m9igA, ;HUx7mEA!]GqqϸeKpP;4q >n*{|/B:c02[gT\q;4~ɚY{^6i f`~=ʟ86zk$\9eګJ@z0ov^~ +,3e̸n340qDOӸ4zHeuOiMǒCڢI? sVfBskH29X *#_x${^m {MYYrQE(!RcULIA1&e8D"f-!(덵1%(kqO)(6qƞ8w(({BI k*rbߑcqֆFMO_C5fЭ|s'XSTm>r{$4 ,)=YSqEwa6m t[")a3~-1?lce:lEt58M)%_|͓/t 8[RFbRŹ)V,(?J[hol>kn.cű(iEX`mb!**1=G˾Cܟ3SKxHM˥jF4LX-eDOl`}fMB1դo7"Bi>Ď/0 |b2Bw ףzUjpjacNӇ_nA-B̤,80+*hxi!<B0}ޓ8TJYql-;w1CN$:)f=35A{pB6ToLċ*VrA*|bz,!}nL፶yԳ6՚p m/wdcS/,\^T,i.%zUE>Iu`QWaW/3,8[+'߆QZc.UN y9(INp[] pR_RR鯢%cƿߵ62\wP;=zœ tMO$ MnO9,D9!ug^a~/Iټ[N B 2xt]]N., qa^31^Q73M IZɬ`I2NRX4 sr'901ФNC@[aRTfգ}9;D8vthA,e={ &B6(:+Ev7{*G?Ǵ LT8]H0in n ׻~ k )#:S$QR wt)6"*~ΘB^XJfprRcW;^PaZDTNiBXBP*[*$^:.q#UxEXDnb~ yoS9#V;*cDe bٙh9|"5m\Xw1UiyqfMcz8o6_yKn~v`aj}b1,cv11m 9BeQE ډBtO;or]S rV}z:С#=W;кsT Kb&x|ȱX 1eE(ٳ9G.'5ԅۢY".I=< 焱)/Fv|=_\18Fa={5ZhU rZw!Ti.h[/QF"r@k=;wUP}*{?ڟ紐O%tEXtdate:create2022-03-16T11:51:37+00:00M%tEXtdate:modify2022-03-16T11:51:37+00:00"tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bj.png000066400000000000000000000007311521174352300307350ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<HPLTE1.0.e56YZ! YbKGD ֘ pHYs''iQtIME 3%]aTIDATHY@0DB!ZAOf TAn  ` LH@`Ą\*=w5!pАYZ"%tEXtdate:create2022-03-16T11:51:25+00:00\)%tEXtdate:modify2022-03-16T11:51:25+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bl.png000066400000000000000000000005771521174352300307470ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE&%~'1/0`bKGD ٥ pHYs''iQtIME 5!}By$IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:53:33+00:0003%tEXtdate:modify2022-03-16T11:53:33+00:00An tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bm.png000066400000000000000000000070011521174352300307350ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 3%]a IDAThipTו^nm%B7 Ĩ 18`P1&b Kc ;@a0 !@RKj-Vw;?Z8fj|^z}s)/@Xz^Vn$))9/0EJxi-y Əe\PvS[ hL,z}4)^xI0O-"bn򟟃QCu̞= ];35p"{e ȥeFߜOԟ"~@Y?Ǔ΢tQ L؇>x#3Qq4!*O?0[_B(]ޙ*ԩ7(XjUل&'R8wg.}l29sFNZn|9e`%Egxh:RYUƍZkP3_,(sH;3=DlL8 wcVHnuO1s yX֯}S<]V؃ُ\{yU3wۮ} 5"w[4~x8aE>&%1Yfv׉ag"o- f|qiȑKxX`QPo.1I!aBS[Qp-_ŕOn)XMƭ8ۃblhyΔ0wGqc%DbgOӘLFbc#@Gu0WX#DBv 5 wQ0}-u@ٴ,*ЩLшV[@^hRMo) Z3lAZnD*5Gq Y*n$L!PW٨q{bu5A(%PBo!"n6X*hc&O, b|)īSš$@( RӚqգj{Xm3&k.i7 J(8VjKJ0cPWz YtiK_jAj~D=iq-yj$/WݻfC7˙3|NĞE"*6kf4<;npLa7պ׹1Sm7m99)%j~ס7tUPqCŸ>j{OJ.oNHEݷˉDee X~ y) ^}4$?CѢ5t[m"eo}* GQ;l8ps߹V-q;17^D/]㏉q)Z깰y3mz"":(,f>!!z&NKv(< T})E ^/ɳ5>٤#ͯٯ'm͢hZ,+t2S&:"߿{w}UMf[WGuu5 R2@&VǺuIKZIU\BSD.{,Z&@jk~RkڸW8s^c^kW'm"7ޮ/5 d}F-b2޷H:ߎe˞`Р) WS{$Fc2ys1O"46n<Ν'x㍱NʬcDт7^İo0ͯqd }9|7A=3;FYh:3Dx Ww֫TԟܦU̜9_"55b'/]hWӵYR`%)tޒs71oH&Mi`ۧSd=%#!<_Ž>]*$V;5躷xtd N艌kT=<1Ж{cUJ˱L?Xq͛wssD_r'N1wR2RI_3c.| xzhq|ewMqavSà GdR*mҰBpd_g'U#$eNS9 X.?y ˣp/mLx cofl%r-,]62H> cf _[CBj/#SC9J2Jly|C(,L':9?Zh,e'K*HӲϽx.IS'ץ/~NpxHRܘD\R+>[u@?BHÉxE"6.b愷˦}4P"&?cҝDz;ʰi\>W*?"tV5`x}=@O.ׇ.1Z\.msD*Q<|6-՘(0Zx~n~hFX9 xWQuS/^ebyrNu8|ؘ( ұC'&˿{v?2h=veg1Tirt(lh[TB5PV ,Avhz\W_r!!u:)ڳg]5bHlNAVRExcB.]srw5SfAHߐ+ȻLH(Zrr>&-*oYmjH+:;ny!izq.FI)ITy" :}tQoͥԶ\6{FUt!-#92-KVR)7Ǣ$P5Mi'wkBvT%iFPD/H!@F!](: LyA O (%#՟-``$))V_m k"^Al1#qe ݠR!ThEbWD ,¦uXWtU;gEt#)tb<W 00g~yĔ SUBdr":]d2W45Ck@,>W{XQ#iY}SDBXjs/f̙h/[^:C81"wE^LTqV=iiiatvvrmԄmOVV>8/_.Iy.~qNnkK#rs };llgm477swɲeX`pxҍR(Tȯ(#@Gˆ+U7B- HC$:W`c3RX˖٦f֬Y,]5kְb ڈb;GR>T1bXGFc)ZYƜǾIcLkTYիWӾ&us:>O.|D0"y|w׭߼߿A<(J)L8O$ұeY|`f(ڋ,(ϣ/zA#h}βs oo"ܲ+@YСXP(q%v6)E%w3x2ZO%}bQu֌=U[,=(~.GU[hR?8߽+gޓǞ:Or=/>j$zzǑ勹{Y>*#!mET0PuH`1g ޷+Q@a_x|&~"S nBG?;4Q#fWj-?ZfO b PĊ'lߊǨ:B僣DoS$?t00)_`5`EVë #p$kP] UZ9:[^^$o4K%Qyuu9!P0 <,+ϲ_ap/CgfQ 0 `&ʜ$V^Sbs j$͏zoΑLtѢE$)Ps:\ɭ~q{Aswh pln2xf<;8DN؎ 2ϖQ|9 kztG Ĕf[G ioogʕS*/ 0ќ~2L夢 [rͳmm~0I2{7g,X{^Jp­>w)N,mx(TK@) +S) ,pO(~Ax x6 WX1ah4PDfvNSs)}ºx2D\iuR\ɖ@U];(c3!ؐ2e J)+V  Av'nLi ?\b#S՗)|BD- pA4L Bi@aalZ36Mɾ {-wNnZLRr-,_lzOMSV]VuN q!0S .mȾXpO)TD1>8^qru#q@* Sζ @WSnZa]_7;tms=vL#`, >tWBP>reT+ɟD?z`W p%3s/3.ݳc(;a\!ӄqL4kwnGaIW`X#S(EW-ѺRI a(P 5 `"\.C2<"QQ0^6w|-%tEXtdate:create2022-03-16T11:51:33+00:004i%tEXtdate:modify2022-03-16T11:51:33+00:00E1tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bo.png000066400000000000000000000022301521174352300307360ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE+)@ )1 (z' $RK-^J7REQ>/PH-"%ߗyh)YgfN0cQ)Vgv=$)-{Z\Ymk@0u@I iTZUQjihR4i'"*TLp }fggg=?}[DiLO\b"l&7l>K)Z<=-4 JVsۻ :kຆ,_%R]AY@ޖ<7ʿuq!&l&T.h0mzPB5K`kPxfml+mZInoMUCwJӅ3 [Ȁ:!'L 1o(-B#FRKIH1 S3%&۴ʓnglnyXl/—&9МnTKn.E9=t' !e7nLKh3cR2ar#cûd@wgy >KTC]JE29qz7Otoby66<͐P0Í;3]BZ 6fDOX* ֜'N#E=R1g?s'^_1$_i1Likˍ<>x2Żbo+#ٮqvs @1dya>,Đ !D%_: @JevƧENmFHϪe^[]ShhK&ufcrNosrNrc|``P %ϰp[i%y_myQ je+tҚ5碔5?͢\m]Nlϵ.7!/ˀ*><68‡Z1@!}QChhxz<#y}[hbgOe5Np霟X27H#4Y>؜%cYEue6\K Y?]u˕(%X'D8y"bCX.M 'B\,kMy::Mn W+&ޔ%/v%yZضA>uOK/F`2:L:N>;e,gx-Wh89(!yKZ>ܴ;Jc p,O1ʱҌMdPJ#Rh.EYLn-ΣZ\mFNkQ//UbBh 459ad*z&J+ E*3i~<&/>n硭=Ll&NxIk!j':o5#:|E14r"MX{{f+^ކ\Kv11eb5 Cۮfiy0- |Gx?=֎@Wb=Ԛdwc&b|ge8!`ML7kU_u [xc C8UaƦW0y`׫> +'?敟;XWxΆ[*|BVaDJI"j_u)t.sO -ǰ*yTbqaH>|[;L\ƶ5J;gJdW5qAhK"wruKF5i-xuGSQpB*;m-8L:ȧs몺8BkA1M!C2@'Ig$S%,[,Ԩ+ ")rI~\ުi2/fvz@ʣBh E7ߛKHYO'E7_˧nbVm髰N`.. Δ1MˬzAs)"M˿ChFG wrFb8!Ҹ\8 u/&ɩnJ. c!QtD咋@Z/i-Y)}D7Χ(}]AdsVE: lIhxKHgfu&uky.i!]* WQ-xh]e4$˕͗ :eo_oٹVJb iHTro>M:5ʪ֚eJREiۚf]Q?ZW6s9rE63Lu*>*ZJ|  bln@}xbB͋a ^zyꗲ!c+hRY/ܰƠdT iYRY9M#h {hlpt3㡻#NC&r^it3w,W,j5(DճtW¸ E Gp%.EDkEh5ģ~Ђr)PH)l&6\ مvG=%=) ?;ߞbZjlr?.e/'Œdt yJ5WuevR f$Rƺ`ٚxD$3)1_SQ|oř+x6~*l-b~CbSkA!ÞQ.ƘN:tCKkMC,Ltx=nxSC@6t;_=7+K!gVh6 RhV-gA"ޒdVҔ\|SYe]ضʖ*<}?kY+I<9I~ۨ&-2{ݳPmwv:ҍm594l ܼsx\e9@292ΓL左卑Bi40eK#vz0b*DZ;FOlTkhT ?c˭mp*M;l4q_a^6jkvMWU%?݉_FGTwpN&1D樭nng_GΡf`2JrZ`WvBD0l#rMsolisDuK &<>Ti5÷6qF n8Ժ#|i'֧^=vַ4*,%y~_yg'`ؼnnl?B d= s,RpBt5q',{ZU[%tEXtdate:create2022-03-16T11:51:29+00:00\6]%tEXtdate:modify2022-03-16T11:51:29+00:00-AtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bs.png000066400000000000000000000026241521174352300307510ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<[PLTE/FG(+,,, X[ x}8:X[ !{;=\_"$>A`d%' BEei)+ HKSt***** <4 `X  ?9 g^ $!ZRGA$ d\94wSLʹ.( Ze79 +е0Դ.Ҵtx MP+-fj@B!"~ W[46ptJM(*bf=?{MPמ^UbKGD a pHYs''iQtIME 3@IDATHc``dbfa%0sprq xy xED%4l//`Y9+"D ʼpF# U$TxutI1A xyMH0^3s !%bMf/5n;pqus$ pO0470(8$4g/oxDdTt '3!I)x h/oZzF&n0d47;'7"x )1 J /+  ȫa ux74OG hjni%pjoJ#p? eILF`UfϙK j -bhYx K-'jB7@kJ+P^ŀu7@`׾i󖭤7Ql۾F̀vG^}6@?p*}w.Y s(-eǎ _%je%܌2%tEXtdate:create2022-03-16T11:51:22+00:00^b%tEXtdate:modify2022-03-16T11:51:22+00:00/FtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bt.png000066400000000000000000000070021521174352300307450ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 3, IDAThi]u{8ý ~yq11`hND)IH*PJVJVmh~KU*UJ)BU$(Q ~PO?bEPRW`ϸ˻>wW0r h%Ac|x˿0NE1R D43rښ?^A" A$KkthK Ά*Vgf]QBDb0vETen$7OI5ذ%(qrO^Ch  "jxՃ#IN}mjS>M&kWPCy4T&%ouCr&W/EF/E][@)4+2U-QuN.ZRMTG!;~zx(e3Qw9W6@hG#U%>vXO9tV/(!!3)z~kgS86Tk<9JZ1$ =}}Twd旰<\-*@Eddti|l7h(q@DI dҞ62m,cFϋ^m W(R['e+JyсN-svE&#,Me< lLo޸JQ$5|m}FD]D!O&m (Gn܁ >ֵ$'ً"uD͑ 0a.YHh6X|~|(*lz`/%8%hEAVHk{"Q2Qtx [-0Xi-|Pq|jل>:BA:"9n]|^}5x8@7;KgVgSeRBxzhV0FC; vمBhz8>J?O~5M\KhضKRCb,-4 !KAkR ETw=rbHs%:4{Ԅ]- HǿI X! ͤ3<%"WɋJ%{( kh(cj]ֈ7[M+%!GIPK ce k_mpѝ7Qm818JE67iDCh,0 y k#Tw/Avt)x߹^E@'U\BϧaVE I| M}Ҩ&~*7hxAk5?y_Fa |M=ۈ7":=)j%tޅ @Q^aA(!wn%LRP}ۉ^%߹; wIӇD}[E@P,Fpcty{ODcƗEMEPiJ5"! R!1cբ ͥ+Wc: {}P b=^S^"kyڤҠڠ]g@^L[ɦ*4:>TB\/g&#)X$iF_8v<@y;"B}ǐd"s/&A6cꊯ !ޱ|DXH住qM(a(6aZP Xchg9Iڔo)gBȖ5kY\%< C'x:c!پֶ~ ޣ-ힰ&ٛj!YI>F{8#JR饲c=>BK+ўz57NWχ&: kM{3ƗH"K9Lݵr: :Vvʊ\KGsPpIts$8>Ijlr^R{. x'.v?O%tEXtdate:create2022-03-16T11:51:26+00:00TF%tEXtdate:modify2022-03-16T11:51:26+00:00 tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/bv.png000066400000000000000000000013571521174352300307560ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE(($$膆978F;;&&8٣%%!!脄99##WWTTffVVz}Nu>d|56:e;f%T;/]EAADD\\__))[[''++]]١ءWbKGDH pHYs''iQtIME 3OIDATHG0@ Lfz'w( dc$*$Bfc͎N<*v`aZ$JbDTdI.@[@Ȍ\_bIeV\( t@aTk_7d@k xH}" Hո`LLjyE[,K>䦦⟟hh;;⡡ں鶶뾾wwYYUUXX؀䧧KKtt܌㢢㤤ccݎ++TTYN"  o7JI&&MPȋAAΑAB٣[A毯dgBHH??=@p5赵7:SBߘ▘B⥜`ff☛ڝSVr{}b'قm__嬬ˎXb)bKGD۶x pHYs''iQtIME 3`pf~IDATHc``dbfaecge$0p  eY(* *) M-m]A=&} 0042V61U53& iSIK+kC2ÀYΞ[ɂ<]\=ܭ=3@WC? 0(,BBC#B#c D8O)D HJv`JIMK"/ sr D3 H.I{}s Ec1># /kIF/iSf_t dEP$j#^_^K`bq9)tRJAf΄Xl128:I[(';硣O4N. r:aռ\nE.V u42gQq{xf?܁l $rV%}c1+ܸo54Ҝxv;MPXYPhkmTij ^8Dꫫ~q˪ EhEUKy~/ D>lf+Gc>R0x=($mk%:0̹& F#$'JܺxNu ONEK0ܒ,{p=氣Béw{H0.2ٸ˜7x>#,c)6kWUES0]Լ|}]>|LDBXg1kĎ߲bM *|r{V[̲+ױqoQLQZ16d=B[%ptYNȞGvUAJ rMHDp$Ci|PnVelὮ]lA\$=68e=祫u]SU8ll;pPX f RWknF2lD#Q[; zǘ_cMN'˖/af3IDqMPc*Kc? vA H (|V2`Ay&+ Ma$dv-HI.ιӱFJ ғW3s-[~m*rq!c\s3p9DDt%^9s6~ GNpo"'eiwæl':Lq[0(p%MdI|N9Ggu +/ IGk|皞eͣ2\Er<-#5R^Ǎܲ8Y@F Ɣ2)*c?t.tl)j눷&Lf&B%L=~ #K3JI}eFoP^or3o|4AUC0 4`Rh;t D~~7w+I8V v4cP"I 8~篧0SLx^?]$DDatm2Qc$Җok"a=[9tKH6 nOk+(_w7?1k'@݉(BUA* K,QJ?"S/SH@چ&9oĬyhD-Yo V A>H~b/b2(N4D\-S#AׁYl;& R(K~ HYɫc6Fyj95MTȟ(J$FNd/!u JP:F<#9j0'fR{ndDÁd7z_%yX &E"ig,b6pX22daXcbE ɌaȊըr*8XTb=VS3 ukG󵺯? IB (0 [v@ 8RS5 5> e&T_hC=h2ij(D:<ʺTnʱ$fNQn.06'GD,I DW=r)hCm8 >" I'6-XE)żYNhNBÂ@4򛏚vqwιavJ$DvB6 ()$8r֢HZ4Q'P,"JOb Ey'wb e[$˚ɵ)ˉR?{-afGSH3(̬"d$Yx ,go#ۜ)ɭд L4[.L&i O> &qV&/*,L2уaIq#ԗ݌͒/ᮄ5XE3%u},>o4_G3kpWO0ddt>nH,7̼10Q̲t#nSdl26̑8D' R*'#E1H)'F銶bcWoٯ6aXoQ^. KaY$`K$-yjr{) (x}4WF 99YYi$CYIɩJs,/N1itd l/(pwS%0e<#^F,p, ,$ Gax|*Yf/r+^:Pq7 dW#%ͅ"){|3oiaIEtL+c&yj \E,,/b0u#փ͊9|!{?bsQEk6iiOǮ#.|{qVQ_4U(eG͔:xtN=O^Bֹft/8} .ֳ9ǓxW|fLmH 1)0 L4323l"sy| bIIUA*8XS!(36/yBMRteZEV<}E&c[j9 ?{@HdlW%tEXtdate:create2022-03-16T11:51:24+00:00=W%tEXtdate:modify2022-03-16T11:51:24+00:00L!tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ca.png000066400000000000000000000022641521174352300307300ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE+)C7B6h_쟙茄PE'B7ﲭ졜*(茅ﱬ죞ﲮ2&bYE9;/\R/"뜖7*'/#J?)@4d[YNqh?3}yqH=f\젛0$G2[Q-!,荆*- .!<1sjE:菉8,wZP^Tj`*ulzq爁<06*=1QG7+."5)`VYOK@?3 bKGD pHYs''iQtIME 3'FD@IDATHc`@L,+#n0j} `jpprQf7/e1 k0(!bD@\BRAZFVN^,UU5X2@SKVZ[G X F .jeY,,YDaemckg1@ۉEUMH/{xzxIK€? [K?(0 Ֆf ,%-#M1`KK2D(8KC5+yi(`X?cb$JcK%΀tEC,r2DzA G 2ħĜ\4IJE&HG\K#&Hǖ ede+BHξb^jUjb5uP`R\jJFy:X!v2J$hD/I3f IE7$Z)3`D @sUԑG%tEXtdate:create2022-03-16T11:51:39+00:006%tEXtdate:modify2022-03-16T11:51:39+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cc.png000066400000000000000000000031061521174352300307260ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE~ >{y<,( 4/IKmogg+5r_#$uAE=R ~DP;w"]}@ L_n"zNdw1̣О?GH֥!Xi M=FUWM٪n|bcaO;` *9C 2M9bKGD pHYs''iQtIME 31IDATHc`02RɵvnnlF02  3AGS 8$ e1/šƯFM-m]M Lzi LPwM3fL' FٙMf#9gD# %.F%|K1.|\+Pd*ozi#?&-)n Фm۸QBqv%;vm qF~=PK5Հq220gF}b8G1v~h3r8xkdbBN2(^@N %aD"rf =IшD}%` 8y%cɉr>hR&τ΍i'd&M@ΌAj>uDЌ;s * FR` ppr%ʪPb! ;6 {%tEXtdate:create2022-03-16T11:51:49+00:00s?%tEXtdate:modify2022-03-16T11:51:49+00:00.ftEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cd.png000066400000000000000000000023701521174352300307310ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE~~9ɷSI}z0s$ ! TG8!!K2ϢfS ! Z?{.r# 3%oR [)0|(jFhectJfg\ 13θR/a鎱yM8~brH]<7tBKgB {zFDK>I!ߡg>7&_'v$eOu TbKGD pHYs''iQtIME 36,`8IDATH_@ %IQYA a@V5({NP(&RRrM|/wX֘86qbRr͞Q6N9A7Q]X E%N^J0)UTj}W녈om]ao66ݾeV#f #jxN۽'O}>_k[;::իgն$d?@睕ArohxdTF~/_)@w~/j&޾ ܜɩ &fR_a+/ $?Bhq *Qqogf_-Cj!mn^$|W?Q=YO {?J}`G<|opr~$J(vѦӟ{?-j&M赌Izv= gBObF/` V}](0'R$&=IB bKGDwFd pHYs''iQtIME 3*8y?0FƉ&&#? !3AD< % kpnl2E;3ppxvt 2ON8;7юLP"`Gůo݃ <='Ў啁w8SRb\F%tEXtdate:create2022-03-16T11:51:42+00:00tk %tEXtdate:modify2022-03-16T11:51:42+00:00)ӜtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cg.png000066400000000000000000000010311521174352300307250ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<KPLTE~~UAbKGDi pHYs''iQtIME 351IDATHǥIPqM=hwUá}WtlbЍs"uvow/ |tlzzzzzzzzzzzzzzzz'yBk){^˞`ck X%tEXtdate:create2022-03-16T11:51:53+00:00` %tEXtdate:modify2022-03-16T11:51:53+00:00ضtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ch.png000066400000000000000000000007511521174352300307360ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<6PLTE+*)7+D9(爀(ꕎ'$铌ꕏ\5bKGD= pHYs''iQtIME 5&gvIDATHI @Qyi 5BWL7ּe(c|T@f^ A8-u].#P2$hFLZ(_8%(pBHU~:SqE?`vǣ%tEXtdate:create2022-03-16T11:53:38+00:0024J%tEXtdate:modify2022-03-16T11:53:38+00:00CiUtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ci.png000066400000000000000000000005771521174352300307450ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE߯0'bKGD ٥ pHYs''iQtIME 3;RE$IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:51:59+00:00V?D%tEXtdate:modify2022-03-16T11:51:59+00:00'tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ck.png000066400000000000000000000074221521174352300307430ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 38LM? IDATh՚{XT?kfP`$P[:I$J>ZYN Oi$մ㶞n:宴L3#s)"P fa`n̬u&ٰ]]#?$<;i\R[n޻ٳEnPF"q.㍥ƿGMڛk7 EP# n5`ZM\ 'ڇ x"j Ak8w1VSĶk+ jdݺ2,v>ӕ4 L e}JWߢG 3~|,(rB>ٻqe5^MRJ,/rV!jƮz Q(/7hQ)o_^%Gd1+]KFv_ap;(2Ɠ5q,Ӧtzɿ<HY Fl񿓴Q)47;Y| O>w$&,1C1PIqG0p+u4)# y['@Č0e/wI,y{oEeS_ҥy!Z5aiqPsᄹ_V0Eow2R)€ !?vPE NND7E:7]zsTaN{S!( ( $P"t~WI-- r!^( 6^A( 4qNI 3"# yzTnq/`oT `SFO a:T``yer{ 2[Al= 9|s (DuD:\:]h)ۂ ϟLEQvABIˏB ૳vyp%V.(( L²eiEQ:nڝ\8 பżzO=:f]wS=c~y*TRw=wHÅщŜ99X1qb>PП75sBsqWVNCo9mbVC[ m+ jupq:ns 떒78&;nKE֖7%qq,_>?i6,WLuEy!TMKg2ƌdtDGiiOP|UV8Gp8: BfF3.pQ~e,ZTH\\.WFMAA:*@kgAaʔqO#TrjM̿P_.ˬ[% l Nw2n*G3>>DNw(}+HHrr4O>y [LaafKсdnV5sćIi]LTxk/_dNև?tb* =gÆxd"g爼 ֽMu\ ԧm HhTFSTGff<^BSS;TV6544aHLErrs䐕-[{RY;%FklnK4BK䳯wNB/fM ٹ{.G̀;t$ ˸q,[vnEJR{iM&]-6LEH?xA*ioQ2 f;]]}$(U̟W/BLJCl1_'a qX|ƌD0Z4$N3w.R.?F*f4^ (kDy[=VaP,Mi6'Ѩ Qbi's\(dfƓ+1` of**q|63.ܫ0{^K QVKOecTV6KR KKhTxc.7~Y'$e0+$'ǰz呕цb+%Ann Ӹˉ nw Ǐ[wWٙ8q &FsℵjiJ%O-v۫L\=2]f`߾Z6c8z j >݉N 1]QX,Ξ@=\@`{ 81_黡 @vLIg$W"BXY.iݘL {u1yr[.bKHN,GѨ5BUkv PF#I l6'11lVI[ Af<EvR^nRZSՈ *D\EQ0ֶr>2VѨbJ%awrDh8! 2jųY$IZ'T.x"ؿD`ĸ@//N`֬Lz vUSScsC0939sr3ro(~ Kee# ~IeeCPDt:5--Ninv4 Q=۷sع{:7o^4~ S_h$m>zr$@7 E!Pxc\NM`'47#-CDõ{o7<uq ݧqP_+@@LZZ ̙Mx$OTFZ5QǼy9uPQ@zx<.NOo9#BS nx*_ѣ }2=ɀ`a6V.tl9֭ g/F>_^xb3^6n<,+Ʈ]U8,vyNzワU LpNh&~눈l_J?g0g<?6Ьfri%tEXtdate:create2022-03-16T11:51:56+00:00O%tEXtdate:modify2022-03-16T11:51:56+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cl.png000066400000000000000000000014741521174352300307450ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ< PLTE97P89-[*Y6}y A @530]0\:?jṇrtvDm)X%V6D~C9ԇ՚۠KٌOIra<:Y~RyLt;g3`Nu;;97P754L,.//A7D9*)+6{bKGDXĎ pHYs''iQtIME 3,іBIDATHIS@n͇FT&1Dn,ʢ P\<ĪɌy/>䩮LMBIK./A i`m-`vn>UpEGV.y+kid6ysk`gwo8xgS,߷](\,_U7+Ujкf ݨy&Ԁ _О;/ݞT\K_ѷf0 `?= i%tEXtdate:create2022-03-16T11:51:44+00:00^%tEXtdate:modify2022-03-16T11:51:44+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cm.png000066400000000000000000000012301521174352300307340ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEz^y^8<%& &X$&%&&#$&^%%%%3#$r*#%ijV {z)#R %Q %$,#$$&bKGD5޶k pHYs''iQtIME 3&1Cp\IDATHI0PTH:yFADQل5U/:WHҏl;ye y$@kTu@"i[p]hiL'v \ñ-~FqQ(N4#$K/'2e IU%BXus4T! `mWbv _y<j%tEXtdate:create2022-03-16T11:51:38+00:006=w%tEXtdate:modify2022-03-16T11:51:38+00:00GtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cn.png000066400000000000000000000017571521174352300307530ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<#PLTE)()+&6-[ p 3'O n 0U *l ^ :7.;>#Z I ,J R P 9A a a 1Q F /s t (@ S d 9b T T \ O G 42X 0mbKGD`ŷ| pHYs''iQtIME 3.?nIDATHIS@QAU@Y(:  HQ&PC.~Dq'L8V.9nBU57fq ]F2BA` pDd8cQ타a'SiIrgd9㖤t*9. Yg. R9(rXa@@LwRoJȹFu$(ZeDV9 v:UŠ8U^W=!Hlǘguq6Cig1<Sg!"=cj1J*y4TyzjmPŗ׷_E<n b w2Ή]`ɒ%KCR#j-~%tEXtdate:create2022-03-16T11:51:46+00:00l;O3%tEXtdate:modify2022-03-16T11:51:46+00:00ftEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/co.png000066400000000000000000000006261521174352300307460ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<!PLTE-|~FbKGD hV pHYs''iQtIME 32+!8IDAT8c``AA`0&\P`TTAPN0t 3 QD*`жB%tEXtdate:create2022-03-16T11:51:50+00:00Az%tEXtdate:modify2022-03-16T11:51:50+00:00+tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cr.png000066400000000000000000000006531521174352300307510ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<'PLTEvvvv:bKGD Qc pHYs''iQtIME 3:%B,GIDAT8c`@`P" a`%r`T`P$Z:(I0"v]DR.M;%tEXtdate:create2022-03-16T11:51:57+00:00D%tEXtdate:modify2022-03-16T11:51:57+00:00wtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cu.png000066400000000000000000000032421521174352300307510ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEC<;OPPP~%oEPO '`/KQ?C9N [+AP s(zH/U3 LI9<O"g#DNL "v6`ccc<< ZZzz--GGff$$ 2266ooRRSSSpiwGHI(( %_+ GNMMBBHHUUKKNNPP..$gwLҘ&fB<ٷWPu,Q<,.\2 ;zejŻ,,h*`\O1yFPg3 "ʍB|siD@D哼wN 'uS(E-HZyXk*<^xn&:ٗGDUӸi ~myR$.ﯜۜ@#ϩ6.¦2Z׳P]ˈ ʷgcl\c'/Q(C،jÝ>Ϩ$÷^YwxW2? *{w5fA}(KeH s?=&E( oBmAH z7nI DG< t rOAy*;CXUt}ԁ-O%@ /B DqB?SUm̈֠FiҨ֫ ^Dj!z'*p xxj%-AM [Zp 3Xu>&LbB"3&(PY_QfF5Բ1˿Dh^}E@cĝ\9v/D`o:{oV*!DaSڏmj µ:=RC<Dgy,~,YM{͐RB7J$ȁ3,Wlv γg(km\[HbQ.'.R,GbdE o*(2)~]Dl˹4՚2G.1[ʼv~̧83ũf3B'@UX>8TF2bYJcR'?|= $g> ox/3u=p6OԚYH]<7Ձ,W!(o2Do\b }Qr D`RbTU9fcVQ+y}_K> FU`-E Qn>oW.W}G%tEXtdate:create2022-03-16T11:51:39+00:006%tEXtdate:modify2022-03-16T11:51:39+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cw.png000066400000000000000000000015761521174352300307630ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<5PLTE+*~+)}%I(L)~(}${kt%{<<]=]ۿ@` E,=oD7l&|:鞯,3U$IB[v 5/00*~8YBb|/64VÍ΄Nl 4 6{Pn:f7'|^x)Mϋza{'}Kj,0SHf 3*:v%,Ll(6bKGDf,% pHYs''iQtIME 4b IDATHGZAˀh+8F0 9YhU \̿{JDqd˧rM=}!aFCH1/N$SSi絓33sٖs.vmhq8lp/\˓vX@,oD73;EV?0Ɣʕ*s =<2ƞi̜_N,]]q tQ==W BT.oͣW!&ޅBGH&9? A=o%tEXtdate:create2022-03-16T11:52:04+00:00%tEXtdate:modify2022-03-16T11:52:04+00:00S_tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cx.png000066400000000000000000000046111521174352300307550ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 3/HSIDATh[l\Wϙό=I\I'u%i(CQťDB-'@HU($(z!ĉh&m]_2̜gzƱґֿ?Ԏ#,p 3zj ΈAu@|W3}Okע\F 0;$sF2oFV8&# kFfg tH”[$/MI,,3KKa+Ґ*Dr*_Y&m$ Vh+G[d0.>Iu e]L900ngLJ1H#R߇ #Jsbr8o3[agʲ>w(̫NFkM>VE!3Rjqec\ٞRos̼Y{6&0 CgNVm) !|8i ֿ.¨Rp'(xYd>uXm_ҍ)[{T *OfqDu@ONxap[^4eN/fGRq~ro{kRc:1XpPdc@Y'9Rz#hi}V?e1+X˿UD!1|_b*Ѩr۾ 樨Q_ g6TN:sׇ{SWEyT=AeBKQ%By45T7t, ̹ⴘ* ZeK6'3XX|dMB{JP$%W\/8/FqJT9z1^@e Ib0pXL%(XLb$^KzL6NN:KjaR%tEXtdate:create2022-03-16T11:51:47+00:00LD%tEXtdate:modify2022-03-16T11:51:47+00:00;tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cy.png000066400000000000000000000040351521174352300307560ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4eIDAThYlT箞m0`ؒ4"E@Q%Qo}%RӷjZU%QDZBi1,66f`ܙ,aQ,{}Y;BJ)?R EZP E _c$zQ;Ё"I֥#$ffpuF}' $%pSL=ķr'Yù١1NKş{bifH;X0*B, A̬%pk!D$N&Yggq4o u@3B䶏 H&59a+Bw<EJ Nlh]=%==vp/mgɫp-ݜ1ԂvR@+55h;qdd(9}; P]hb.e[PeH)_z̍{tZɒWCeyq^gp((s|ҍ۴mbس7)i(ʭKGpG{%,84o y&~ Ny+xDxlb;d^dcW;vN20qsknwz<-f|{e<3c|;IF9Fqyiǻ!cf)#?C(<ʟ7/hN|+|r$ƺqbx0Jj }k?f*DpլC/[ޞ"UPp!t=oH9u-FEVlJPݥPmʟ{7\ ilUT U<[Dtn}wMj ,yȡtRqNH{&$vҠt@1h 8iӇY oN|OB/H!=sX!6t (ĵOSn$QT歪[pRJ$v*p1}H;Yބ]LtG;Ծy_󎜃~)룰e9tx?ֿ@EYfn7H)88| -m4=Uxn0tOϞ;X4˗6߹?DpA:H)d艿21h[)o!=TWӤK\!BA(ZV槣oN"X0jpљ).s|cinnQg}.5iCv]7 ,J%Lpޓx<>*ʂ|enaf|iJ% .w}$3 -YN{!<rRr9EMx=\l*vm#vg8{4~J,+Nc*v|ͽg7m'P4g4}g5dʢ"u~n?KU>Buκ-T/_\wy((" ܈s/1tݠ'47k0⩮XӲmf\ c劵y\|4&" \DU5LmϿȍ3$4HuqBjp۟hoLSiH5\PRJ)CғZ }Y"E,B5^6 9R%tEXtdate:create2022-03-16T11:52:05+00:002W%tEXtdate:modify2022-03-16T11:52:05+00:00CXtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/cz.png000066400000000000000000000012571521174352300307620ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE^D}6aD}C|JhE~B|4`2aD}E~E-;m+B/505C{Z2X)/=n&?0=n&>R4],]bKGD+$ pHYs''iQtIME 4ElSIDATHǥU0EѠEA@H)2yWZ]tlE@ pď(/ H~Fd3"" '#9 #,- P"! pp`"Ɠ >0rDf?=@4ϗ]7 ,`;%tEXtdate:create2022-03-16T11:52:06+00:00F%tEXtdate:modify2022-03-16T11:52:06+00:00rBvtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/de.png000066400000000000000000000006221521174352300307310ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTEhOpbKGDH pHYs''iQtIME 4!n7IDAT8c`#  J1B*P!`(':!)oЂ%tEXtdate:create2022-03-16T11:52:31+00:00Hnç%tEXtdate:modify2022-03-16T11:52:31+00:0093{tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/dj.png000066400000000000000000000022141521174352300307350ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEdefj|id{ezhyooGGy..昺iiPPfgg]\33]c((@@WW ((qqrra` ))aaba**cb ccbb22H*dbKGDD pHYs''iQtIME 42kIDATHǥW[0@@mQ80ND [I IzsNVM`IJN1Dɚf 6IJJGsG`Ȑ\ P0"+[pPDnG"e;?/$ k m0%BE aQB`@e? mAeᬦ7QW;BP .&;VZiimktv"cD@Oo_ǀ( (ĤvGLMz_PN>ʪ]"Lpxt|ӟtCq"W75$to&j1RoJ`҇aVL꟞_C.^@`BHΩN?mf=4G%tEXtdate:create2022-03-16T11:52:07+00:001~%tEXtdate:modify2022-03-16T11:52:07+00:00lItEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/dk.png000066400000000000000000000006331521174352300307410ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE. *x'v*bKGDa pHYs''iQtIME 4ElSFIDAT8c`Fecc#`T(`ccSGAtfAJ z`@ U0{TW %tEXtdate:create2022-03-16T11:52:06+00:00F%tEXtdate:modify2022-03-16T11:52:06+00:00rBvtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/dm.png000066400000000000000000000044731521174352300307510ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4TIDATh_e盙;suۖ&ۭ-ۦ-JĐ*%&#/j ȋJPES CKњnjK_޽{w|] v!IL9sߜ9JQ$VaY>={gV}^=sӃFYHe\02` kp%nҰC^_b$HJ. %D¹sA*jF⋐ [@Pl _qqkBl!eY콹R=bƒy\pQS)]o`0%]8d"H <P_UB^f, 20 )A@-&-TtPPv,6@VDC.gj̩k\ b #2j Fѥ'ym)ɖ{`:A-"IRY^P*co*'Tv8%Mg i*.i2'3R G{r6T? S]OmRvk##.Qj泥 Tu÷4O게芾xrݔU/.UƎ.ϸFiw8Pt2sO:8Ht*>(, o!CȠb.~+fW$E3,qTc@' wƪDb YcCfȅАwIJhՂXUI|%-8]Q|`}>dڡ&J襾*5q{z{RQ5U&WF"wuత6̢XZ#~1bplXkXX 6XTtP:T~3[zڥ%S BR-z:Ik|_;">ΛYgU [-{ׇx ێ 6cvV,_i o7pYz#GUc,J9>O! '%c $U) C/zL5X2lNvԻƳ @X Eв4t 뼋4G>붦irA\@[1iPl343cC:zS|ِ/Af [R_Ri}u792EU&z#J<;?K2k>G=f,2Qn,_pxs/CȄM_#m~t `;[˜mRTf=BH[|HO?T歜r۞ VDxkbFMaxre 0Z}WwxI~w53 BCEC{,8p5e.Vr =gS: BQ;  d1#QrzSg&[D1k #m1\dy4$#)n!<C| jϑJe`Ȟ!rL %_SZ .+ w 7f*\0Ÿ#Z)ةW+ &S <*`?E<CMꘖ%WjG]^xʥ!7((K5Vi(؏7,$xB Xe@;|޾D#7E\cB'4O<6`e\02` k0̵1?%tEXtdate:create2022-03-16T11:52:07+00:001~%tEXtdate:modify2022-03-16T11:52:07+00:00lItEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/do.png000066400000000000000000000017421521174352300307470ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE10/A2?0)'+(*-&'ԑ젘쟗둦¦ͣ˷Ҕ͑ꡓIJʫRp柀k`·v{hʻv¦՛ئɉգȦճȤvƀdG9ϕUNs}xȅz\嵦qvaіҽٞٝ{~柆ڛwĖl;,:*DC&12 }>bKGDkfZ pHYs''iQtIME 4  IDATHc`Y'`cN.n(xxpQF 5` χ00IH` DX%$eXdq<@AQIYEUM|hhjiiX;8:9iGi@dTtLl\|Bb$gdfe3 '/(,**.)-+ *p*Ꚛwsfs À3q hkgĝG 5`ԀbQ]`%tEXtdate:create2022-03-16T11:52:09+00:00#%tEXtdate:modify2022-03-16T11:52:09+00:00S2tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/dz.png000066400000000000000000000021761521174352300307640ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEb3`1tKa1uKa3b2c2`3 Z12iH)Q3c;3)336,K;XXq錞(R3.334443 / . / 0@d{QB33439Wo脗똨떦}Ni=Z읬a;33443d81=gJ읫$3*Q3%3X3`3.333_<3qb;33qHֵC_Wp.3a3vLҡ8W\uk /Zs\33]=3邕 1D`Y333JE3Pj 135$ERl떥\3)33/3%3W338M['0_DD-<ڡm7!܏"P$^\( Lݭ"DfN()-0#P̃aB5A0#A8Yୋ(N|Մa▪ _9X"$Tp0xoЪe<;0)k=W G!2r̬Ed;QFx`Ša3lyԂZAġ=B6z+Lѻ; ukWGHvӐZׅbwBaν ^ ip~fk/6$~mT^pow:n.O'!b=KyZ.u\Xii%ۖJA܋e܆Lp%QW>D"خ[v9|[99)hpv !h~r+\ _i">vU@ Ǧob.By|H0i\?Q7 d,S]sx8w!A6S>i}bI_{]IEü#c,ϓ) SjҬOlrBCX4pt:">39ɤ/\y3Svh? $4>e٤k9+g0\t<D{3ЕMT6a/  .%oag%$οϲF,?sJ>pɶil*gO^nhmX&|~g"ٷ3% -P1*ȹeHqS%tP+{v0uLCթA1,x-oIȓ4ۂ!zy+tĮC㳭?d!z#cBFٷYSŠ,4M ј#d: WJ.itw.9:"l^驜!2AU;I1BqmVN7p.mDh[Hn,sÂt6iuPda4\#MNrT^{h`YݎaF(S; r#_iL |YǷqPÁq5feh] V /_ `,-~%0vf%YqB3abbAW]q8$+@ꑳ Kf1w4|a*c.-q%ȮӌJR,J&gZNvfl851̭1)ַGytix?[U{~D1E s0<{DsF&gۃҫ @*ѱndG9ri| K{=S0i}bwmϓы:C^3$فOsptTjk#b.GÐl';{nJgC3&|!m."PcOсGw_b1BAWG] N>EJ0vC/&io/3&mjBRQCupTdduHch M28pP7cǻRd% `miݝ!<⃣Mna-("8[B,8^g s'LV)=V!:Ta׍>d&# PQ2b\NҔ-BNtʧah]ouO^E?!:aQp'}6-$U zPT6Kh(|,i_Fyd˝<] s`U7N'hj.kVcϼUUȺu}[JB ARQ "2'y;ʹġ v^D#Z94H #Id@e RG+v!4jFYī}%,mڞ vK5OF(:&ْɣՀ|KdGD:W)2%/+<ćfszhx5GGku&'~/X?>W7;EWH^W`%tEXtdate:create2022-03-16T11:52:10+00:0009HP$6? !3<qwAIJ 8eX^!/_O\BBv>$!UT׀t-a| uF$eLCIC#1 q,45ήb~޾ N1 `O>`Xx*ٶGʊJ_%tEXtdate:create2022-03-16T11:53:51+00:00aá%tEXtdate:modify2022-03-16T11:53:51+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/er.png000066400000000000000000000062741521174352300307600ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4KNa IDAThݚYl\ynsf8p'%&%ZLZDmUNN-Цu[h6EPC@)<h6a;v븒EId[Fp> I"eR$w~s7T}ArıB1Qmx3:٨ΙN{ vH 4y{vx.%`GL$MN9~_6BHJǾޤkQtbǂOcDo;Lԛ8`, ٨Ng*YJ0!+!|CdjkqhG!FNYBh`w-N3H0b~L{*BR@S/ tџ湵8Snj!ɧwQLUȒ3'БןÈ~1J2uDrvbM P(D/[Fygzi^ܙ"hܑQL;6N'IoĿ5Fy$.]?a_ BJQȪ PHI~DVZGXGrg-TZiBB 4Aվ SG2T?Յ*em)SEzl1<(4J~ σ,( 7{0{@G{"O??!E,4>^"Y4$UZ?A6Jgf8?%Ps[WymFYĈ/?>Q@^Û-f4Z:L1#?46j~^{"&rQz3놀Bk'AX fI43b_I6 c5Q|Q½ Υ)}<ƪ &z !3YdE,b0=3'ޥkzYWzhJT~,%4yt+~OJDr_Piƍ05#`s\p *.:#8ya5F=:Gt !JU$?0i,F#Yʫ_,5XזE<}F;* QpNLhrCxy>DV4Aih=bL4Kwyhk{lo횽7$qyK@ᆪ)FY8@!LO1 D=lɹ)'3C9pu螢i̦yf[U2 [%Ah#bӠdv 󁔠xJ9@->&] _%S1"mrGG'J⤋D{ҹ5Am1/]d33 8$Z>~;PH4);X <IHտzf"@վf2 `Շ1/f Jbֆ5/f)|4E틋#[\IDQ:<<{%UW9@.6@~%^!z 3|1Ci8C8 Zdƙ*`5FJ(A@&>SC9po=iƾ;k-ke_k+AFtA˳1 f]H.xseF&!zDuڞ;@엶&-1Fsh>ah si&hv~+K|5V8b|!~h+f2D T|O!mte\A Z(d)|0!mOWr6dۇWq~-d=XEi(ΐ;>+yiK<^Dn&xom9[dƙȱ<\N2bS\c?dwGr\tW)]Ŋޛ$w>cȢSi5_rT-~~?}}u!w{)"wlMgCXMUD[F"& g2O f^9K!|[x%a77`) H&Xa0%lg"O,ONQ f` WMp-h4nYtLz,H\Vmpj3ntXܴTHC&pRE<AhwF܏/N+YܽY| 5NPxo*IT[6{- ׷QFy&fۊ"wHH\;ޞ>Tt > > > -S- 2!P㕾 a?h9` DСMO]wIm %O;QZPmhU "lkK"Ɛ {/3@IZ Zu(  cC;Xqi +h!z/ v٢|QT&|uOZl8',Ldkgm'/(Ic:¥őNGkzf;ʥ@!/YK*F' zQDs|i\X9etqvjgM+ 0gJ83ÇX2 2ݔdEP?޻3-7?:Hȹx$ѴXL{iγ=x/Dt$IVq/UpG`,w}vMg̓uXGpN8r\k`,^a9 gvY*@H*Y-u8U撉$얀+fc+\2~^~乫O<& #K<72Ck%y%K[Xr8c{ F@PGytv56)f0&*r s2(Hn#- 3.?)kؐZzeXBQ߷> BPkn]pY:EzDAb Xۡh_ *BJ $>c@J{|jwt3````uzV%tEXtdate:create2022-03-16T11:52:18+00:00Ӂ %tEXtdate:modify2022-03-16T11:52:18+00:009tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/fi.png000066400000000000000000000007361521174352300307450ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<f3+W1~ĈbKGD \ pHYs''iQtIME 4X7eIDATHI 0D2S4FXW$`[ުXwk` @@ 2ٞ@\R7RLRpxPzLEk' G`cg1%tEXtdate:create2022-03-16T11:52:22+00:00,٤%tEXtdate:modify2022-03-16T11:52:22+00:00qatEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/fj.png000066400000000000000000000071431521174352300307450ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4҇ -IDATh{xT{3I&d(Z@#JՃעQ@-}Tx@h[/xP@@̅\&d2}!$QO#d&{kG`ٕh,% Z@LIE?K֭ARR{ᚫ;y>{W#t-=z3R.#@̅h SXs8Fdj) m)x5S [R b^,h?=Cw,rs bo&}gV'\s٬[< sգY9u,^XKgB2Za-7sp2 nwSǓq,p)}Hy>yHGp G}C%kp.&:)Y/2Chs}8/F[8}D'eJNR1bD!+f]5{kX^fS0X|^vW0$OBŏn sw96Pteԝ[l|}Vs8rU"Ї&)ڗUk8%nR _)9 s<ۮp @m}.b߾jЎw ÌYmR,{}Esp>R6c]~w+ڂ=@65Xe1L|WM@Z<ȜL_N;Uuq( ?ӍM$()ѝ4Ԯȁ:NtwDM=:7q-q#h{4&K[&d۹l3\ofahs5]? D Aϩ{UP#'nExt[0oBtWP)9~^?J︔h%N&AS.^:͌ow\N5BۑcTŸ~F`fR)T H;%[<%qEHm`'_ B3Vo"as$o (0(b`y ŒtMkxU<}8']xxڥx=(h޶0CM]Ik/R_K|E/yxwm;Us$^O㫊;,\;wLGS5 5zCW4%Q>n,rr;)sϿGKKIF$͓:DR{2"?S'psq:qhrj[?_:/¸G` ɗ ˠ.GҵT-zq- 5ϼW)gN%%xxb 0NbB Ɯ?I٬' _ cKt%&KVKo8ghO}3!)4e\̀}Щ PuyP "`u(+VM#Т:JWiq05-`#_x s )sM?[~&2Wxt1"$x3+s{u[dr̼c"M*;}zRb-YC֮=,&=П*q/PCKJ^@N¯sHքk&ѳ㘵V<#CM4* (!Nx+XtU5T.XFʗ 巿b(L3 ]P;fy`xFϧf6C c5׬phb'(EصvK}1Bؔti |y&ɐN&41-G [bh?N'i32*Ǐg֖S*DJƨ1"-8W/*x+8od!y^hRp~sҭaXgF޳c%g?. -Srhe7KE}&#(Cu}6Sxrǽ1w8PZ;+HR)0t?e*V qsm%5Lyx=NF ۀ,!4uwQ=-A&B?Fygvi%h!+D.E+ ߡT"[dQii_sL)t]ß 4YBFF HRJ6 8L$ %R:f!Tr9/(`F4h3c+@r#ʡhK${ZXI)+h1Ij [9".{w@hдV: hЕsh@OWOQ =n w ʣhyb&|a2W,{lgoۇheb~#Si5 fӭM%[(_[5l;kJ19DIim7:> q{)t9T #cqd8=Zjo -ɧׅхC0tDgB@RRhkwDDrI*6:pYx.8R\c8.i0+ eظxxJ;9]j(XQс9b0\~jkkk0*TYDRj8\RR3YUL&qGTDI#aRҼ#Z|#%h*B E!Є(L)( 6bHR}z 8RX,bgՊ;d$I |I_y3&# Le_37WB{L/JUQmwF 4Tm]ZOѕ凉9? PJa;* E*E,LFS Bb3k48PkQ@J*^ٽ3dp4GZD[m= PS_3"FMd{êSJ:fAq^. o7p)y.Dx!jgGscuSv8:Eu@^ln˅ >R eZ0x8C2P<2|<[; ve|rmCoysM} k J$jT,́ԁZouR)RLY ׁH7u$il@g1~,'g%tEXtdate:create2022-03-16T11:52:21+00:009%tEXtdate:modify2022-03-16T11:52:21+00:00{tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/fk.png000066400000000000000000000102701521174352300307410ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4շIDAThytTUޚS2 a bEs@a=)qZj+6N4(iA”JeTx=B mjX^=}9W7󱕗Ox|FB`H&UU9\XϽ:Өx n0o? n&q?^EM%wz.`HoWPʍL3|5{YqϙTMj(""y1j\LCxyՂd`'g8a^}G(RUw+?qj@pgڢ&G:ͿTߟ> q ֒Bܣ*>u رK<מc$΅cxM/.f4/y,f%^əν 7ye՗tq*'-ڹ×u&xcK ۈu G1n\)3I$ܳF` z84C G״3xjOC3`^˭Sjذ,, iz tGK1 psG$?ˉAa:쨙!h{q<`CwSjmɝqtH,#r̪+`m#iVJ 44w Ôg}6tJRJ H!ܶߛk@ʣ9W$GF9N JuvU R l`Æo }Kt{^{}&J5[*hqFqv LGu)%:׳6H(@@yOy|_f>.!VzLz2r(ɴy!$stMU.I0%)]"`O@=& 2d3ފޟpdE6Ɩ <P\gv:LXqg0cn/b2[Ih) UU_}$=l=}+w$BRtVd7^={:睅43n4H\7vA(g:4eV8lr1r4cِR0͔b-yr{˂nd]=GQ,9Q“Gr}g2 ~=Dfl7?EU+A)|c<3% I*BAzz%a`XX,D:J yW1K!9gRy)nWRJ: ϒCaF?xk/,y >\sIk%"ZD"n7ph4J"p,A[Nj ob5sÜXK(HҾ}<=܊ uvK³iVޱo'ҬbɞTX ('MsgDhhLE;1$$qID!`H fEx98->_AKpMiMܬq/!hxO{$ǎdk4=}Lz`.Kc4H*BSlh)AJW[ M@%nqda<+ e','ey_X+xITtu?ƣ3)f&³Iw/a\sx_~."d5~F,k0fu;ӊl8TN,s`4_2dhQFJr wē xLj zOsOx2 q=z Nt@HCې N{%fJi{e51&}gަ3ɈP<~~ )J ICZ 7\L ->,ursشizj +#YE YWxЃn2q9BVFB ٤ގgr:~Cu0{6^墀PqCBQ%R<{dڙq#Ή>W;ǃb[9E31a6F:ȗ~Uͻ02[:D]>ۙ5QcW nW^'i;%ml?;^ǶuZnaq$k=4&"LDaT|xw `q=mr]$rrhh D2$cG䤙i4\NU`XH0ՒfW:N:w$4JQVG;frB,eJCY0%@QzUU(MGI$H;z!kL4-m!Rmpt6=Rd׆q"JMgƹXykWsCH4;Ơ+)⸜7b{;45ƺvY_9$`6x]Uh !uoS/aCE!Ԩno_P,][dzխ;cQǍnꢸ*G6oyt)d'$I6Bd/иU]LpPYFŧtk F8)Kήv[:95FB'f8(w k3g2!fbJa%M~v37PSkC| N.B4ocp\?'gaV,dສ<*8l,ԑJhf*|V5ثW2ҚC3> ڛ"qNiTRvR;Ƭq>(m:P)O5iٞC6J:RZ8Jgn'L(s!E7?}:m@Bv{OUz+6}r~> >ζ61Y 0xu3!|tqf\gxYjoNKR"i(hn޹+rKxT^ot򇍡pXU ',7õz")㜘,~K$e!LYPJV}}J/ť$Af~83b eU ٻ8j[n{TzRbnZ&}T Nggfڴm6N4X-o՟%ve`)K*Lg^pZzfadIF~ Sp8oR%tEXtdate:create2022-03-16T11:52:20+00:00"ȍ%tEXtdate:modify2022-03-16T11:52:20+00:00Sp1tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/fo.png000066400000000000000000000011521521174352300307440ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE>7v/Y'&((,G76Խߤڥڧz<7a$T988$S67w/Y7Jg,M-O-O*9'')3-NED&$((EF&&*9u/Z9bKGD-A= pHYs''iQtIME 4҇IDATHI0 @Q3e,%@]@,n~Rl Q%ڐ$ ژL_l^bJYAñ^ep++@"FX#yHqH);)~g H@hxA6a%tEXtdate:create2022-03-16T11:52:21+00:009%tEXtdate:modify2022-03-16T11:52:21+00:00{tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/fr.png000066400000000000000000000005771521174352300307610ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE&T%S'T'%&'bKGD ٥ pHYs''iQtIME 4/$IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:52:23+00:00[%tEXtdate:modify2022-03-16T11:52:23+00:00bjtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ga.png000066400000000000000000000006161521174352300307330ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE64N{lmdbKGD ٥ pHYs''iQtIME 4?)3IDAT8c` J1B*J B 4` F !ؙ%tEXtdate:create2022-03-16T11:52:28+00:00\%tEXtdate:modify2022-03-16T11:52:28+00:00`>VtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gb.png000066400000000000000000000101641521174352300307330ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5/o~>IDAThwxU?ΤLڤ'$B  "M 򬀢j\ȃ4DUX"]aYAi0Hi&Ly a` Ǟ?s~=s"Wp oεRPTk˿e?aZdƊP>n?SFF\&gJJw!ϐ~hx>qѳAJ^2$5!6A,9!x"k>Tߗf?9dIC_`5M#vlZ5CAP,1Nl`<1};PifQuDn:eMOw4x 'S ;%Ef`(څ?rk.q u^}6/nU\/w֙lU|c$;Q1(n: ,$} }a)kGKGd`}=V5c/1oS(ɩ{ilC5A44?:[s _5P ~?CXc݅գ1잹PYxxWMՑ$$PUt#iBqwsP,1شz"c)-'oiI;o,ӯW{NȘ8i6B *>zoLFIpaRr^SAQ=e|{VC6~asY`2[޷3AE&iUdI*1>)cvJjs~|,\{Dyy#8i@o+FKLd_$ IҏVԣHbOyU ݐ(w$EU):n}:#9uB}V4{@i3d;n<@ ɜ"yw[6d ̡cf@6疡ԜKS,e"Qu ʴQ-)3Y0YX0c #(\oaj}mhb.#ESު)Wb7TTC$ UfYt #]x! OaHJMN! JDX'pvݵ5Ud[IAX(=`Xew6cdf0w%65ӽσ4{%R"3<*sAsu_oܭPx̩s'i8;LsB!3o#TLvw. L'A]g|"QZL_[6%d kE%`TvhWXPkh}wPsi9Pg2SPXvZ [Mv^GYU=27GaKn-X+BTkDX?v-ޜAlU_$Ȟ=icw 7B|/$[?tNa gG:Țj;p 'd8DzY-o/D&*HFՑ$ZsP4]ېSLN^iCF6^* VË>J0̔|>ls>]h?3O Km fWv9 .cwR!{#*~b2[9důˀkҀ bጧ??~/.%}W:Z-/ UAmF6Aݢ7-B|L冫pC[v0g'ǘm8ʅYK(/~4H'Z\y_2|p7o3dc-JL` P!5oH4INHiiԎDwmͲ׆Ы[B`HJ!w*gr!30z(rJ}c#?HAU"#8Ě {INcٜ!th0k}?N[@LJĘE܉ { :D4#v?ٝfƸǙ:7-8(ULlEej=[,ktW}+wy !$+}x>cޘ:჻LSj}I\#[=v%"x> a8Bc?u_B|ZAr1Q7Zq ~1OITyY?MVk_"[中$1wt7)K >RZP˥1:K72g|?4/p9 Py𸭹x-K݉W)ߔ"(25F}Sg/l`n'!3_Hr|4d*%l&:>ѳLCsyKZ goYxu=?; 7%9Nj7ͮ$W,٫?\A/IѨ%tEXtdate:create2022-03-16T11:53:47+00:00ι%tEXtdate:modify2022-03-16T11:53:47+00:00,tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gd.png000066400000000000000000000062061521174352300307370ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4#h PIDATh͚}l\W;gS;vI;iGK6BjWZu[ĒCHB) -J"TH*m vIih8 :;=={yΌaOg=}uiZg`ܸ 7䮚1HӪQƌU.y&| JgJa4D9D91,aDAJcVb:ل:m.sc-$&t!r&t %uGꔕǍ&AY߬I#Ҙjl PhED;\tF`!nPfsD)LDNV;\.xmO- PAn$s+&nR,ǸE/zٸ3k$ٸI撅d&NV9r/W(Sȍ ?l`8$)'@ '~qu])e0y?J-KZv!۸H(AUn\"d"s"4瀺яe` 6Fy|shjknkv\%d, 7۸2W,|IP)axOk1;2Ar-&%C?ɿ_i% LU>bWYmFJ4x 6FѢUS"Vog]iN0*Ҹn{xq?kSM|a]4ZnQ7`0Uo፤]}d @ȸ&?lt/ ЦI|[EJIl$ϕ+7os;WԒW8!<{'GC_|OնL0y;xc:ʱ>5QC!(cvqj:h>\u- Ey<ٷMUQX r=D~UB6kY?O&F q3&s'}.OM}WSQoyMz34, PU$“5ӟ MWPeA_6D39Zj9m|BW"krUTOi"t.o|2EJ5e<~f'oLEyK GrZ8s~`2m<ւ&+"owFh(vH ^\CxT=_uIڻݙ1 s?siX[@D61ņ,qg9=&"3$'ز?C}3yϦqSM'l'8!CU@P6NJ8cI>w>CT53L)r41|4>Þ2X8ce:yˠC J+Ɵ b 9oML(HI8ݤ"L(4niaU0`*0G)_[IVZ`ip9Z9="%<@Y!:\ְPt kr;ʯ4s /D"`‡lgOu !0Z{SXk+# g/v0p/= #!&dYEa"R֯\|3^A{mF!~}iΎUܮ1#h ;)Qea+Nd$W- ؟E~m|bMN*H;L9o(^z뇖/:0w"hwkӰEYBv q9Sgߓ1/ ]VV 8s+|reЂ瀀~('HeJx ^qs@/ ps89V$j$`)~q>m6gQ/WRwpC nj @Q۷.ɗ{)ezS}>WÆ,^}CȖ15m`$A+1M;cm^Av<~gu2P^E Û'xg=)4~;G m:ݱ$_g#-t= "Pv Q¾qUe%xK3y~pO17oc$U:,%|xO@,qng3 +m$:n@+2y3⥱v5|^ڮXԧsUD)a6c\+2P%!mtN1V 뱕: sW@KRons754VX}8΂8)r 3">mM1zc؇i3ȍ܈Yƛ~V XMB w kƟ ThZ.ҐƟ:#T9`L<_G.^5U^N[$~G\/3IYgލX赘E/,Ǥ,f~Ii)5'u( T~f0/u `FXQauh̐WNW*"LjkJ :Q%1fP[cVLp""Z#83y^;%tEXtdate:create2022-03-16T11:52:35+00:00!%tEXtdate:modify2022-03-16T11:52:35+00:00|_tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ge.png000066400000000000000000000015021521174352300307320ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE??yySS..ppFFPPqq>>))ssWWvvwwUU((||QQ**HH//``aaEErrYY22MM==LLII++VVzz2wbKGD;9l pHYs''iQtIME 4V^QIDATH[o@WXvBY z>Hvm'229T-2Z]#4?Vt&ݱ;hz K[0L`O% ?B$?ߖ0>V)7c {B741|/ _%,9,ųGd+XPaʼn\,KoR̄ pAlkmla: P9[ * ioOL 줱x1vT541( -hk{2DaxЍ8CY Y1kƋD'z%tEXtdate:create2022-03-16T11:52:30+00:00%tEXtdate:modify2022-03-16T11:52:30+00:00DptEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gf.png000066400000000000000000000005771521174352300307460ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE&T%S'T'%&'bKGD ٥ pHYs''iQtIME 4c0$IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:52:24+00:00%tEXtdate:modify2022-03-16T11:52:24+00:00T"tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gg.png000066400000000000000000000012551521174352300307410ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<rPLTE+,---+**)*+8(K&L& -h#W$X$cu, -V%i#Y$W%DbKGD% pHYs''iQtIME 4% !IDATH geIiSS].7̏&` } p3cٲfCAc :mŕ?5T6L Dtfdl c*bXևb, vm)x|xD @ H < %tEXtdate:create2022-03-16T11:52:32+00:00y:%tEXtdate:modify2022-03-16T11:52:32+00:00atEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gi.png000066400000000000000000000044141521174352300307430ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4 aCIDAThklSK.6vn%1 !AZmv] 6iBڎN6MLZMڄ:*b&UĥPVm ݍuI%/g|8ڦmt$sysâ+@TZJ\ Y@SSszF~y?@Z?].lZ0Dd, a4毹u(痵Rw C;_7PC4lzMS5 0MRx<GUNFNeg7 zn7 #2\跱0Itto1gO 8-_ 7{藾pL >M+7}::A;j|(RxhܱK>B_)ꮎ6LΟ;Gյxgv1[͘0xTjBjoIiEIiB֯#յ/͘-`p՝,{f^(cmOlmhдG  01H"B0Gi]4EYڱiuwXS&7kEhгYEQmgPL%%ľ3ZpQ|7M[_R<@ d؂z΢o{deYE㷢Mc/ЂGiba1CGGr cw2,P6֜1֜DǘT6g#> ѻ%#W;CG1^b|tap.Ah+ `H zLd|ttБcxUzD2sBug05 `=E4…U/sBm@^9>駫P,FĢI;0:T qcw3w4HEoBh@+" W3Uyřu~("tMhTjh|Y f[p}0 dxT>١TRP@7&Of'iO'y$K9@8Iv\c$Ӥ,?></% m=EA؇y,b,qJJ€2+՝@wx @6B((#C)q YӢJ,:A(1H#иlnDŪvWBx,T}X^1}5 DE0u4D: gYNȋ?5Lft ͐0/ tBXPf5Ma!FTzbU6|Ty_&q(ٴ@*@)3Ki!c%5y@H/{O@kLa!J r#R&|!@.' #F?Vz*BRDa¯d Qj)35dyxr !i_-MF]SPg'Jjp v>f#"dMpJ L?ces|hja)mDܺI\Zkѿ WHyY\_VFZĠ0`U=(jUEˤ.y_,e{=^B=#T- \AEmFuPfi.n+)+ Lވz3œr@aԨЩ<#tQRoO%6~gpHqWI)POz7; &7\I( d5d6CM0Yu HYK`bAB]YG4BcBLUԾ^; , ² _.V0BʤB)P^!7.%tEXtdate:create2022-03-16T11:52:32+00:00y:%tEXtdate:modify2022-03-16T11:52:32+00:00atEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gl.png000066400000000000000000000017521521174352300307500ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEnIf4T+MHen)K 4/0 0 1/(Km|C 1 2 3FcEc/Q/P{mHf2SA_'J=\B:뛫f~e~.O뜬@^鎠#F>]읬@_뜫 D&P[bKGDT pHYs''iQtIME 4"yo"IDATHR@P)l6B@+)".-ۖ(8.<]sq09_? 5]pEc6x" ud"nvN !@w8{a`^Z<7{  $,X@ Sn| QHF "BR ^YyE9%}1B]f3rZ)K(j 5q!>Cߩiy -11@vGtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gp.png000066400000000000000000000005771521174352300307600ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE&T%S'T'%&'bKGD ٥ pHYs''iQtIME 4#h$IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:52:35+00:00!%tEXtdate:modify2022-03-16T11:52:35+00:00|_tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gq.png000066400000000000000000000027361521174352300307600ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE&M=>w/1=r{7rrz<=st$Ssw/0r|<|PUUtʂqۢךӋՑ֕ܨcҌZ @M3g͞3w -^BT,.]"|U׬]~9Q*a(`۶Rx vڽg/طx>B:'N`pd 8j(ΐb5@A $@P`P \ @\DA |3R6%tEXtdate:create2022-03-16T11:52:13+00:00%tEXtdate:modify2022-03-16T11:52:13+00:00mOtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gr.png000066400000000000000000000013701521174352300307520ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE[XZnYZ\;YUZlVYWɔntҤ[Zol9mlbZmY[Xʓ\^\NbKGD6G pHYs''iQtIME 4!fs8IDATHՖn@ ֮E^h]{_Mx6dI~&f'CĨ~LhЁpt6zn.7CwA =Aq@%2~ҝ $I`0 (`f# ) @%6-}}; AZ(K`i*@[|k"AQ'B"~Ȋ) P+2 j>@6R}P9HT_'A%tEXtdate:create2022-03-16T11:52:33+00:00Ҏ%tEXtdate:modify2022-03-16T11:52:33+00:00j2tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gs.png000066400000000000000000000114611521174352300307550ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5OoDIDAThyx?}l# .+jE^JպV[MUbkUkVA e263}}Gi+}y|6>DUFE|m"NYfBǩ*d {w8?w)җ,罸J" 14z0_(BjG sm{:Akڰ"*X8lo𐈧0uvk8N;NO/}B8w#R~Oq]{) yd!@,%BʒLi̬bJ4ͪݱƶ.?SX@ULDMM?H, s0tG@QCFQٙyyTǩ ([_`㖽*1yz)qE8{1ihnkff2Edvտhj81XtDr; ẗ́~^}V݆0>6w~_W$ʑ#1JG4?!z>#TUUE2ϷGP e=}/U$X`IL1D2ɑůJV̴<7s\>ψe5)OSp7i? QU, Ks}x2>UX~g\R4ت𾻔[NCE{qh8`!1c3ئ Tj lRx#+C<= (L2 Ų #8G!6G]Fq㬬^}.'1V #N%4f4I34H**9TUq:TWې);HOʞЛeT*_>OBW3ΨfҤbY|vC|N3焐J QdF:3J0 Yx Uڰ4ؿYb`-;y-\sQe(<%O"$!h A xFL)gɒZV#ӧۃّF.tc2g ;łe̙Ss'M>$BPNɨx1{/FG44̧ Uanvt&uDt׏ .rC?(4v c %HsYӹ,/@Ii 7Kk/zqFR`7%`(-F_cMM !kPU^dSrZ:0ihD<A,6 @08 d98E"'ݺ;WM~Tw׏c*x!b}{ːHNS/|"'cp~"@ko~9g7Ec` 6ht*Z]tz (ewQZڃ%C$V=Kꡑ/0L`K$҈udkc+gD{YO6.h>NϨAe$~yoTW2܅j&d bFӯ<$mmQ&<7)Sd13TT,qM1*_裥EUP\m%]AcdR~rՋ(-AI$}y zP˟>{_Cn' -i#x~|.]8Y 1VsգxV@:1FS0CD5nLoA# &d֭kKObW}'MqX mռV+&G Y/@IuyIzyj?y?&@>2$d Ϗk_z7wX̘R=t晓>[j%Kya3>jV`mIe Ff2X[ymxcr/ąݴz4B9rj$"D`yt.^L틛Y~D҈ڝ`8V $x2cF̪˱̨SO2ɀn96 FRB0P;H4e H'6P&rjgs\9Q`C#/{Yҽ~\]{SXr mm=0tn VwI'H/FP$҉,d@ >òOqNJ9)HeUhO}gTOe.t:\ ~zຓ)e_I֨DIiӊT:{R9 w۾ qü@jVtIGSK?B<v'|R2I?x~aAG^CA`MAHDYʌry-GyDm }=ƿļ MX4tﺍ/3&sOͭn*:ݭC @Kk-$w?^;l6s6 d<7~ƍ*-d#M4ֹߡrstơ?\I?5roQ3k,u/`<@b] IHj/}hǙ&<)W#Kʂ1ǟc)` i(|"h2LERIlf3L,dZo,6(2IX,! oeLI¢$^w;X_2y4V3J$-ׯ@D:.\Oh*]baX(FQL#;Bzj:}gnv$"I*i#/ D_ڤOm $q!U6bo"4 }n:i~/9RdXGk:::HU 6v8a5^u!F{2uĚ2̮ 'I`AaRYC*@Dv .BZ:tLțg"A('U.cљؼi0=S ԣׇE}D"IΒM'ɤ4POoc{OUllbч.f1H Ѩ U;1d2% XH i YLz-dݱn ܆tX\=\&Tat;Rv'EQl@SSA'\$ᘞgZIA')Ȓ !he8"4= ؐ˦өТVK8aC/ j8\1Ũᰄ_؏N׊՘UK*g'0*Bf:mmQr,Noma˞R@ cT&Kژၛ y<&K+i `DI)*(4v4;`g|~̂>־bcOaWLOEgs߿l%bbI2W/ ;[::35Q]'8}V?,Q#YݼT`?^ 0=~?{8zifo.THI0b@/3oRfRު]sGDwc+-il"LMM??[9xi$:FXۃ׭PV8@{7l+w 1JcǹyFgӶ|J%!s71Jk=6NOcgIb&4Q ^pX  AJ62s<@ia.+ӫa=C0aRȍ1Ou5eW ̾?IBE]d0c$?l_~?{H0G Ρ>1N+2= Ի%tEXtdate:create2022-03-16T11:53:30+00:00ۣ-%tEXtdate:modify2022-03-16T11:53:30+00:00ptEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gt.png000066400000000000000000000020441521174352300307530ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEIHJоŤͮjFɣ֟ЈϺƫЊwūԼտrƭǪ~gސݏ倚hǮw]ސ؇܎ܳͭ灙iʱuה؍Ԉ֎ϱݒ~éҼ{c֪{cɱy۲ɨδx_BunIq|a뜕{}d~eɒpI~]ȭɺƯæbKGD赓 pHYs''iQtIME 4% !IDATHc`L,X3#q`ԀQF 5VV6vM\,,<,| ($,"*&.!.%-#Kr J*jZdǢo`hdlbjfnAV,6vN.Ea,Q1q {!)9%5-=#3+;'7/@,(,*.a)-+!'!7445;:{z'LDeL6}Y琛'e7w0j2A*0@%tEXtdate:create2022-03-16T11:52:36+00:00)%tEXtdate:modify2022-03-16T11:52:36+00:00EtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gu.png000066400000000000000000000056771521174352300307730ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4$ IDATh[p\WVӧjղԺrdűknjgl@`L%UP3L1$R/SRyCXX>C7zyl?Vun΀-wJ㋟zi9#!8yiyY-[lVsH'Osp2NPNC5xkN]9KwfA=} k% $ɯ*|x؍웝@#.gf';;qSXs`LfK\NpmcsK8O̊";X/<yڳ:.k hopц뿀I'O/0q{(;צdzcxKO^\w1䥙S`kg'Ȯb~ɕ22Ln˰Xa +T ;q2,7":UJŦMcn/F ,1fg@)DAnv#W`HDjAa@4jxW3Btj`HT9j(i 6 0,*Z6T>P^/8MA "mDN=(Uc!)T7r-h #k5d(1Qw!nur(OItm/4pBDz6n꣺s?\F#BVѠEi:M?vUsЩLR۰=ʵBH< )qloDXQ)9:UCѲ^hzda@/wp+W $B!L$(Ͳ0rZSqjNUY`(xM/7B;L%{c]i|]# Ɩ7 *OGZ [Ͳ;:o*əYu4ٚ ?L:J+莶zB3F Am?YJI#1~a!^VYjh@s(Y6sLu6\c}&W,bpA|0^3Dxl*&3m:w:0:=4 D۷ik㷠\"p/>D&iⷪ$RW^t;-\Y%X%{0{ gaP,ѹ,J`ݽ[f>5#āC ԅh|s?cߤHxt$Wz2WQjO{ٌiB LeͷD׻wsexh/}5lObhF;Yc`fh ϓҁSQ׺Ǯm?̾x= s0e5DiYO-/mmRf//1F̝`:xwaFz_a׎b4,1UB5lr_O1;6%'N "] SRr~q3Imb0{`y5 Ii.oFrÏ3zܽ`yo883_y_{~J׳~ IV7f9Ms:,R+6gfq7&ޘ}'ܞA 'D@*j8?=Ӝp?Da|PXcei'NlψL ŏCTF.>z֮z/xGdmFh iQf:xpk{vSxeHhL܉NtGG6:J]qH y}9A ^SBл6wD[o Ko״'m[c7 Kmyll;z:%tEXtdate:create2022-03-16T11:52:36+00:00)%tEXtdate:modify2022-03-16T11:52:36+00:00EtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gw.png000066400000000000000000000014571521174352300307650ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE&&($&%& g$0  &&n &!s ikj$$~ $ ; ; '$۴#cb%")3?CB !*EIIv DI%> q r .   W"X!%6bKGD{l pHYs''iQtIME 4&~IDATHR1(J5PPqDx!UVy7WCN_rv 1 @_:'Td2@*N@ 02YlFln](" YR)D 7-Tkިz-4[dmϫuA|$! =`8`8_F 6FL,o#ɄS0ٔ(p+Kwjk+*aQpq{;;v^lԀ1 /N -|5%tEXtdate:create2022-03-16T11:52:38+00:00t%tEXtdate:modify2022-03-16T11:52:38+00:00>tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/gy.png000066400000000000000000000064011521174352300307610ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4'  IDAThݙ}p}?ϳ{;z fx7oCyI:v4'v2IiIZ{qiN&'186M dc̋ LNnwowwdInvt}~<+?Wkµ3\Mh@~hF9ksY9i\!` R?qTc}څY2m bVa=?3nqyP ˞䉪4lx>RJ^A܇L/Kv,Ѹ긴⼻o/ѫ,}2jWz OT<äУ$SqbF1 жwL$r}N&,ܙU0t sxYVlevrbF5VڶU`I@үqthDq +>fjnF:(ndY&Wg#UXIыi'ŃAm(B `_cQ@ӔK[ރ):`"U̝̟fA+ cT, *Eu[]tM`O7:fHRxp) YQ:צHt\$:!)x?%< \n#}cBn5uOTEb =9>)ѨKN$piDpX鏲u] 09ֳf3Ӌ"^;vm+̽ ޹֯x@c.u5juvz@|nJ&stj|&9EAIqZ jCzPqHěh2~ 克i\ϊ T6QNUL k,h\pi=RW-6Ǒ V0x^aA014hU<(dgJ@:9钆n`Z&eQ0 FF HCb7$~ P_iϰzAU՛X2)C$R̾Q:59!xc'mK&`w!YHa_D)8GT>owd (Ѕr,I'mZN>-()9ɟQEe"E0E@c:&T`:IbF/c =pwk6mwx8JP9Mo?ȪHz^!#dޔ4lfnYA_G܊ݲ38'Y \^qRR 5C #rkUGL-OC:VTgZtl7Nًq@VL ($Arσ:>8w*>[^q!11YTMK7z0PJ!%.0Y, ñS.E$.ͼ&}߫$\L~5p}?mZpz^ &mr i#9&oc9I!Ȕ&mW ^x$~mX#c*J\Aρ z|u |%^˾NNv&H =nx{Er´y1}áJu?6Bp%B`hE n ..å0k!DʼST7)~1hn΂9қ:l?vׁc6qfwٞ ZW|M>1Ȯ_L-jΔRqd/y[!buN>jg W9H1q]ݶk}M=_/S7e{fVg{vvf $ ?2m^6US/o%.? vVW)z8zi/-᝜>D4y}Q=&;]KBk/XZn.r<}B=W~к?ߡ?nkh@ޓzY$.Qvw'AZ>m@|s]=]WlD g"oLpzlk!w=6. ?Q:'.%:ǺsmvOdt2lॿՍ|C.@c׀66ss7`h ޛ6/Gt. ^K$"k5:<~̈́/=~A˅ru`| m\d/L~5غNTf-nPe;ѫܧ@+%n uN>ch}q @v_u\,|A?޷t ӒGN:38ҹC78{8q+vO m2KR$IaSZ?K?FpjYtעdQ#‰oӆµ˿7CfD#I)yuW_Y\"ʗvu 08vEG 11B`(L5jU%dtLRsƕe ^hW:C5Mz3 *;~JJk gOٜ>+ &b$Mq_5( gd.wpo mTL'x6솯 rK&9y}_`h9Dmue^4ή35=h#Yf'oc6Y= *}tr-lt?`x%tEXtdate:create2022-03-16T11:52:39+00:00{%tEXtdate:modify2022-03-16T11:52:39+00:00 5|tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/hk.png000066400000000000000000000027021521174352300307440ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<7PLTE YY說zz㛛ccᑑ楥FF11堠鯯謬[[]]00,,!!CCGG77UU44HHAAhh//㚚▖..ll겲??NN ᒒ穩 22**븸66MM╕秧ᐐ㙙캺XX??##ކee椤uu99}}aajjJJ))77yy└tt걱IIrr ~~&&FF ``䞞VV칹ޅooff◗KK䛛곳諫QQ@@DD݂dd||WW݃55$$;ePbKGDJ pHYs''iQtIME 4) NIDATHUWq na&cuĢM BE̙2D%SLI[43ʬJlw-kx7w}FGɈi8s ԄM%a/7a>Zv:Eqq5=54Ǐ{+Ks1VJ?gч?4I2xp(Xvj"ޅG)1MÇΟRM3y8;CGW yi>22y SY\2sI\ƃKf1hD?N *>?L<&3?M4#tIVL(W|Ǎ"0Ŏé|Dzev w 94u7W1ᑧcq^΢cX54>"y,v0|^Bіc4agS~+5 ]o Q԰aQ^{oUfx΀iFoFZ fyxX-|% |"{Py'[`:!)XG:"ֽLEh|((׏a201Ex?b:˓ҿ<7؇H,CEn2]Lvv ~ HƎ@J3dtfJtน2رsl6]Tٵ ,Ù3ߣ1' سE L;"vE+t!%txf_ʊHIyG)Y?_j׭,?.kŔRSE\nIP>9#h.|a4]Kbϝ h4JkwJbSDD^X[j#^}CM|-, ׿/c9B^^M +W~@AA%Q<W`EͿcQJB`=!܆zOV!PjuZ7KNw^0'!kN~v>i`dAs E/>dY^yU8À7TgJ-VG @nWJk&MnҿЗ}@=>8(G  5?7)%tEXtdate:create2022-03-16T11:52:41+00:00Bʾ%tEXtdate:modify2022-03-16T11:52:41+00:003rtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/hr.png000066400000000000000000000037731521174352300307640ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4SIDATh]P}CWʢb; Q4$ŘI:ɍStL;^8uڌEu:L:M:fZMim""A.A7d&H9I߽y޳9B3 #2y2M Ә 29@1))s9ܭkYo+wRLRMʦeǷqƨ:{{vq Q&iY1{bE򧂼sW <u3dVqY?9Qv5YWUs{ I8LRa'9zݭ < :%edI<1N4ͺlO8U}cy4,^PvVEV E1Db`%Krp+--kr8YIyL6K) y -4 &-'Ʌ>q/ ͌yFXF}<樟nX$c1ֆYa;g›EYH `p 腿T ])J6{qJ&zn1 6(N#~(сBj?'p2k62P =|cRe#L.2xMK'1/Y`!ܞ$1 ; M$rE~;n:0@ }24xz~qEI֌qo)*;Z(qqL[ 2-bXVYwкoR:xRO}B|?mW~'|-N߆;8XZn1HRiFM ޼o iƍRk9wM]=hR3}aUQBǣ|ǡK!-?_Ae%Q@2J?76Jij_;R67mj 4M)ҶpXʮOA x0 $Hot1Cm+?N}ЖJ)W::azU=/_j6?jiZZOzж>44x\F}@e姤M,Xj-,R 'G\ A<7))[-,͇(FQ+Ò0 uCzO ,ɥqҨ0,Czg.0G0G%>y2M Ә 2y2M Ә 2;/o%tEXtdate:create2022-03-16T11:52:01+00:00D%tEXtdate:modify2022-03-16T11:52:01+00:00|tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ht.png000066400000000000000000000023111521174352300307510ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<4PLTE 1#?#>$?&A!= <㏝|+s98t76n2,t:~NY^`!OZ]S_YĵuÓȠwŵ΁d6Dx6M}uΫPаZv5L}7Dyf@?EGy>9:e:(āĀ9*89fFGy3 1땤7KvDPg\UVA*`!^#4nDDBQh8Kv43灓ɢQy![a>\:Yy"S炔32䌚фwf};ji }{)_S$O"|{)lj g~<}劔34Y@O-0t&O8fWTRGt-?i+@k,Hu.RPhYW@3z/J+\C4g@$!dURdaK|JOxLZ{Ua\e`^ZLuI@vA\ZSRcg@%210..1/./37bKGDԶwL pHYs''iQtIME 4(˜XIDATHc`` 01`ea&Q?#7//0//7#i&03KHJI"d 'JjZ:zj$``(jdlbjfnafiem#jhK-v`gkoC!v#C!C,v/-C!CV_PXT\RZV^QYU_S]%.[Z[;:{zI4IL6}Y̝7$,\xeW\zu7,'ɀ6oٺemoٱsFqkEDQF 5`D(5%tEXtdate:create2022-03-16T11:52:40+00:00 %tEXtdate:modify2022-03-16T11:52:40+00:00ytEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/hu.png000066400000000000000000000006361521174352300307620ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<$PLTE6453L0O68S bKGD  pHYs''iQtIME 4*w=IDAT8c`  %`T .C(F*J a&U0X]5}%tEXtdate:create2022-03-16T11:52:42+00:00sC#%tEXtdate:modify2022-03-16T11:52:42+00:00htEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/id.png000066400000000000000000000005631521174352300307410ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE- N3bKGDo pHYs''iQtIME 4,$IDAT8c``AA`0&\Q A!O+%tEXtdate:create2022-03-16T11:52:44+00:00%tEXtdate:modify2022-03-16T11:52:44+00:00a]tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ie.png000066400000000000000000000005771521174352300307470ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTEIHJ۾ϥyxyԆqbKGD ٥ pHYs''iQtIME 4-?$IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:52:45+00:00%tEXtdate:modify2022-03-16T11:52:45+00:00ǹVtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/il.png000066400000000000000000000022501521174352300307440ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE::Ͽ((NNkk33խ""ҝ11JJ;;''ssww))((** ##%%yyMM۶bb߽22թ,,!!$$ӥ ΁//ՆBB77֞44<<GGڜiiRRpp\\ޟ##ҳVV݊DD++33??llᐐ ͧ ΑUU aa HHڰddrrjj))Ӛδvv'>bKGD6 pHYs''iQtIME 4.pnIDATHc` & 3`@qPX)R ;eɌ"<|nqv I)5J+(*)(kkjji`4 Nwstrvrquu2&> ~<`vy gPpI(:ڊAجvrnZ$cdTDt +@~D[0)9%tj'g%2Yl\+9CE%ePn]P) ƪH:ۊ7xG665ګ8Iȑ_0V]_SݟG_O$]QZkݯNBf( V%'M6"_?E8LH?4 &y) j40 ) 3(A Sfh%tEXtdate:create2022-03-16T11:52:46+00:00 0%tEXtdate:modify2022-03-16T11:52:46+00:00QLtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/im.png000066400000000000000000000050341521174352300307500ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4.pnIDAThkl[>qv'%Nq.-o*[/Zѥ0u4 Vuôm4 VB[!@+bb`PH MiCMsqlDZ[cs!umHqHd>>s9146FbPl|#@ (6&W%-d EEgܪ $(@0Ġx24R1@Dh^B?Cee )B^[@gj˹n6~A~Ø~0m+B3KwkPVjʹz(r+ER͔كfKK CÄ}$RkY[mD++) P" u{@"ɚd+(71a;iGRL%qq]#H2ɲux (5ދt؜+%*Ts`irfj^矧<2I"#⟱- 6=$ZZ#XXo/S,==P;vp88Nt {s,K&o`9"IzmN'NP;92KY4rjKb2h6EVl74#G"ZdYF$z= ף@ [R != sf#cXD0* e׈xB!I v<ɄnGId(@L2Q}2rx:e}QM4J2AEx4hoX}D]˶mᠦܶ@/ vM+=GEOF;smJ771p:(@ʕsabt#ٹq HnH8>ډ(s ?W{L]]) idF `x2Iү9ˑOݻت* KpI* z0>N @Ј[Ss4fE :r֡*^d2&^rBAłbAUUdYlt,6߼w? r@Cl9p z$F$)͹KqRVEѠ ذu7w}2o/ F[Zh}At ~dr&7n>WiHQz}μKbA^MUJKl6j\kINDy[!ߺ;?ɐNtܼ#T^|z Zʭ0S^{$LND*#p!5az{H5)8 1bZTȈȚ+I\\[l,J hȜ_aR2Bq è'N`I w!X,PHW_dj] TqlQE  - N(ٵU+WF67pHяI887lRVFO?\{ 0)L5,7,Z/yj\`0YrF::Ҋ&bf:{ڵ^q>.QR6.'2NV+O>{wIO&\Խ>؈fEoXߔ`c_mAsgyZFϸ˅=kGiq<`6ҀfeS }!4X4,1X'7jQ %@˱6D [B.j5( 7̒وt(%)"i,yT5nHAp_jFbPl|[k8d%tEXtdate:create2022-03-16T11:52:46+00:00 0%tEXtdate:modify2022-03-16T11:52:46+00:00QLtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/in.png000066400000000000000000000013201521174352300307430ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE31KߙKK\\tt~~RRSS滻힞ߖ}}¹^^lldduu~~eeϟѻ.$!bKGD?>c0u pHYs''iQtIME 4+&IDATH0E V XU'p?D]&Yߜ{ şP@7ƍ2v4Z O`q]ۖ:v^NHp("LhiS#d:c|'l65d]{ ODƘPF萐uLy,8et>_+[YU$((/h-%tEXtdate:create2022-03-16T11:52:43+00:004ۗ%tEXtdate:modify2022-03-16T11:52:43+00:00ic+tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/io.png000066400000000000000000000177221521174352300307610ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 3AIDAThޭwtT?w̤Lz2L ^C/J ( {A=?APAQ屣"b:H%4{O&~$C"}w{Yɺsg{#/~ED,_!4@V!B|9 9CޒWB8TbzĻ֑_$ P|f@ي(& /!t}H5̿>JM͝w㥗fd׮ <60bW^ɴi;wq8M+.nDgA Qz.T` $I^<4o ee4>r1п/_t#JrN^ `tN&k>FCs&;nZ~֭;llQٳS9z4KEW$#pstӷoy嫯l>|!i4xOd`ƏLkE(@Qs޻g!۾櫟; ;!fxb FƍYv/f۠ؿ?f3>xz(Gsx˫WJ9z4K* ,K ˗@/~03KӺ͔lzD{ xa6}y6["$̟<+'Chihjcw'ؽ/]21DFlRV; h4!DMM o[OVҥ2Ze,cZ{gBp7dea2Y^ԭa9E˄ $Ƈrj9fw_"SBL*HժMv9!G2x};_o?ɁbWo&,K̝;5kpCpsrZ-V? A\PJ~~ mmYzKNwPJJil46&] ]$dϐJI+jdIL ~?BE3qToƌHî^7ۨz'ޣJ&Ʈ},}{]CXastd`X6m#7YŋD0>=[ 𦼸panmqqߛoCee yyt5] 8n`RNžKݎ @DR4F%r{/ OI>G+.^=6Vܴ~ P_^}z 8vdY{F{ veE0aB"POvsYD|Ecܸΰwذ9l3}Z?(*jZh=+V܊:Wˈ"px7+Oxi)\$/ÆΝJ7?c{"a~̿g Mzz5z1}z2:dYI0 AdA~FSƚX8aYٟ+WeQ ݓ?،PdO7jo>} 2j_'/=1WYVC->_,;۶ώժA(pjAvHTU5/4ms e$I"::Ǭ;z 0kBIi=y$gS}B!ú)Z7LcGPslBc&7瞻Yf.G TVֈ0kpW|.Fs3_ʡ1{Gޝ(`߾KHi~zP A5HfTJ,XvoO_N7'Q~҇Ssq'k[|C1WXdaxxhZڕɲeۑZoATT8XbQG~ zHO/$e\ܽ2aIQqcv6n )/Ϝ.IeJhp2½ZBp/z7uuF hjjCH h&--<xXV̌f˩)Cy=q7%'t]=?+N+-:RMxsR얀ǹ8ruȕPwݫuoTT2`9&8TGJHV_MZA{m'%߰jeZlW͛Eak)JJ#**$IdZT= ;KrNX4r 8|Ə@(JL  )Bnl3W#Mڟ-[$::݆bg'?#57"B|Ch3!xyDq}15Զĉ~m. k:}Xt"RqUSP=vw=vq ]\[Zr8j2Ÿ|!ff$M?-; *ZEZVGsͭBλS'9srʛi1zr<AF"ڬm 6f(C nl YY8Gii^^LHJJs2wPƳ,JW}nG.Bތݷ6k:=39.N"}" =1ȮƮر8,hUZv@ s#6(šPZG>L l\%h{hd bРE@]\VEM}w`SbRc7F "1 @q(x &z!}+ؠsNb29+5P0~j}`fʌNìja$=BFKa]!:D QC͕&e\fOVol!HKgղxVQG]B =Fwq+.y D>$aFwXTq,3f?i(hnnFma @e*Ilj޸H&.7/r^4d#WP',QfhR25w6 wT* E?ҥ Xǚ3nx<`%1o| Vl9XFЙ[b2w ᝗` ( MtF,-*ޥC(Sk0̘܇% 0y#薻 4PcBi& K @DRVbh:1Բִ=/&h->8tA[9&EAth\'?u$o2YT~sN#<]z? _C ͏hl6.֭'hj21qb";@k7pV3;~:Ga~-}1a$!!t !8y2m2kƍK@^v+MfPXWzRRA=¶X,vf>TCgo--&ѓdeW𰀅BX̙Ⱥ\ޣ~{Ev.rHJzU|Ya{|g WexH<.{GQUIY!qJ̜_bwBQm\\.䆆+?tLBFGSMl`oWHUt7:CgUp8r#GALL dXn?VÕZ9x 6Bty%5*K~CqqEb#-@_h XOkkLBj8p F&..V,,]0u< cҤDBQ~E+7軻k1"cIKoe`6fz& a$Cme۶u]m(zqM}<|$><:?ew 6LЛ[ع99HP$Fe̘xjk^ f*={9S@FFvqUULĐ!QpUmŅ0sff;'Nތ c٬rAq: ?GDYFZZfµj̟ºu EQ*Xj7;w똔˄BCش>n}0_dݺ4us7dYbI_jرV|7(Ɛ!1lٲCQ(3y{шۇzu`hFBr`ժ2Xņʵ O/_ʎ!!>L'ٕ:^P a޼ᮼeԨ8 ڵz**:j{'=X~NNqkrqMxN +FIZ,aCvlܘ6-$vԫ;Kpӧ'ҭ%8HDEE۷lbƌzV]AQ$,{^"=PMK&4ץ/fsRPt_=  8M/|:>h0T hH׈?ɓQ@e<b~XŽ$>0=gQQ6m s>(.Qb#<;J5j8t(K8=cɓ")Uo Q{q. q.DL["E8 G|6.\| 7;?YY=syȲ5YYel5Kh+?MAMKvep?OX6n)EH-G&+ӹRIx{3fL<E[CEEc-+P$ƏOBjoIA1KP$.˃PJAA ?'G`dX^~y&=귴سvZtjon;ӮF'|BC}~HPa;ͭ?ABBH-__sꔳ pP6Fv0{$ tԝ]f+8{!Ȁ.m:g[mٲH"auޤY:weHE嗧ر/N(鬮%<<9s0qb"AA^>] iqt Z&Mm ">y.q!Nʣ{i}ЧoFHD0~vbtԩɄQ[k\P?hj2Sq|uvX,Z̀QtZ\A֠X,6WLYY#$p`dHV] V!D񧐀P]ێ,7ޛjqYVժjP5*߿#iks&5kYڪW^cMMիlp;dvG^>?w7qqzc:NzlrNw3{@v3gfA IR!u($T*=6_'EEul|[O`4p׹dS\q|qeLKCC;5jռL/;LXӦ%{sR--tmLĖ- ;ZǃXRR((EFAP|p/w=F`O.ʪD Hڵs B f$;4J |쎕11A7`n@)SHuu+mhjzf^zi 755Æ=:6UU-vƌI`ӦHJ $:5//w**in6fwH~߾ᔗPfbu0# b͚w^8&++[hkf/YӱBM%tEXtdate:create2022-03-16T11:51:30+00:00.s%tEXtdate:modify2022-03-16T11:51:30+00:00tsˬtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/iq.png000066400000000000000000000020321521174352300307470ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE&$-@Ƭqͷ޵Yz[]ǮٺOxҾBnrZ]ʱç}PyӾDquɰi_ヾpxQzҽRwƭt%YlLwCpaMxP*]@nDp4eɱ ~Cz={>y;y<w9qu6V}/`x;$XI:i¦ȮȯǭҺˎĩѼɱɰŪū ܒbKGD pHYs''iQtIME 4-?'IDATHc`` H!``00SX(Jl@`67 +/+I  "bRҤ #+'t"%eU5u^ faa1rq[XZ 'GI'gW7}wO/oWGDFEzų$$&%Fgdc@VvNn^~.ZdWTfc@UuMm74655gta@gWwO/tGL輀ۀ~  D 0X g%tEXtdate:create2022-03-16T11:52:45+00:00%tEXtdate:modify2022-03-16T11:52:45+00:00ǹVtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ir.png000066400000000000000000000045011521174352300307530ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4, IDAThkG?U35Frb'N0/1n @NK%>`bpb0c˲4aI_UPI ^@7U}ۯ^w:ϿE4=iC& `vHL 4I!0i{ D7f?0g #B0&tR_ gO#eƣ[\E/#11^A{X84|-8ةh(l\֥c^3ĊËz˱Q8lW((mTHk =PؒVxhHSPIfǸjװ ڂ :Y>A_PiM2 zI#2#ЎC(mɠ2 kbN::&kFiA(mE7=Bbb:x,JMD˴X#@4RIpޱVlЉsr2dQ̤lV۔g4RڒtXǀ'3x8hѧ'(V˰)l:C7=G#:qN$5C26}tVxf#i|C yюs [թtϺxx(啩]Rti [ t-L:MKǔ$11NHGesTFDKgKTe)_lG)8NJ?`1G+MaKv<;[."zE$LmxVg:U-4CY'R3&G-6Y"{̦GHLBjm=!C[fخvxfә1n-ı6`!(3Pl8 Epk}p+L]"83e۷;;$Qinsm! u7ޠ%BrįFw|o/-Q@y&Lz;D'Nxւ'NP߹Cz͛H]駴ΟH`fCE??ϓO>A'>x@u6%[05ʘPFSݺE{T}GOǮCHZۯaWV?*YQjh=TB e?ѱc^:w믱A527zM\wLK7n/-ዂWC5xի _Zqw0OKؕT2s2O\ap߽v'W0s2*M1}A@;V=ƇH@Ӡ#w$O &OB~Kq:ٳKKGHΜAw:`i~ 1/s^ɰkn8s5L E,.yw=:*MSS=nm 8>X{{D T Dj=~CZH]771#_ G\ 3&=Z|Yj|΍/v[{gvܺ3s&E}GjQ-$!~1p>%TƄW٣+Rv>'>5RWUoNxa,R^̿H~<$I0iC& `vHL sVl%tEXtdate:create2022-03-16T11:52:44+00:00%tEXtdate:modify2022-03-16T11:52:44+00:00a]tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/is.png000066400000000000000000000007701521174352300307600ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<9PLTE84Y~ss$$((1Y{W{BB&&zbKGD{l pHYs''iQtIME 4+&IDATH F1ˬلp#,: 6y" I@m@k .A@-@V=ӊi=E3ۑ@z<  ?$($ .\=%tEXtdate:create2022-03-16T11:52:43+00:004ۗ%tEXtdate:modify2022-03-16T11:52:43+00:00ic+tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/it.png000066400000000000000000000005771521174352300307660ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTEFEGؽ,8*6+7>bKGD ٥ pHYs''iQtIME 4/^?$IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:52:47+00:00!{%tEXtdate:modify2022-03-16T11:52:47+00:00P&G8tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/jm.png000066400000000000000000000014571521174352300307560ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE6baʡ7ʢstaMaN6+7,t¿wxgu{bKGD$ pHYs''iQtIME 40SDIDATHǽkS0E P .o2inb:!{6,j%[ fL(-~4Է7)t$;SSզ^쳳B%]]i~:ݒ&1\XHDYd G?@棸B .FYI @L ECw > @ׯ} PWe@_1_>#X1LS+Ɵ o׷lF@_"egg- lh[G/jC/Wz tā,x̃Mx]ϰ ?|?Υ%tEXtdate:create2022-03-16T11:52:48+00:003m%tEXtdate:modify2022-03-16T11:52:48+00:00n7tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/jo.png000066400000000000000000000016461521174352300307600ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<)PLTEY L M""-- MM KK II&&::ppmmss GGccEEWW>>33%% LM?-ߥ߳-Mk!Mj .Lk %Yc MbKGD L pHYs''iQtIME 41c\@IDATHǭR1U,Ď  VTmEETX `,R,30::=:3{zZc}t hu@hd VDph@npP&Ā"5bphx TĤxI65=3;'`, k a, ,-XZ^Y]롍t)[;pxt|b4yvHя.+K$l\dcK/r^~5rgXô%tEXtdate:create2022-03-16T11:52:49+00:00qD%tEXtdate:modify2022-03-16T11:52:49+00:00 kyff͓T  _>D1/7@@xW cB~& Wrɾ*$Nh ,oi7Y9Ŝܼ|(0 M@JsjBT]Sk!bZ'KmM5zL M6l͔6566hF m֊ڠQgW7%jvwub>$G.WH= A$ R'c>`aPiyl&d2955Iɜizf<[i$ ]][[+ ,>@'h*k~L3(n[x:ͭH|E Ճ=1;yv|t`S_ gL9 #P.^vu}ss{62# v|x9~F5D%tEXtdate:create2022-03-16T11:52:50+00:00(v%tEXtdate:modify2022-03-16T11:52:50+00:00Y+y(tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/kg.png000066400000000000000000000033761521174352300307530ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE.9/H1DT!p)iY =^0@BckWdN">UsCO4 I ez~h-FM`PS2w6}$o(LgfGVy * rR%; qlaxQ7'_<m,]3J\+v8b{:tZu?#&bKGDlZ pHYs''iQtIME 44 IDATHc`怑\,̬l\ldia'Y :hhjiJpVrz6vN.ܼwss7t q#>,C]=""cbbկ(f#_`IE:%eU PZ-_SXgEƦfֶήln|Pkhgd;LbL2JS&O6wLMP^A^Ici5qQ !:ޢܿ:)GW;ZV+<־SkY|ռ󅸦=EvPgy8o1sְ`da&`Kӝ%tEXtdate:create2022-03-16T11:52:51+00:00 %tEXtdate:modify2022-03-16T11:52:51+00:00\rtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/kh.png000066400000000000000000000032611521174352300307450ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE..(3$#$%#0E.D#% , +$##-C46#fqco4#jvv% , ,05#0/"6JAR#&~2 S\"bA +()%--#)!A9yEAUTY" râ΢o`hΣm50#hbjfna)(hemckg((hiandX tvqus pwsuq$аȨظĤԴ̬ OH,(,*.),+-P,LN%:Ʀ̲斲ƆښjљS?o_YOwDRgG{Q>q)SwvN9cZ)IfOd!sΛ?uE[Kflj95~S/]6._rUSk5}]32V_]vr̔&lܻe֭[V7Nali&`@p;w޼g޽{w)a4n޿sǁ\~G66;zر6o35n>~ >yϟ=s e/^15^r' pn߹{[n ƽwܾuk:Ϟ?W__zc1@ce()X(F(Z6<$S%tEXtdate:create2022-03-16T11:51:37+00:00M%tEXtdate:modify2022-03-16T11:51:37+00:00"tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ki.png000066400000000000000000000107161521174352300307510ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 42d2IDAThil\ue6e"e-Eɖ-[8q8 $MӴMC ˧h@i7iqٕw[d(JqÙy˽fdIv@:r;s9ݛV !Km{mntZ0}Ÿ,GfV!aAX _`UPmҊLW܃O|T]R8 aIxO1E au]f̡g|Au9 Pµu@NyCC$ްK-Ynd5پ,j->"4qBGh;94h6e_/5:_h ȝI ?潮G@B%"&*$pN>:]JPB"D,_lduj҃bbYF'Lp5Ѷh DD"0C1w#upL1n,-0[#EvN!@ ]f%4a` H_`6"pX>`5[¸IDI0cC \Wa x2%Ji|E"Zн{}"ݸ3 R 0u йa A*v;pGHS)},di9V&"E4U Y"gCB@<MMwXuK ܑ~$'{u*/?JԶk8Oc6 2h_]_]<ֶz7Uwo;/_`|& Zcj=xy ,$LƪR_ׅJE2x2]Ð4UaE 3i sax5-ѐT*lWˊ5$#d\s~fx~PG6JM$cTaeQ62mJs}c\b:.8?iM&g:yaHxZi,wDZ%e=]?<́+G,vg.&ض-U-'Su k0yÒM6 gUyhR&iQ T 5;ŎYd/3c{gR~TE2Pyr o㰻XRd>[& C: }3 ].|MrT" .gױhڥ.  i.d b$4=ҠLO4XwkO~ !7lD*GWn&c:I!PH2_+M6fRb+FZlMj̷տҕBa(9n`{F6/ys4=܍s*ezRJr V~7X[*_Z{!T;QJs%| RʴTIDiw6r\2z@RKb:-L N:=w0RiR&vlȶtRzcZh2P41o%=GLV6TL~09\{#10TR`[z9zfՄ?{EKφ)]SP} hHT0;y\+I{*~0DmN9V|tE(їT) miX^ayk`sRw}ƖD܎Z |d[ IuCЁͽ:4讃HzG]/GT u;Z,2'XnbV> s}~O3;03]T,rlK1 lZ,z {ƀ?B:Н%tEXtdate:create2022-03-16T11:51:52+00:00Tk%tEXtdate:modify2022-03-16T11:51:52+00:00%tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/kn.png000066400000000000000000000052501521174352300307530ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5"`t rIDATh՚kTT3̅a:IDr`",v-5k%1i5DC\6Mj-UkSRU$5h/јxAn \NaAwΙ<|xBAßZ/Sc"!2rPH(@RBǒ SHKB =>5. y JI$ep} " (ol{>eWk x2^ kX;'I}>a.[=ѭSBRPQ٫`V{'Av߷pvx\7`L8L^:(+?OZVdt z [`rsv ^gԩL2T*zݎBl63|֬Y|,΀Q#Agpa)XuN4ny<MRO1Vлwoj5$ȪUp:dddpYt:.={\zLz f }(ầxޫfm=f̙3׏kjjpO&??zӘG' /m2.~4O;4 7';>lڵuAJ <ವ^_4AhzucgXM8r{ar`Z3.~@g:ظ>AZH{2AL,X%P]x{[FVǹfDhE`wxz/WS4m[㺾Є ay*}{ia8xw=/j}%Y,'a#}uc<oøCUuVkϫ 4z4AZXWFm LxF#X eKfc 'PCݡc?_dN +W)lzGUZKQhΝ%+a_1622^`0`Xhjjj׍c`4P%te(nVf+d0$]h4:5s[Rrssc$%%Nff& o5K/C"hwFB N 0mV8N:s8u#F`Ȑ!sq |c ̙^{b{'gg5l.L@1v;(b'pĉ67*4?J@!8j<[ HѡO`J8[q:222ׯ׵F7o/_ehx-&Ut}s\<丄,l՝1VVJjj* F#jjP*ܹsry5Kav/گ^Tn3,˃Um$IhZ$IB$BCCٶmF)S{nZ-Ʉ6A}SPe`Z9~8VZ cf@Bh(҅P ή@CY|IN'%%%Z|HxMxepݔ-钸ޕ_H[x, OO F'vp/]zpcDE'M *Ae4]n;PYh\v[]ݧN 2fS!BZ_i_P)!Yx<6랮U>0uHOs< s[FgC@ﺿ < fMFArU^ݜ^ P*!)G^X"˽T_/@P.HtS'X98;u{-$EY}_ Y>R;0Xܰ+%tEXtdate:create2022-03-16T11:53:34+00:00>%tEXtdate:modify2022-03-16T11:53:34+00:00?tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/kp.png000066400000000000000000000024701521174352300307560ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ< PLTE=T>U>V=V=U:S;S{{ 88rr鞞ﷷ멩䆆PPKKww搐<<쬬bbHH靝ꧧ22bb__ㆆ ""DDUUWW飣痗颢ⅅ㈈㇇;;SSက||{{yyww챱!!:: ii@@pp &&ꥥSS먨((TT88癙VVNN蟟쫫))몪tt YYUUaa吐WW뫫 蜜aa䋋[[IIxx99tt韟︸쪪䈈QQyz>$+$,"*&.!)% #+ #&+' JDb*X:T$dxki=}& +d F)ICYXZYC%d^;{.m+G'م\!ifki/@@@gPpHhXxDzT4[y@|x@:+<=+<<|u  VM-VmA|B%^yy $&e`0Nw4{@YΧ#N>(P @}& H -f&HsΛ`K.T1 $<` 3,00 1moj?cvP%tEXtdate:create2022-03-16T11:53:12+00:00ay%tEXtdate:modify2022-03-16T11:53:12+00:00< tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/kr.png000066400000000000000000000063031521174352300307570ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 58_ IDAThZ}PU~p?PEa@Epguiu0jE -"R'6k+AWW1e4RQ$),K }1p{f뙹w{;w/P;0Uv`qGTTTa}ACC*++̘.3g9sXSS㪹Q]]g~벽K`Xc={Jhr ^{5\v صkl6EѣGE0!!i& Z,A'x'O}}}xN P[[ӧnPT2001׬YtnܸIIIj5jj59_|z `6L?>KJJFQ{nfggS$N8.]4.^ &Ã;(NRΛ7/Kh'o0,Y¢"Ã4سg CCCy).ZvZ԰#,((`@@j5sssErjUWgB_P0$$^nXQ}i-[ɯ.W Ql%YΫVYZZړ W?~_n08qF#֭[:tHII믿Z,_+Vp8lh>.=wރ  I 7^A[}q\JIC{'A X`***7x6l@@@rrrֆ jv |2>CL4 BVV cǎ!<}uamjKVTv;1~Wԡ_~WF^^֬YTj8C Җ-[8Ç$IlؼyËXvTۙ3$iQ (¦oI w}DHH( 6) sGHtvvBRAtpw+u-xO7,o$&d߆1e& jD~ F<}QK[-EZ MǺ=$Dep٢tZe}݊?Cy]PV1 vDbk@ cY9h;ZC$F .|oji!6û */i86IsK,Ưe4nm>LdEP3Ɲ yY,xOGj~-{#{hfwCQg x{9]" jfb}ypVav/>j=w6m "eH D~Ef~"V Qtn|5 6$%ǪqmGPRѨ`+FW7XFШ<%DO'S"*o(U|QA@IΩ!=7B.\@ehZ$$$@93#d$Ed7NWc6_pVG}NSSS:;;ÇCCJ O/gn%OYz=ڐ;j^UPTTM6۷oǤItRTWWc֭c| fFi{׃Mn1/J0x(jQWWXcΝPTxPPPիW㥗^\vI`6/D||BVWWs+twU>,0&&gSۼy3'rJrqt޼y,..vX euubΟ?+V`MM m6"myhjjSO=frySA#Rd2 nL&z[A5|A~`]]ݠ1jkkSNqܹN1cxşh~w.ۻ\2 >AAA ._ ɓ'l{G?C_͵|qh%tEXtdate:create2022-03-16T11:53:30+00:00ۣ-%tEXtdate:modify2022-03-16T11:53:30+00:00ptEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/kw.png000066400000000000000000000016071521174352300307660ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEF5AA@! (?AO6 (6(>N (>M6??+SW! !!!"""###$$$%%%&&&+##)#0E3H ` )0..).00 _ )/(^ (] )'\ )&.[ (ZP'0J)GkbKGDo pHYs''iQtIME 43p-IDATHWW@8,ذbJD..pvsE~5.g@Ooi3 2"04Lh""Jh"bd 2FvGH"d`|b 65mgpD<XXL,.X^Y] ֹfvngl q* ͝N yܩ˫k۹qp'mvwpw1/ּ<>w|;ZҞۻJPTIM$7yxG__r%tEXtdate:create2022-03-16T11:52:51+00:00 %tEXtdate:modify2022-03-16T11:52:51+00:00\rtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ky.png000066400000000000000000000111311521174352300307610ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 3)m#IDAThyx2{f:I vDp Bj/XE*ֽVRBW"Q֪-(@Bef3{{oB{s3#UK\=Do"v 4{hYv|`2OHC{7x?YO]?O`o{^fwGfN^7b虍ӷꉄc̞y :vǕr=Y,:.?XN߁^GS5& ɣoM$GJ6lAZ6UQ::} B#eP s>t\2cMm!Ih_\Ӈ7ӼcSW!~Ï^!98Ӗ9w ˚͕X..'UԿܒ|.ݗTg ]id+ƐqHTx;?q?Ƣ-e]Nf,IjAh a$8-zEx&hj1HNacf7nqm'.`"{N !ovSp1I>OUW_"r03'~" mˍ}x!?؟*WC\*/?AǿeF ,d3I!G)U՝٣٧W!|A‘8S& fߡwA&Z4gT82܄uH{*r ) AKjr Kxo%3ٰ'/& 4 7ΐeۘxu!^>sU8,()pUF%FaԩddXq{GJ!Hh_λGc65ixv -ZZ:VV7%iE|%s:kVoduu9Hizy_G 㾹|(;YGq&AIѥN)d;pY5g;Xz;T4DXƏ~WMH2/&hjh?-!3+;glѱȜ9 =w1wn3xg@B$/-ʦC(v+F%O!L߷ 7GnD09M$VM|Pv- +Մk1yYރ$Y:=_͊?bܨbD4Fr"{˙|vBUO'$n~f[«+7Mh8't% /-'} |0}:J ,8%w:ڲTxDuw0Hj>f8 &R7JNklWh]V߽K0"Se&[GG O3KP]gNY~A.DAi.k cՑa1o(17UuLǖ>w8onu{:Ow;hHL8ť_s=O>01ÊȾs)CQ`5Ͻz,?zx"ɡB@X]gbqvHxz4Յ~a@f RmvggerZ{ZDkE=9?`Ӏۏ(+!=@R`68n 5}@%)0l6B35|^Lz=N+txPTnԈ.M-mX;T:h!у!0dzsD"7aA"P:tNWh"@6P3p{;c]Eʰ!G$<'X4I$NipH&0T2;{ ,hn]eӈU5 R zdVQJR|L%E懤L|u3f," UVp19?߳FBv-nbJLwP e<046)!;N:߸ls_K0a-eoIEO.a^4z:7Sןθ['KxX#g"ɄUgkDw)z;.֬ҏG`H CM}۪I5`'n&dwʈf2i(=nEƨ|A?fBS0*wԞQ26U6m;!Ew<@ I)v3>Zȴ^DD(EEYSST}o_k&x` B^(߈`,ZZ7Feds|Ay3^o&|Ze;fd\ bBIB,oիI5p̟Q? ~ q:3ّ2 Uȵ62\ጲCǒkђ Xz$#LKi9V #@0@{zz9~Fe}4j@F۰9 Ns$i İcW"2\$BxlphL$y- [$Bc>iP)Ͼ5/4t*c%ЛL*Ơ(0o It!Gf8E(1$ZCfB4bbm Ȇ*O[YDY-D)׫V;p3Md:D#~Z2 yLGKkGzF:4'bhI"lwHnNcGh҆9>OLg"A(?Jq)V?Hh a%&7rE#_X$I NFg0d6FՂ0`P- zd B .JG4 j$YJe'^ ج*ՇlB(t @':;ɹ\{DzV;-&4f `,D2`{شD<~3O>]@NFda&6{hm>wJ6سM8| rR_@'eY%%ňժhTH&`?J4;_(@ohZ?}8a#soη?TIh%tEXtdate:create2022-03-16T11:51:41+00:00q%tEXtdate:modify2022-03-16T11:51:41+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/kz.png000066400000000000000000000114521521174352300307700ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 41c\IDAThݚy\wq?ٙW{h=$Y]ےe#D0ۈ8eVÁBbR U `66>AmY>diukfvyof{cfGxՅz3;ӿom` +c%X,>S- )>$q&eb ;&DP|l,=^xEI{Pt j,$xI~7kY,`1X,h )4pNH (>S;Y2K}@FHhVwjzɸd@v %+i0 }2JM+$q&Q!(_q3.D5$Y']Fb(-bh " :KzH f1 ")Ý!\1(3D^4#.a\0p0^{YοYC8 !r( VQl!mA>?EԸ=pV){+.;n.s"U28jI~KP^ JL)@䞪xMIT#Yjg} S|wDu>u!ezYȣJ B0'UN9N5wT CZߢ7M"9;w5GVXLI>_ ]憒a;c)Uˊ?f1l KzpJ*3Y7W9肔EIL6>O%,h|ϔ䶲#bbC8Hwo ߂ߔX65q TCjkΜm`;Ǹ p>S5aY)_-i ;ΗHV25$<s "qwo<~S? ha@c)!)CoPv9M{f?]ͥyev)=_e;  =ȸZ¾X -'XzcLe5EP!~mbl x~*R*-Q= ͂kwLe\ LvvBP59csO?ծa~_D}q>!ˠG 8[W7dQ>KRy1J)T͍V9GZ] ` ~2q=Nv;L\ :9 H\O:@RPiT'CXXhֱbH3DR6Tv5±d׸D"kon(eRj/VUЯ\=@00 ZO??Pɩ5҂4 TĎP;KzKqwo9]u0^S:~\Ɖd%I_5?Y Oo],D9AQpQ Po 7ڄSR/JsdLxE06@wYC.7˔P"),.+D8VvKzmCn&fXCd}I2v Srw朡˳-Tc$53]FdA;/DfQ/`jzzkme(%`l=iݴFAyTY<2y-^Ś:,0!"O%7 Ά]FF/{M%Nr"Y5dA#YhYba:K}q[غGNU&Һ\Y΃3~2ǧ:X>wG6P wS|T#| /`4)3:4]x́4QihaW]AX%Rmjd_ϬDs]{xn*JMI??6FbWpஊ71qs[a~<ծa܋@5L*zobT3y(4C lbwd 9;gMPtӼ۠]` l#5+ `-H- ~U(;í-T# :e"9;ǓU<1G6үyxM8e7yrV8ypS4g0 poo"O+[0w8*TvfQЉl'm4-):܃ZgUJt#9A7D\w<˼><㓝%2( 0z4GOE/RnaV1mݟ.,wa|e&T7YTYu x4{MlYfҚy^s84ۦqH&T7Yq4Q28Sr$,XgYbfOϧ:\~S)^glf}J⚅5lr6a}) B.*hOs9b ŋE񥺝<9u w_Lv2qG!,bW3܊M" zO?݉jJM)alA C`:bsvLݐHjͱ1p+3'D5/qH %rϞٌSR:1Ճ 68i]x9Ccymv)r}Őreы|s`F݄ERdś,BɌ/'>a>R{g2qkYÌ1c 88̻!3D~8~ Yyhl=i?i76׬<2qcq*YSLg]5  m"DR;uDq6Ct?h&Ͽ'BI*1$j0 WFPtGQ,gcVq[B9nhisNp:UN$d6g,fML ׬X]&3.tCd  gl恦#u=9.1j_3ȱd5G5.Vtu/3-oЛ*cPqoSK?ʐRʮp[!!ⱩNa ծa^f9{vq q͂ߔd*f4JOeY+KIiԔ=ehIxev)ER S̋`5ZSI`:xN F7w;㏩^T/-+t'Ik!:]&Ͷl35+!b &Zlç*3dk9&k·<8SV9dgݑf2 W3ջJ;GʸŶi<ǝޅ 'A)>W*.jkhf첂]ʰ5L}̼YWNqW~LV؍՟cK^TNV˙UlڋBK`!XD+Z?Y$'*fy4EtvZFF^aK^>Vv}7zG5ebY>W*]#Ln^mP;7#\'j KQt97#"KR41W cZg ey^N$+*>7vWFm⑉T||pV C@t*1j-|NIpfaR\,l{/ :achSӫlyaTΊMRiMsҟq$QÈZBΐ0 ;XKzO>&3n*UE\k׹09 wJMIF/f1M%=p71Pu㪇J?i?O%\lo,h\gP]璄偡? 8)A9UROuCD1d&U.+Ⱦh᜽pҨ@kz9-+4قqY !r2Yu/jwIЋ'c2.~N*s"ExgwHȗvfMT# :ά,h$usb4^(ro/ߛ {s(^D-aR/: 9ZGGTJiS*[ fp+k\Ct'!^2^QF}%tEXtdate:create2022-03-16T11:52:49+00:00qD%tEXtdate:modify2022-03-16T11:52:49+00:00>Œmm44  }88̟ѧttuAA  ;;HHCC ܽ׳,,|FF^^11bbEEWWhhۻ22tvvٸҫuuЧǕ%%{v//++ƓZZ!!DDGGQQ΢Σz33]]..y00KKxddÍNNjjrr &&ɏď**>>|{Îܼnn&&̞y\\99ۺiiЦMM33::ŒIIee@@zz##{//˜RR ~ ||Ӭص?? } ԋ‹ƒ̥ϥݿŠ$$**Ƒ9;FHϡXZ~.0ۺޣ|]ҔuɴtUT6̻ !c(bKGD2+M pHYs''iQtIME 45E0IDATHc``xF&|F6|n|_@ KHJi(+(e6șn8{yzy;h@@`PpcHXxDdTtLl\pFMecPNtͶ-;v]dy-* =Mp:pЂv3" 8|h gU l  bcN.zNbR pvsv50;\x׮߸y;θ QZ߽wGٟ<}W,qT,o޾{RY?3ea@%tEXtdate:create2022-03-16T11:52:53+00:00 %tEXtdate:modify2022-03-16T11:52:53+00:00hctEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/lc.png000066400000000000000000000035671521174352300307520ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5"`tAIDATh[lU3[PĢr ^cE1^%1Ƙ@0jc'_|L;eKInJƵ-.n,vs|8K4,—lvgΙ7GY!W@`E _ 8 PAMxpV*iAѦJ?P^ <6 c*M)NX@y` 22] om7t=KAM<;R?7A  *n炙,_06'3’䝡|.twxTX4>YbF} T-!p*xo3:Y*MH V|cGغBћjc|^~h?·}OK/;',1@؇am7ŎQ&@U{;[.9kXdF '(㗸FY-E?EI|Du0cΒБޅF]S:~1bY dBt@Xck>[2޳a~K_}߅ &Ŏq'oCIga J t ŝʥEJx%tEXtdate:modify2022-03-16T11:53:34+00:00?tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/li.png000066400000000000000000000023251521174352300307470ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<FPLTE+)~*~)$;_ /r*+~5gMO<5DO,w*HK:3BO*} .t /q-v*|+svk3:GQ(+y .s,x .sAJHf_0lb.`[3MQ@?HE)e_6?HHWV9g_0mc.XW8$;]+{HMCv$&&{#udqayg wf o_o %&%rf*7d1mrf,***{"UHu!p_fV(**(}%AJG3i{m*'+|#r s '+)&IOB /ppf.&&)~#r`p%$ral('&&:FK8f2*xeɪ0Ŧ/o^(,ŧ/tcа1o¤-edE){CŦ-ͮ1մ3:8p^+:ӳ2'6-ɫ3:M^(=M^'ѳ2=յ3=>в29>76%|;,w .u?ڸ1ή1,))+ӳ1ٸ3NYY$9X((  283 /u)}#o]PF@>?CKV!e&w++'t0%&IbKGDdfn pHYs''iQtIME 47iRIDATHc`2,lg!O/;pqh/ ($,"*&.!)(C <2r J*j$:GK[GWOҊ4جmm]\=<I4? 0(=$4D?GDFE'$&%3肌̬ܼ"bҲr]]QYUWS[WF ;:{z'L4{iG3fΚ='u h¢K.[bVYKFX~Mlݶ}]d  @RaH}QF 5`ԀQh2%tEXtdate:create2022-03-16T11:52:55+00:00zN3%tEXtdate:modify2022-03-16T11:52:55+00:00 VtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/lk.png000066400000000000000000000046641521174352300307610ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5 zr~IDATho?{^6v8I FBڪ*ji+@%/ **Z 6!!qIĉ?ٹY?@⍀#vv̙{<=(;—\P%YOwZuh9F(/'8>c-}2Um}@5X m3p;+t"4 [Bv śuso@J .N9x_C1YQ}'er\sd" u@n^k_sO6\v>)0!alT!M]up(>z\]u&K7/hע=ÇM06''(U6RP'J/z%?Ex-i;4vg=G+l))z6_vP`2hi 65+LLGiPxFFjj}@'_. (QT uD>% 'ŎDQ#$up kځ.a#kAZ1tSD`~ :vB" "ZS ~4MB\fb4Ru7 %RL}E",{zAm5yLU5i1̍stL h4'd\IM3?*1xM*E}w&FBM`OWUK2BŇt8 ]] fn(!l\dϒ9BRJφg 1C>g~%νc쳸.x.NtP!*eůU?;\9E9PQMwޤx=ֹ,c{j9z ^zS!C c죆%A @q=.s8BTX [<4Ch@ n̻\) xu5Ў`|SaBE9>r'tNTtH2F4K Jef4F a9.$Rf>to:PDY0TxJփ{yd}ׁz)&R$Xl*cf-Z P,/njC;B`}eDI#]#Yg;l)" Hxц჆ZȭPh`ۆtv>Pᐑ*ՋIo`!^A1'RsG%>\s] @Z<>xD:@;`*YV}"\?Eߪ%FrE4ڠh=? *LF5ũ~eSt謰i 8c`n:1gC[W!&sF+-Q CV{Bi9++*^t{q#W4y ɳO=fH` ^ -'n5ЌXJE/xda\7(8bm:"jEux^比9Po'ˊy  F8صM(tCqB吻u$`L!K= z4W Wt {;I\]$qW!JiELGߊ_ǒYO};B̖2X(py WB rS$&'q&.$ %}RcBׁC̝3zcxp_ Sg|R :IJtV >6pրx'Caѧ)X*NH*f,I qf #>`"[lORZEg/ >P̞`<{g4>Pa`riJ|:[_"ų.cɱVhA.QJpI.1 WQ'fw@T+vB,Bqw ljh_Ue4}XY(Yh)@`/R(hgJ@,+蜏/w*`ou ƪRw, @fk߫0Wzh#Q{1 yF(ohXJCY'NKΤ*MǨljڄ643i&vՙXjYζ*:+FlW+n-򳟋˝p`n !%tEXtdate:create2022-03-16T11:53:32+00:00D%tEXtdate:modify2022-03-16T11:53:32+00:00 tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/lr.png000066400000000000000000000020631521174352300307570ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<}PLTEfg2Oe55t8&t☜쟞랞i]]c<<d//byy11s**((~))~44ߌ,,.. m9+y歱))ttn3P pppAAg++uuocc''|3Sll:1//!!z99 lssCC ldd;;hq$${++7imqqqqq2N2M::8:b::::<<钒pbKGD~?As pHYs''iQtIME 46cyIDATH͕GS0Fe 8HS%K{^;cFb&uћW" uEQHKDߝ-kٓCX7 \O m1 RJ|ZVAP[W6R [ZAjk6 F jC2 !]0o=E+v;@X)?ȁ$*r7jd%tEXtdate:create2022-03-16T11:52:54+00:009%tEXtdate:modify2022-03-16T11:52:54+00:00d];tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ls.png000066400000000000000000000017651521174352300307700ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE יڕsrpuusVVV///777WWW]]]hhhYYYfffSSSZZZbbbkkk\\\000((([[[ddd333iii666 --- :::gggTTTsss$$$``` 555222llljjjwww@@@JJJzzz***ppp߉HHHOOOLLL&&&888???ēmklWTUNKMTQRYWXpmnӱԲֵ׵ϭ˪̪ЮԳABCo!bKGD>Id pHYs''iQtIME 46c#IDATHc``#B2WsprqU^>~A! $)iY9yE PRVQUS M-qm]=} 0042115#6s K+k^6 w }G; v"g;0pq%7{<`e>` og'OAV!a$#`̗BiY9iy"[~AaQqIiYyEenU 8AMm]M}CcSs]m nU -xA+WJ!`h0j01$7%tEXtdate:create2022-03-16T11:52:54+00:009%tEXtdate:modify2022-03-16T11:52:54+00:00d];tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/lt.png000066400000000000000000000006251521174352300307630ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<!PLTEӬp?iDjDdB10&,'-E'bKGD hV pHYs''iQtIME 48 7IDAT8c` J1B0 4` f $R`%tEXtdate:create2022-03-16T11:52:56+00:00K%tEXtdate:modify2022-03-16T11:52:56+00:00:LtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/lu.png000066400000000000000000000006161521174352300307640ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE)9'7BP1XbKGD ٥ pHYs''iQtIME 48 3IDAT8c` J1B*J B 4` F !ؙ%tEXtdate:create2022-03-16T11:52:56+00:00K%tEXtdate:modify2022-03-16T11:52:56+00:00:LtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/lv.png000066400000000000000000000005741521174352300307700ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE21&9d˟bKGDo pHYs''iQtIME 45E-IDAT8c` H0(  0R (AM0F( []ۿ%tEXtdate:create2022-03-16T11:52:53+00:00 %tEXtdate:modify2022-03-16T11:52:53+00:00hctEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ly.png000066400000000000000000000013461521174352300307710ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE  rrrŤLLL---򒒒111jjjhhhqqqUUU888DDDIII(((EEE%%%222yyy))),,,==#F#F"E]7bKGDa pHYs''iQtIME 47iIDATH@EA@ cwD?Ƞ(;>N}:ٙ @>`$@QP0" B Fh,H RL6R,D\Q>uѴc=ŝ<O,;lA=܎I.$#FjF^$|Mʨ ^hw:N12R1*-?N12.*-]E0`2;P1*-\E01.Z2Y27Q17P1o?/(U1WG0`2(- ^e0F+^8Hx2N|=/>> \7jI>me.O :_~~/g ɟo7Jǽq Zˎ=j%tEXtdate:create2022-03-16T11:53:05+00:00li%tEXtdate:modify2022-03-16T11:53:05+00:0013tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mc.png000066400000000000000000000005631521174352300307440ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE0.3HbKGDo pHYs''iQtIME 5,$IDAT8c``AA`0&\Q A!O+%tEXtdate:create2022-03-16T11:53:03+00:00S%tEXtdate:modify2022-03-16T11:53:03+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/md.png000066400000000000000000000054341521174352300307470ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5, IDAThYUg%+Y+ lI@@P`B/Z.>`Vi(UeZh &$$ df&3z^o>|eVNUW}{s\AHHoxWWBd4DȊoG:-bu[ŦO1\RIqq.rH'@t.^M HN  XQnV&)!W;){zX058 l0K8]#H@K;TS cGCBy'l+Jj*gl;?;Xk+̻oASLNe;;:ic:S#9v< 4 H "D+(4K8ƻ,# 6&j B !̊xrAJIIj5@\PIehgB`]hĉ8bu7lA\Do9(8 XX'WlM!ީ' #eE\ LRUv\|'7! 1TMT[X򢸄HPB_:7j# 4`|-N|Ah&H 񎍘OY~>>BtĈ# N8:|ڻ(n%{Y.}gmW[ !=w:F\_},r]mB pj |$c#[AD?P}!p\yU@\a>L}%j'k35v1Oqm;xk艍^m²B]g1r zҎƷW7ʱ&]U9s%|!![oP(AoBV H5s??$;8_0J =Z.뗤[Ŧ,MXl O*J%tEXtdate:create2022-03-16T11:53:03+00:00S%tEXtdate:modify2022-03-16T11:53:03+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/me.png000066400000000000000000000050101521174352300307360ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5y>IDATho\g>a{#& ΃X呴 iB(̮RbH?+ciN$v("x|pl1sWkJt1`W {QU!2PpA*; }?5?5N0U-gq'j Y(AU ` P'{y[So?yv#}Qt?ހ) BAb҂B,@@ l=>FǿJbAR'm;kH׃'(dO!JŢ@ hK\(@O=uXBGcdžPavo`o0TTYFcCy}b=)f @J2^qA^˩WL$y.[S6R=q/''?e)2\~3''٢gEb9d >|,@A3Cl>jbIqt+4FXH9<eK#w|nr<&j-2dmO5LA<ໞ1.m{A1.JfuƂK@>/~k.4/lҢ=]o`M^@~-WU{͗Kx%tEXtdate:create2022-03-16T11:53:04+00:00{%tEXtdate:modify2022-03-16T11:53:04+00:00 F8atEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mf.png000066400000000000000000000005771521174352300307540ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE&T%S'T'%&'bKGD ٥ pHYs''iQtIME 5"`t$IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:53:34+00:00>%tEXtdate:modify2022-03-16T11:53:34+00:00?tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mg.png000066400000000000000000000007011521174352300307420ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<n$x^VQ\5%tEXtdate:create2022-03-16T11:52:57+00:00%tEXtdate:modify2022-03-16T11:52:57+00:00GtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mk.png000066400000000000000000000031301521174352300307450ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEV>=61.vv-\*O]5'&# {T2Z _  `;dG.<Fcx%=YwnPmei4G,~D(bKGDg pHYs''iQtIME 5 ˥.JIDATHǭV_A=v9`I$"wPtBH B *(vE[wr#/μ}ogwv8. d1 = L2uӉd8bB2E1th퐝ųlwY-@;W|J0+=Q|a$Hqv2PV<)* NdJ/W1BBۼbNR%ʠ3Q_RWո((4@AohjTWd֘;@hS-DE_ Eſ݇]_L@IG< ]wwņl^|O/}xCgQ~_rA~;ҏeD((@P@O@CRT8KB^O@A| Qg#q $H8SOQƄ094& FV&cf #q{r>EOXZ spc+7nޚmX]-\ktLol:9wsS=Á"b>X$ ?xm!Nt)@Ng_Xw_3cfЮ7Y; V\)^'*-~ 0 ~KJpÞ|xU@B ?43322110100/nm?>IHNMVU_^hgsr~}҉וۡ߬حୣܢזӊ~tsih__WVONIHii54ttut^]^]ML@?ܣܣ87Ҋrr]]Ԟڞ:92201NNI3G0~q8866硟硞&9&8.?(9&7FTs~->r}$5kwAP%6'8'8bn):am/@7G%7IWR`&8R_v0@u*:栅bKGDYz pHYs''iQtIME 5\w%IDATH;ALJu(?fv-~Q;SI7IT!K$םP I?:h3ϫyܞAh(ho-&F_l ,A ޠ%%$'$R&'ˠ R%!ŝ̬5AVf$ ArsSsFig!AAt .ܶ}]Eݷ9xJ8y>s _\t_ W˥[ Ƶ7C`*oUU+}c]Qp8 xPٯ-" x?vLY LqUP O465Fq= Z[ILH[x.N"::BWC_](A{¨X084lwFF,Ƭw#Р`NL0N}4 0AǕlzf?Y,k}i,_X=S}qa^]cceu[2\~ jE%tEXtdate:create2022-03-16T11:53:06+00:00섑%tEXtdate:modify2022-03-16T11:53:06+00:00)HtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mn.png000066400000000000000000000023271521174352300307570ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE'/&.'/EBrQQ&/&/'..-`8*%/B'r+-u C'.,Q#$/S#w--'/).X!p6*f/,M$--K%*-S#dR#;)fkts1, I%,-7*4+=(a|2+V":) D'l(.^ 0,V"v!0x]  U"nu_ 5+@(yq |~j [!vgZ! \ |j}qJ% *.9*T"*.E&3+ ]bKGD)Ԏ6 pHYs''iQtIME 5y>IDATHY7[a'IrBST!j )1S)5J~j27ΕCB$yYށW @@@8 $ 8)%x@L<QhRƱO$WH-{nMU F@ SYi1 Y@Nn'}~AaE 3JQ[m2JPYZ_Vf"`-mr{guWwOo_Ih20H~ Fǜq~b秚i`nL,kp:Ét;V]^& 4i1,nzݑ}>?'CLst޿J?!- ޳7vFr\@1O Q/nl!%tEXtdate:create2022-03-16T11:53:04+00:00{%tEXtdate:modify2022-03-16T11:53:04+00:00 F8atEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mo.png000066400000000000000000000030761521174352300307620ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<RPLTEx^w^x]x]v_(R}Y/P50P}Yv^87}Y,QAK*R9M"*Qm>g@2O1Oz[JH/IIz[v]HIw^Vw^w]w\?X {[,zn0|;L0^B |Zy_€;MCJ4mm |ZT)>,=2T5b2b3a3i/`3`ac2_4#n,$o,&p+rzuys)q* f0n g0d1d1:x' ĭ =y&a3+r*m-_ dV!6v(b2޷ݷb2vZ!l-մ.s)׵m,Z ?z&xh/g0B{%wͱ i/ f0c2b2^ Q"Q"D-Uɛ6&:Ѷ+PD#x< {b$ (ٵS@ѻg^D .(-;P~Pyea#GuяoP]/>q:5 j9K^kZ XW xAxIlXeЕ1|5pzS^p#$4ߴVoݎ Es6K-m9B~E*MoT#s85 w< IS; л{DH[Oe>Kv^|Qgt`ykPR/_ #t(eevQ2Y_cttdؾv87o'SOGA̬YsL&1?gqvFLD"aaяܱ 'a #s,le9$Fq&]kZM,/_)TG??1Uc+XX7yŲk(G]@Q`(_q/Y[ ;0 %tEXtdate:create2022-03-16T11:53:01+00:00)#z%tEXtdate:modify2022-03-16T11:53:01+00:00X~tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ms.png000066400000000000000000000071301521174352300307610ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5~ "IDAThytU?sx3PA <Oj)*TPRaYVUK) xsdx"‚0nLq >._<0+Gce$}W z?rCC9DTw![DNa=JKRvO>z/!%%X֒ȱwmңg</ryz0c叉̡-ῗæp3f.PA-}gLWf2u{`yHݽJf lMNNPQ_Yx O gF "l"njc]ǘt*P^fa 3a܏y G^>w;Kǩs bbB 4,YM/Ixf:+ҝUs m~z@r"#C4gJ1z`osi)1'wE9jw~@{ J_d{HhfJ+d_@dd(!C;F]Qx$@CS[4 Ԑ`pTmyKϾStYH׹?]YѢڄ"(.e(- SBE))JR eK&hY#aWXZ;|/y}VY|{lT&r%YaY\V| R9ma>t)WeV+=$QI;2 -#F)?kMJ8CQY6ȏf^gH6 Y7pePo]BaЫ/H nƤ3ڍVx W$I/\ 6<o|Q{!23@^AU}e+9K4 ؍$j(GE+@ څE:'ڶPlfr¦uP>9[]= @JVhy;\S'[aD)~fɾ: oY|s|oFNAԃZ&lĬ{ק dcp-Q *< eZ(NM7(+L]pWR* -UYm bn *AfE eƂ(ҝkʣaA65+q!VKTIFZ˜LVI枫I3i '(~ƣ{l%Ǔ^UUi7k]!o7}gK1(gg`ׇҥk)zy#nPn$HAI23- ˇ3\K9csox˯n]e!aM$ eVV;J`K"1PPn}:/<yFg开7\OHJ y,|u\=$qn%{>-ۃCņEiסBBl8ӉbEChU=pW@q1ޙPnQ0(h I3ks= Oƃ@4Oxt.C0 F7Ob 6MA:gtp IBB%3$ȪcPtj@Mg +Ǿ(֯՛pݽbG&ęJϿb~%.]#f94[io73+k?zd6_{| Sp":[Φol:xG7b%tEXtdate:create2022-03-16T11:53:05+00:00li%tEXtdate:modify2022-03-16T11:53:05+00:0013tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mt.png000066400000000000000000000022161521174352300307620ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEܭ táx¡x̟mƢzuǣ|wǢ{wǦ~ῪȲ۪rwzuvʙgˤ}r̤}ss٧|otwsttƚcı޻ھǦuƬvvƢ{uة|qtuǙeobKGDYz pHYs''iQtIME 5R'bIDATHc`Yaf+;ppm7// o@ 2@|()k.郀X;8;i8;{xmqI o@h8GD:;9yQ`$A@h⥤ouZzFFFfVFNn^~AAaQ1XRZVVV^QYe^-YS[WdMjBjniU@[{G'IGʩei$ dJ BSMA3g͞3gd`!,ZLX0jH2n1!I%tEXtdate:create2022-03-16T11:53:00+00:00T%tEXtdate:modify2022-03-16T11:53:00+00:00 rtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mu.png000066400000000000000000000006701521174352300307650ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<0PLTE'7'6&=/fmmm13_ CMMWbKGD pHYs''iQtIME 5bKIDAT8c`T`L0 HQF0 La0`7p`K0#F/b_{%tEXtdate:create2022-03-16T11:53:01+00:00)#z%tEXtdate:modify2022-03-16T11:53:01+00:00X~tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mv.png000066400000000000000000000013511521174352300307630ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE4433444/e8q9p9q9:~:}9}8|7}9EQO>=?kɭѝͳHr B~9|8LȫoGNvl@kEl{67dO"TKɭIr BQAbKGD?>c0u pHYs''iQtIME 4;BIDATH0 Ċ b+,n ΄A|LMA3 ĈXHEYaB.IV5MtR2LML އ vZ^7N݉!~?rtGt"%tEXtdate:create2022-03-16T11:52:59+00:00G%tEXtdate:modify2022-03-16T11:52:59+00:00̳<tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mw.png000066400000000000000000000024421521174352300307660ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE-Fo ^ | j  XO"W ~     t Uk l    v      I6 x  w m a]n r  y   } E T:4/7<Ls     \u  c=1 9H_s  >Qi M.5 Dz ;!( '0   p E@   +   Rgf) ,"*!:y4;!;QcbKGDH pHYs''iQtIME 4:jIDATHc`YXY\<|܂B"f╖W!ŠJʼ*|j2ZZ:zD7052607S47Vt N ;?1CC#"أcbu0A?9HK5;5jL@wdx'dJ&Ezd:NC^fAaQ0Jm2KCP^aZnVP%[]S[ 1qZ2Z<̒m5] .J= x 5QꋈbꯃhQ2T<ىL &NASEzT 3k(d;!w 40ӂ}l`F<v囼s&9sYG @it_aa1a `ԀQK) ( ) +( +)0j ,%tEXtdate:create2022-03-16T11:52:58+00:00%tEXtdate:modify2022-03-16T11:52:58+00:00j7OtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/mx.png000066400000000000000000000023221521174352300307640ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<jPLTEhGgFhHɾ'%&ĥmA^>rֹ{NTk?rB#b=#`H̡ױgcn=W,~J'a;#]1`Iʦ~`9d: oB%rH*xI(wF%ڿͱշ]`3Q0|O/Z6zN+wH$lUռ˼֪nxN+|Q.bJq~[Fo_ǩǝȩS`T1hF+Z8#ͦâŞ˔ɬݽۻlwXIQ0W4o[UzöLnznīѳ⫯㊷f=5itkvsНoϩԯx⨼[ټѶڤޣMĐPۯڻͤé«ԴβѸ̭̳ģbKGDmУE pHYs''iQtIME 5,+IDATHc`L,X+;&`5`ԀQF\!1)9%5D32sr KJHByEeUuMm]}CcSsKka?aSN#3fΚ=g .Zh\lVYnIlݶ}]G^RG;~r3CD5`ԀQf6%tEXtdate:create2022-03-16T11:53:02+00:00˵%tEXtdate:modify2022-03-16T11:53:02+00:00i [tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/my.png000066400000000000000000000036241521174352300307730ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4;B^IDATh]l33]ڻe5u1Ie4FE۫"RsM墊TRU՛FiVU(* Q$uiib 2^c/^/ Ws|{w//H\Do8JY\ *h. T$µ/k&ijx4ǍLnph$7Dq8A\AP$pAAP6e޽B𴴠jK Go'bOw>5㛦zlN1ϛl3uU3/#k=V@ 9IaZ Oމ "e Ǚ6FE`аl!$Ri>R:s:ylۚ`W~ހe+,lA8hIH/(<4K ׯ$?V+ OO+p*O~ 'n̨:H)0Lz.$۶L1 f Gz,*’LN,N߀?%2ouy-5J">a<4F cg"e g7Qͽ;m<FLEq[G^&c:  ܚ<=ͷw UPMMtufٷs#摯BQPaDAxK=@yw$tR4fu|[5Շ%0S5u6m"+YT,b4'ޒ!-}])ˍ|e#- SPü,8cȯ de^Xbp4BiNwe*o}7ӝSm5F8`HqyBH|+U[X?X aSpg3}x Xow8M2(㋺ @ |k8׆af|LfMQ%?v#D6: y K_KN5AG{Mf&u7g&F#d5>02Gz̖=Ɖ3J,#@0H+_7W t]'ܙ_gx]lMϭW$%.9ƹ1潕cO֠]Rm$:L]ShH!lP5LKEQ$Sy bduGo/2Ս9,[5c|ԟ`8FʥԩWho_sAf|st2:f|^y"gZ  ;[B"qLCQ˒>{k . -tIۖ(0mw}|Li:,FCr=X_2fdL.Ayid1tJ[ڟr2"GL'n%v!:׋Ub6]+ďO@_q{SX>wسO |{^VAV<pO~{q+!2N;k??u;&oͣ_;Sl߰S ihUZ{@f:.O/uΝ1kҤS-/o7a;/buT^ƽVa{@l|ݚֽ/)MPvE[ݥ⯫%>}0 dvS}jYnr;vP(ܹto|ײ;*;4lyt[Q~r93gpJDC+Z-2{/MPۗp׌qm4mi8z[=y5}S܏*m*W|@;Eī"(N9"ֈ,q:5"VAﳕP,A"1f߈xQo# 6rzE\O+j9 |J˼}ed+ihoܴi(q<#,YRB99-2r|ai[E;c%5h*_eC0Ɯ*M`h KW>UǪ87nRL܅yҼ_>4\W:EU/p3FxKq'~,jToH0KVs._@p NT. QzOI0CIqS?ůGk& kSi|{{N;X<=!8j6[[@ voO7|9х[Phw.%gyڽvJLƲYY=>ѣ7nY׀ BbJZԲ.QVV­hr.KW(# EK~BEc=<1Dct^y~<0`KaQxCt؃yb>>Δ/i\<*]Nc̞1{)QI?E cbY>{c#9l4Ry3]~>mQ)Snj BwШ<>.?8\4S[I?8!Pf}i̽w4a:˩߼#GPv ͔/5CV*Hl< 4ޥEQ*Yf ly^\4A՜94ߏb#@< ph5.UN-Wx[ `5jᵌ|]2>IɄ4t~9 h=~rUtC9~ $ծ.!DMpb[mBw2["|p>sG;x^~12NfćNaZgHގZf4Z"9\ Rbosh9tf#szB Y:#s RIt>퍱N!< WlqO?vځ/h EYIfL8C\DW;r̖H&9ծ'.L1 Exi$=IBlvqN\MM>6_|Ȅ į]KĬ8U+^D}ޭ q-lYjsT܆x &&U{hjYL'ϧ/CC^+JL}e9q 6m`=@fs\icDTE큈0s&ToqpeVm֬!q<f6*d T ^ߗn %<ء-[3̖>0[GΘ<`Gr9iy0ƍ;P᪐,ROJRɾM>cGT4|QqU݁&1o(t.^4:5⃳#r/q=|}囩nGxOvXSpШdYd&G{1>ʀ W0l"VD Ru?+'<̻ k*-ŸiWX_;͛_聆|3W,c4|'B>6 MJ|J{; wazE.cĭZ.%t#j8K hffrv":Lgq1u63205aj7.| 5 K fACE3I ҂q.oi23lB V5Ke-t1{=zmV&GlXoS0~t@bx}z:\_MvRx~ uD}@r(NLD0NW^kZZS W4z4ZKSχ5oR='49Y>hdַ¸aiiV&j#5nV9ƎASAzDtvGu5[iڻw{;@:Q `X.=cOz>} !E2Lc,2Aoڄ$ }GR?i\qa;+^/Կ׀@Ƣi̸+P[U=Gx*^ "j| ƤSr=8n?RcuՊyw![`x1tV=ð i\ Sgߩoy|f&e'Ө~Mh=v x9(yC9ʖ/(t=gĭBg0$m`zu/^}P))Vdآti/i (u"=tcϧwxy0eȹs1̤3 JSd|p({ p64g蒒[Kj]yq*H_P#g,Z"!>o 7SPxGǀ3pI=hH +Vd)Z. 0[M/}:%ȇ"~t(oOY{x'3| pD~{b_F2M]? C=b,>n8JPPMPn~7zBqO?M'rrl#+eHj53go@cvˆPrQw#_Ѯsrt=oT[MK >}: m8E8MO}P XtZ#Ur>(zO楞=/ͧ)(?AӡpPk0po~C쓿Mod-GvfMs\O;_/ AHv6?ϐ)SV+sIPШT߹Dy__斮s?%tEXtdate:create2022-03-16T11:53:07+00:00J@%tEXtdate:modify2022-03-16T11:53:07+00:00;"tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/nc.png000066400000000000000000000044361521174352300307500ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5 IDAThlS?]6v'$G ?ȠdJ!@-[ٺ릎*IUiTi(݆uZibPˤ* B)H h~8vΏ;vcHs{= 濪?&#H1-@itByv:+QE 0-0`Ȣ NF(5hBiB".NSs҂V&8!ZxhlDK z6J+sBJ0 L} ۹\ ^A過N8Y/x<^?TENk:(+- $ ?LoW).C1M+0Z.۴ g[`[m6{'Kh!u*/|E,?HGZِpWB4-AU4M{ާޕzJ" h8j6eTWiM+BhM}Qz l8ɪMHqF;s$X_ϊظ|4࣏aͳp,x~c2 6neEKRsG3. *ZhW%߅o-\PY.rDx ʊQU:[/A9( er8!I=g{ޜҲ\+Ԭ7MX =g%thNpzL{^NGPYmSvoH +VP)2\FEN7h,.{n`흰.i:w蹛6DBk`đ,pa+zlr=f%Ζ}=A3Rp}p0>Og&P In⤣wab (uШ>Jyʼnۖڸ3it|ηjfo|ba@C=tg!S[ Z͒8h'l/0.'< t4?p:p6;̔ (u:yhjx ~.듿ڮr-2dS3Pt@Fm&}œ?|n WGY,[ |.eK̔]쎿Bipm ˊrԾ+gAU%xUKС#B$|CI% Qڝ>:7F Tyb%;>v=wRJ_/ڝ9YYFʕDK>o9k6lsp)6s 8>)lv/o9xݚFZԛdC'Yxm;u:GـyCHC[~f3fbNu #1<7B$^bC*][ Ӧ; ?ݚάX9Cus- љ=g{xy.{b?8̩П=aY9LtZ$C@ Iar)-i vb5l7Q_&^AkP{`8t~D"aDxЄh;fCj biI $hEr CFx&lR0c-fva%tEXtdate:create2022-03-16T11:53:09+00:00%tEXtdate:modify2022-03-16T11:53:09+00:00kYtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ne.png000066400000000000000000000012071521174352300307430ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTERPf#f$g$īiKFT OOk*Q~FéT ghIGīiJ*D ) +3bKGD-A= pHYs''iQtIME 5 U9IDATH0EGAVZ(H&5Ƈ盓'4#eq=uX0#, b0YBc5A1Y,U\olH&e_Pݙ, {Tuå7#h/T$EBV-*b ~ae SxioMKNIb)%tEXtdate:create2022-03-16T11:53:10+00:00CP%tEXtdate:modify2022-03-16T11:53:10+00:002tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/nf.png000066400000000000000000000035141521174352300307470ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5  IDAThOl\G?]_:vG6JTi ЖV@RpNp@HHPE JR5qRSLRǎx7^{}7o8CA(/4~͌8bR \y|3nw~ȏ!ߟۇ@6mospqh ld]y[0Ź7֫y0v,6yFR QmO2:/M`u:~7\}+(n(o(764fq @TbDQG-skwiq{ur@iJ\\;\azw\O~ Q7G6@Ht^RJr,qCĂ FQG.fd"3rwre\-K0/هHLU̯yk<(PjUvP,T]e7i5۬Vmq[zW\~[|?{d LI4-S̕owVn_+_;fKi9C$E \Ru6zp]8ۿ}(rdyNNIbwi/O+,LҦݢ*Z㯥wp5lL,v$><-FB$WXXHA>~ǿdV`;6W.0|熿(}~ D$)""JH\GDBQOyt*hƉˏQֈiXt5`kta'EhoKd#R/8>Y#:22k3vWD.2SRel1?#`g|*cq<˖*ts2I2Y -_Wq% @mr·.N5Ļkc}z/ =BD 8D@ `u,^Ǟ"=O~ ӕ Eq,)X͒sɴfQᐳ( $ 9 ~BF GB^X|+T;kSgPm5D."ʢ)P ita^=`*URGlWB8%WxeDgc*G_#CHЛHpQ>Tzf]yK8ҿfRJ~;+AO4EO?.?ODdfۂ~tX}(&4^Orr@hFgw #dzOۀOl ;H%tEXtdate:create2022-03-16T11:53:12+00:00ay%tEXtdate:modify2022-03-16T11:53:12+00:00< tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ng.png000066400000000000000000000005641521174352300307520ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTESRS%׭bKGDaf} pHYs''iQtIME 5 "Ƌ"IDAT8c`Fe8` F*U0`+e2%tEXtdate:create2022-03-16T11:53:11+00:00副%tEXtdate:modify2022-03-16T11:53:11+00:00XtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ni.png000066400000000000000000000020441521174352300307470ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEgeyyy᤽Ⱦ֞խɼؕħIJX^]^\X޹L(*,022Tܽ񯹗j9FYbKGDx pHYs''iQtIME 5 U94IDATHc`` H!`` YX+`b`988)a xED(c9((󨪩kha4𘘚[XZ)l! :{xzyHlO`PpHhXxDdO&h'$&%Đn@XFfVvNn^~AaQX:HUTVUn?U[M<: :Md%eZZ;:(›9{z{gg /P(.F($Wac%tEXtdate:create2022-03-16T11:53:10+00:00CP%tEXtdate:modify2022-03-16T11:53:10+00:002tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/nl.png000066400000000000000000000006161521174352300307550ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE(&7A;\D!FEisbKGD ٥ pHYs''iQtIME 53IDAT8c` J1B*J B 4` F !ؙ%tEXtdate:create2022-03-16T11:53:08+00:00%tEXtdate:modify2022-03-16T11:53:08+00:00RtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/no.png000066400000000000000000000010101521174352300307450ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<^Ղ/FB1^V}}q}u07; Ew@L`Dc =TNyiw ? lZ+ $rGNz4 YtvȜ@ DՠCPN7N[q梇9X׬$ bf[Z00ugz 0BFPH?˱uvO9)*}mFOD"Tuj'Gl,Cm:SClZH<|܆;9 o^yychYX**TWc,)AUE*E.*8fzAglp"S%;i973gfkjHZKUsP{z+& ?Nv#mXf>5 + }G棏q#KGu:aFe)Tjt򮋸!HJ2(ICvZQGu2Vd lFD"22 }bҺ2vQȟ̿q O?}7V]7cNrҷ--@ XR1 #ІS(az!4>Wflڴiw<~W[hc-gj "f'3})E'O{Ru&9uD#_1-B@>x ML0Pi86(: Ey|ҤYa]z:|".Dt: DzzEz1%%P}C^ȖhWüCe CzM ^()) Ћ%9k Ƣ"nE6I_{ŐKeXn$\.=>CB xKbjKeU1>@6 貲ȭIBEVd=!;QЂAHNy%~+ EydkeD{3 $I{:%G냧~UOj=+.u 4:5lks`@e-JlyRBe41h $ŧC !>^ȍ/[XTL@頤ԧ B@d2up 󫩭m 9467uk{tmƨ޾ T/&3L:-xhM֞13qlJjb,Hq?z@fLCR:%tEXtdate:create2022-03-16T11:53:07+00:00J@%tEXtdate:modify2022-03-16T11:53:07+00:00;"tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/nu.png000066400000000000000000000105161521174352300307660ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5 "ƋIDAThwtUו$=u *ET22tcDAc;ΤLd$$.1"; J`hQD#{Ԉ%H2^^wι>'&į%zhpGnA|?n@A{M)jnטdM_]T qRhV =s艙lvY@DBp}8B4|$<'Βq}}TG`Jݻ;{2F՞ԝ8;qsf5z83 gg2.#߯>@n!pM4|C P(0jxf2rX^؎ 8&|Woغt"vga#q3x|v*w 2s f5v3^]y,q* G}%h/ Bz ER*aa=yiMq"?NɏDbP`{sbiz1* -I޴ϦT9LCIX4qLg?f^Vr*=*(&@s[xO^c;G"7ΏS*JKGbgN&g4
    sWPJbܑpGjlQU8z?QRVU{ٴ8N /| ز#D"bԕ}SXj|<&fŦSEךna2V dvz!r'=y4vH$ $,AX^][ު}|v* Zhcˀ~SRolB R II.fMJθ>ttk9v#lVCpI1b]!(ec~ЯW{ !iYVVQDOC|N6RN[l>>;YLw ~wC ظ㤒RaJ=WSbJT&AS!ŘS}*?.i's^ETi @% =_, =҉k=ѢA4MBfiRj6Si'z6rz{;-ThQp3]b(" hs!@(كU Jxnиz.?}} %5BdRd䧣S9.>!b35>c?z['P N⢼}"B0w^| l  eahR B`'bH eQAڿxHE1O167w?<*;9Ù.+mT ET"X/Bh} sג:2~8;) ژ\_"a?SZͼ;)ɐ`ef$q^Y\^GMax}]bY/04l!+Z3Yxw}_İ{v<1l>4ўcߵiEz';hsv:C |H?tfAQ1MDp )5*e,4E0~Ft0   YGmMmk$WAՋ[s6~ƒGG9G3&np}zٮ(P@M I@R10&DM㹋^g,: Ctdތ5]_ԃnoW7WdƧXU|n2+2M(` u'Ϣ&bx:g%p]IJx*V(LlDYȆWW'hD:-(Ol'PFhx"|SM[+pULS"\ZeG*4}S;ïO߾E8&b\/q7ߏV)֤8"r^+#.I^*|(JP{IH͞{,cPnA%.a8^Nծ|Z<)UNYY5[0Zz(jܣ["/ɂj%ŔF7N49)ܬ7?'pVVhB[ls჻ ןXW8Bİ8h&%i;5Tt!Ylυ,?Pkrܠ2sXx%2%Rݢ܀R1 ݝĜl\S( >%B˫CE<Ag៏QQyʜ  .Ɖ8'< 9ٔ.ϣ|vQ֒djm<Ϊu(-D <1!y yO#]BǛ(ͣeTػ\raTz(Z>aQN q4poqq5A}/rp//`tb#sp?&~ JsRa:x x,>fǨC #>It^YJܸPj5dL%~a67lN~,_7CuӨ=@X$B WCq_B.G/b˒#ɞ4Vȣ|vܛvRFgt~j?;o޻#VksU(a;%c~?xbO$ٔuGG\r1>{CZ)vk$"hJJa5[Y#9y Q!"%ofSGmLyz,K>CAa4 b.#j@z}X⢉:Rթ3n9q-T gGB5 /@&D4⢝X-!UYh P:H[qG5v! ]h8^˗_Сeۿw\"Zehko>y*#G/ x DK`<du _XB\^ßSU㊦=WTe3LbGܾ͛K,{3vdzdrp9>o_LClYM$c_^^2Xq﵌ O<@ƯnB2|l=kCH7D=aH/JMnOp4ߛ~➸=~ƌ(zMAI+RfC+F2G_cB "8ls5i/;ZBLrz1^tJ6$ Ѥ]:>'zl_ytŚKuϾoSYQRD-sjCJ^\aܵb!+Wر.#۱ oIQ ڷ&nO'e5(fU,|VLxR:Pi:MXD'*[x#%H$::0PccPBPc^ >9ӵhɉFPnozY{"&ZGyc:@JlV&{CH>$ )%HPU\{>; bj^ R6mv6EbC#%=S˛"DF@؝4۫)#f_ Pbx jlDRTA3ȶµ2͒յT$ۍGRґ7"%>Ozrɡmx ӺPJi=H P`SFZ{^+g™hUbo@''+\G揨Xrv42+somAJNR\8F 1q6%Oh5):Lxrg0"%B$[q:}H)IH F9w10y9n$bHYonzsF*6bkKSs%Ț3uta0$;<Ҽ+BpuF 44;8]֎JŢ!m]6g.!,}=ɶL4E+Н.z}yklU e}'Hr= hN>u Bt7{jBebhl8hJ+:EG}^_Wdќѣk:?@͔^H4鿺 %m-00tkn6q{kBLy9cofeߏRSrҶń$|i$kn2/Ji&SS UO gUJf<`*];ܻ lKZRVnS)BPbW{QO?oDZk?޹ x3M&//- Q%ẈGdeI 2*/v3x'#spyM qhaYx?f0fM!J~6@tl=O'"jи7w{ӧG&]fp`bĹcuobP$ZN8|se1$%&FfjII1a(X,^_.)ˏa21d`.<^ˑ㵠*-vr/Ƒ ͔=""{؅OlxYɜ7[,޾7Z7 tlszUR;nVz`LVAx9!P{L*Ӕ/{5 [Yv΋ϾEC/\;L ]OKyxV!9t{j>qrj*9EL> Iv; dͻri'n(8-V~\g_V7iel&)6ͤ)|Fiѓ4)+,h^>^\P [A˱"\!=4;n&~`<'WJ4b-3MUCchAZ4:n4ɎNWTg\oGx,׏c!-%j:r`ʪl*񈖊j>U<@:?Kse+e0bPS UU!#5'do/-)bv Dz !BQTպ ڐgf콁<ټ~<5 @g>MQ\Lkf=@צN86Q<?Ǣw?bmѶ Ф wNѫ[w?]`Ht1 "$;n|4qM5dԕS:**u?oiKJG[Ƭ \ ƺ==eB\φ86l+!E^5Ŭ-/?֍tN¼Nh 5|uÐckh}kd@eyVg / { =mh4SgQ%tEXtdate:create2022-03-16T11:53:09+00:00%tEXtdate:modify2022-03-16T11:53:09+00:00kYtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/om.png000066400000000000000000000017601521174352300307600ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<tPLTE-),(+',(*&0,62C?.*/,GD]Z~IF>:`]84RO)$[X1-/+ifwt2.XUjg73pmnl($@A>b^heli@=b_}zzx~{FBa^olzw)%GC40khlj?;YVHE74-),)+),)=(K'K'+)qa&%%ob&$$%RbKGD{Oҵ pHYs''iQtIME 5R ?IDATHGSAFg[5" *`F"F9w^zKo/iDy" YERa+VK@1#evRQj][yf@ >#55;Ќ!O]& ttvy=޾Hԇ|?084<'dbɩPbf6 ~ž^X-- @aum}csk{G?R] it@zxt,NNsㆨ0l +-Yq0?q0 ?>9&` ,%#7^sc%tEXtdate:create2022-03-16T11:53:14+00:00C%tEXtdate:modify2022-03-16T11:53:14+00:008tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/pa.png000066400000000000000000000022141521174352300307400ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE텅GGJJSS^^yy77 GGss88FF55xx<< \\KKCC44ᇇ׆ׇ|xwxx@@@@ll\\{{11솆,, ""//&&66UUjj폏HH;; **mm bKGD pHYs''iQtIME 5%OuIDATHc`YX" o''pqSh/e RdKHJ K ɓn^VS3PS342$ :& D ,Ȏka[;55{ pptrvqus O/oNQ_2 Q.dˉ:dz !x@hXxD$^J{8a4!7ƨD`i@\<#e$$&Qf@rJ*Eĥgk@fVvvVNn^~AaBQa1WTVUgᅆƦf ni#/ ڛttv@{Ȏ޾ 5`)S{MA3gٝd0.N2]@q [x%tEXtdate:create2022-03-16T11:53:15+00:00Ƌ%tEXtdate:modify2022-03-16T11:53:15+00:00`3KtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/pe.png000066400000000000000000000030241521174352300307440ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5ߤrIDATh_lu?w^۵]u[׍ncِB0>hI/>`b/c@P'6uYzw>(.~^F]aH˗Gy|]ٓgHzCaޮ+Ϋ"jZjjZjZj, `0{ m=T)LANgKkm2! P P:Ml>a&Ff1`^X@իwgcc6d{NI04td]rT`s& r|=tuvOx„ j;,w+؃Sh6$nѵN$YH?u|r9șHR3RZ Y.}O!$<̋ElxD^OX`(6Ɩ=$`%!G*,𻹔H&S0\ wTKT ou4߿E16eT]PQ2D7Rt31sDŎ6GmjvnfѳWo]-4m.jۻ>q;3yp  N{ؽ>a6I\,~~?}ӿuyx&:l]{ٓ]d8g;vܧcU4s$ezFM^G+}Py,_"7PBI{}{?VOPaGPhرӐK -4p,2{IuFe_PE3}"mO{Z`>f W"`DcJ$b62" @)P#*#5FSb `AhFs}oPh|@e'>tjtIUegOa8A"vfW=]$2އ"0ʀ;PFZ:)Q 9o-r7q pyuM(ujAJɣv"}4M]:psZ=@Ue>Xo =pܝ+HGcbT-QsAch_00fL jt8Ny )CaUb3nIJB\Ej^.}+ykUD_[i3$ .vځwe|‹,]KHNpQ*f @x8yKr{ igq=\Ҵ1?2/ON9hH#`zl/6u.wS_LOUq'mmC!l,;ml4L$Ij:_ŏvmƝ$O ʖ&+ˊQ8ɩ<5DEmytMOqr;Hp=CxR_k e(X5Q?_fkR+]:W&@Hg-29*n4 _3M< % > O n~~b~>d~```J9R(uxȭ~%tEXtdate:create2022-03-16T11:52:24+00:00%tEXtdate:modify2022-03-16T11:52:24+00:00T"tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/pg.png000066400000000000000000000034611521174352300307530ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEk/Y 0 ei2(x Z1  :^r bq?4d=-\[===8881,333<<<~N:::Py{{{2ZGmmm/nC)$2*|7aaaAAAw@@@222PPPDDD\5<nnn@xxxdddeeeIII)))---''',,,3$$$uuu]555%%% 000ggg㷷iii^???ܚ4VVVUUUGGG4_bKGDa pHYs''iQtIME 5BCIDATHc``d00Qf;'es_삄!$,"1ℼ'!)%ސWcx VSRVk*nok(iji6[WrrFƚ2#S3,7VӐScVo;8:9+Ɂ+>zCS4>~@a#  /$b@87"-bbF"I }P? ɦ4 #3++;<|~Ad?XRQqK NK+*Y1ں^@4I'^hjnn2[P%_6uI%I%v%N$rP i{aހ> '2M7e2" (Բ.P<o~/ ?5[YW`S`=k"errNw &C_A F9g\)~>{ SF'4qԃn4yMAƼ@ N]൘$~8s[^eIu3M!萦4ďhd̍;G 2} )~)xj!k>maK\lq_[ &NaZ;nd)oc[xs7G?ɮBbqnu35ۉ A۝BtL©h'&B6Vo@"e?Y,8;SdLR}ľ2kp5XT ~@@,?&N#{!N@J jӑ o"E`N;do߷G3Tjg_r#tKz &77h~oK`A/o |5D w?@d_]t*R6314} %r0d2Y4D-L-V\AJ^E|7Aɳ?v3WVtN<by u7 Ec P0 1I7 ]4H[ů ފgLнaIwe!38P'v}v4q @J^CP 2v.R6-bg`*R ܀ p1v\YIYmP%D~E(c cv2אq Y`cc}t36ц#&rw}G^HO`@(6fAыjB,?R܊jn!z밻C 'o5mtF3@mDP:LR><L vS ]k7jm;^INV*n zw&QǭD^T*trS!vu܃'\=CM^!M؁.74'LfI6dۉwˠE LWuDEm{y>yl PcH4%z[s>MwUYM27F7 w?3q7Bhv'q%9uv7$1ݕ`q+_]/Ht+׀#kl(}n RcH@jnSR:;磱#)u_jz5tUV24mP={1=8 z?E`e%Nm   ,ȮdrH]l%z#m]=n:J 袧mS[.m0._S}t js%mZϑ 1%tEXtdate:create2022-03-16T11:53:17+00:00Y%tEXtdate:modify2022-03-16T11:53:17+00:00"btEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/pk.png000066400000000000000000000022571521174352300307610ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE/p. W Y X Z W X \#i"cc4t3 Y ONmlZ ff8w7!g YY9x8 VVihb&k%ZYf/q.צ¥TXWҽ[feVaOO̴3s21r0?|>IHȯjjpo.p. Y ]ӨçηA}@¦-o,cUTd`:x9_^]^e[[dі^*n*_^$i#C~B`vu\QPKJϸGFa@}@ũ5u4Ĕttjisr7v6;y: ?=3$$ؙ;L0mxNF#cbQÁĤ4 @HGVv9K c!aEŦTZrr U&suMjQ4Vm_9 wtu#+9 FJ}1uk̢b08d#?6 V5c58>aQTIpXql3 JP <7o ]YZ4&V7DIpvQ킥vvSƽã!ɩ|ӑٹAtqSkr,hon1_KBSw?`~|J@^Ձ]QRot\HU;,k%tEXtdate:create2022-03-16T11:53:14+00:00C%tEXtdate:modify2022-03-16T11:53:14+00:008tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/pl.png000066400000000000000000000005631521174352300307600ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE0S:<bKGDo pHYs''iQtIME 51$IDAT8c``AA`0&\Q TQK%tEXtdate:create2022-03-16T11:53:19+00:00f%tEXtdate:modify2022-03-16T11:53:19+00:00;Y?tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/pm.png000066400000000000000000000005771521174352300307660ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE&T%S'T'%&'bKGD ٥ pHYs''iQtIME 5#s#U$IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:53:35+00:00S㌊%tEXtdate:modify2022-03-16T11:53:35+00:00"46tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/pn.png000066400000000000000000000112241521174352300307560ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5F#o^IDAThy\UޚyNwzJB20 Q@%2AA0< 2)< O% 2$2:dNCP]xyTM\d^W{9{g}Oo?Ke)hx?/ )R;ye|-W܊2PשX .8S}Z]UI4Ll #;>B@+sEZ ݌-XLnt~}T僦2 tUz.\G׭~ݝDڻ9'.7]gt usYqb6wys~IY}J- KQh/﷥oG~u|o\ZHf]\Cmu%ӃշY-<@Ee>Y,<ЌGdg?&cpi5?}/l"@QZͻ1´SX/y/ uS2SL&2,]G@>.>GVHYTj9%ksOVqPA8}mj~ fĮ ?HK;ֆY8LO1D%KMw?CK)_ KUCn?w>{Wh2Kq0}Х.>kۣOݰOMW4-e~?_B T>t;瞉b2;0ʝZw ;+ .@8< :!:]$,f]#1E:͊U/vmx@7Pt%`P1d:"] cx42W˷^MoxhX uS /{G|1# %BUo ?H9vrAgS6EDG$$6B.IӜ4s1c?B #Wl\ᜏKBcw S],NK!kH8znaLO7XSN{R[HP#uO)#DqfN$Sc8B_b!o.?R`PjbmՔ;'$ވ;:Hb T5#H5J8J7E1?&I]\7"BdoW'!jde)&L:FT⧂yum'z8\A)(T\D؛) =Iuld7N~lh k)\쿚%k:igP~t0?A'{xn?  @d4Ʈ(&-o)h b¬Q&M[Tx4wȂ}|i_ f 5hRL]*MˑPT]7|[>4b/z} {M֟U ey;;+2OG'V}@ia&Ud>ja6qT/Es 7 X#THfIf=긻+M ż 5AmCK5λxkS5'1R(m|gOg&~X(8g-{$u L֝?ym,f\Ǭy ϝՠX5料Ҋ|6e2 yUdpwϢӝ,H]ƚhEMt~|2;~6mNVF:3gaJO4ĮA:24R60z3]H)y"q!cq7VWZ2߅6yk رGKi qolKJcmiU8OC|"s.= C:R% cB6F;L~s>v7HcUߦP\#FʉF (ws֜>?7 ) ?FX ?I;5rN?`ԣ+Y˟annzUeT>t; 뗳t^̰3]%)"."p2uV:,#7CbHަ4 Pd/#*T>qN̶@4/]n}|#dG FB`t/O[EXz o;I9U~ Eyt=7YU^u!|K0Hfgo%?4c p K4fUFŊ0FZL$qJ ug|͘@U"TtP- n+! ;{ׯ">!fu#w:$u0!tAߠh~v`OBM“yK\3OR]amDxms,OK,9̝brizf[uhKhP {1O&&ד^ك=ˍj6"C%-`@7zIӠKojPB4,IPUa;#a^Wo_mg"i*\ wcSY7P"a~d#i!-O(~MRSAW k' } |* Ssۘ'6ngӒ<v;Rͣ8/Lk_a&JO0(4.lX#A#7-'+tDZ \;hK ϯ)xāqat3%yAœX3'e .[+;5f98LQzt 2wT@X҃tVx4$}| YxVyShn/`aGg;mn"M>˯߭rv\Z6HG2ÚNH"$02$߷F ckJTe.=*g7(04ID=E*GR?Q3cT}kC%gbxC3(K׉$96IQdUHLd_g6OEӍLmeh сqpr|yɺ`L4a[jz|)Š8 ] ALJmL+M,3PgC Կޭ>>HT d&0lf2е{vZɵidiT^ ìs_MtV2GusR:y|knZ=v:35Fli"㦥1CPQ8$u\g8"f"ltG}764еgzJ(jc5FظWbAm'ZGɻT}C5򒅐8O0RHq'8tw0S$H]Y,<[.g_G3I$X+p_k8"gD%tEXtdate:create2022-03-16T11:53:18+00:00p7%tEXtdate:modify2022-03-16T11:53:18+00:00LRtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/pr.png000066400000000000000000000033751521174352300307720ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEB9>PHm+ P%CɊ!cOPPO=;EOQ LY1,Gw'vP.@W NG7;Jd- $!D̈́3zZfkiihhhS;zM VX`yNN,nRFYe)leT1qP5tP$hlTQ[S]mhJ`><>>??LN'iKM#@Ljb]LSSbWZY0qO;<H Wu%i LV2.MZHw'w )kXQFҀ$m FOJa. &{_NE8=wHNL,=V .o:w[azfHY>`bV[ X^ W fZ@|'k^s U7uhUIP+@”5r_gihGt(zV2.:<$Cˈ!eIi, !ML672>R E~%oV3/bKGD pHYs''iQtIME 5ΆZIDATHc``dbfae!0sp2so7/?َ`# %$eX1d Y9y1@MAQI #!NrP CCS $$F i d34261%rAA;{G' ũ#EHAGvH  %h@H3SYib )iq33̬lӜܼL$ s) ^\RZVZ^ajUYU]P+pP]}C#\ 5ժԴիS9qsiWw `^kvhĤSfS3s(s @s%P\j]h+ "H*kYEIKoظP4-[mcv޳wMf4y,y''ehf~" nh~ M : Cy:y%tEXtdate:create2022-03-16T11:53:20+00:00q%tEXtdate:modify2022-03-16T11:53:20+00:00,tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/pt.png000066400000000000000000000034241521174352300307670ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 51IDAThKl\ϝx3Ǐ؎NHBPHH **-eUBKנUUU,DYtQL*- J!$i={^ 'jV]7J#{|u=7uIy絕:@, :@, :@, :@, :@, :@4|pYv՗2H"}y7Q ovnEfɳe-.UdxdA@H{#߼ka{wdO|j bNJZG7/ +C.oZgO% j MS^0xwCSV( iq\ӟPMύڱ-OdbkNsds݊7|ѥi0FRMh\9&6Ӓi$R9+r扜ɜ+kcR:?seM5Iim'1lj[<ۦn*2z?wՏ\Lm?S4s fJYY_wRId 9 |Ü \٢ڵ2* Q?O*^q#3q̟L1GI@ys%콅8NTW9~z#Ycc4]1wls%] 3efN/HMN2;\+s4/thIЖ$ C *k>Kro iwg^90S6u치n'XOJ 3YN~g*VfYO>A7#.K75*K5͔A@LQk'RV{,% 0Uij1nx0sSe{>imZl߼+Vie~Z>:_ %y*2"Prb9T2)(k5ߠeԘ1& K 8#Wغv}aTHnkפlY54ٝKIS6 ./`ѯCzR|3xb/giM5: [y1/%cbWAE'pF*{;q捩iéq7_?nJU!>MC8݆GYBv5_f)2%K0Nz'U 8#AHcuY.au+;"}4%U06E?\犀:b6r s :~7C55555_ 86%tEXtdate:create2022-03-16T11:53:19+00:00f%tEXtdate:modify2022-03-16T11:53:19+00:00;Y?tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/pw.png000066400000000000000000000020421521174352300307650ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<bPLTEJJIIHGHGLYfogMd{E# #zeca`cKԆ"!v ty{|W42XŐQ87RmnFٍI֤ji][[Zcw[#\`_klnmUDCV`:`^KJ_| R21saSnmTfMbKGDuj pHYs''iQtIME 5%OIDATHWW0$Qq8.q 8q?Rhsu^Oެb11B@QEj6J2gyEUU]^SK1ZW_ _x[Cρ6qE ?.º{5Co*(}a`P ]Bè 0+U`V  !Ndtp>fY/|N.GL r"BKrA=El%,]PWd FeG2&`N"[ig#^Ro>@rp'8:V$BONE,ntK|>kkO{3ydak&ȼMSy U)W [TZ %tEXtdate:create2022-03-16T11:53:15+00:00Ƌ%tEXtdate:modify2022-03-16T11:53:15+00:00`3KtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/py.png000066400000000000000000000016401521174352300307720ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<\PLTE+)D9’྾ѥԥhӵȳ뛚Jhe좡\xwȴܮƷVsZ|ɶc~|ėWyľǴw˧ˣqO68nbKGDsA = pHYs''iQtIME 5BCIDATHc`` H!``00,@W >W >yxyy3O@PHXDT,%$edy1@IYEUM]CSK[GW  ML-,0I\\=<1@? 0(8$,/(GDFEœl I)i |dE#ezFf M@W C^U0P ) EQF 5J|! %tEXtdate:create2022-03-16T11:53:16+00:00 .j%tEXtdate:modify2022-03-16T11:53:16+00:00Qs)tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/qa.png000066400000000000000000000013621521174352300307440ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEӧk;Y A9;<=۷Qk.M?Ç2Pȑ_w8VСm@\#D;:޽dzh~1P7֮yHd(H<Ϡc{)IÈܹRkʕ^v6TA@ȑ8UϠlJBHNYkϱϙ^,H*ȉG K?gޙ#c?跜+_)o[W,`Zx.? f@cƘjpX5 ZckJ=g;0G!i%AP^R"M qUCXkW#6OXQoEM D{6Ęc'Y@Aol#- 6 ۳(-E1M~F+CsxEghns?;C)-7 fw1'O-#<X,R"\7Vœ ƻtiĶXP-0[E8B-& H'e˟ ]$avc7ԋK-_ C\| $xb\(qʟ9ko`)$?REsm>2UTLgJ%^%ǚY2Q)nzLӾKi :0 ^N g'IHSAk'j'c[ 17v[ yM!Ĵ`͂B`vy~k'=+\#-)Z-!>[G "u @]\-V@+,vw0G 'Jch^pẙ*`-"#$wNp$G1]^HpOymAs'$!@ >[`Q<&~Isڕ\ui!ܳq}Aƞ{vBI`|_j OGIJO=쫯sA:DqNb UljMd6Ƙ7=eauFZ-Z%__dú.NBEZ!!u|I(!+V Tb#E9 @)~ $ i Xn!"d<$0I\xֱǡǷ%P }vlA=Vt E6k} 9VW4A A*43t¹q-*hKA0y2O}0883 )1Ǐ<0_QpSC, iA+[n%[R?[IFGs; l uWj`:~c#E*{:GtF>}m R j/ߤNN.1CqBp *rtKt Vϒ:3 a,jj:@X(3™,`#n>-v3pR j(; 0$;vZM=)=V?p_p|ǾCX5 f Gӡv;\ Q`iY2S@4/ ~sȅRy7A }|? *(oڍ2Oo;߼"8RJ+ ېtk@ H&ۀtk@ H&|Y72yH>Zf #C#B7BUTfgҪ53[Jܼ$xNQJаa%%6aB 0,=s@H ; ϣH+aQ`)vNDJI#_bMx @P-bf\l2P= {͑Fop"dʲ*9?f2 =Ed9|kd:|po[Uwl!k)A3):QXKpN*|UČ\b ˠ?-X;>vfXa:Vzb6*}5ܺ;8ŕ(g[f2YmJ)'hӚ UTxy=?Ԣ[&P_)˪䅆Oetx4DUܼu w BLiyuiYwpj13NKt20 2KJ|c;oldKYΔ n{7SL_"h4~>^=P9^ 9u7ҫC8'0epjEx$܅~ڴRp~rM؃QƏfI0N@#-I lvaWͩjMzicX:7κW>p" \USk0HqF UfΧ/杶,z-vyP2<>#u@;o~^"z?8TO4| kFJ],g-D3"u!frR׽g.^$ۙ9o54ڴn@"*L`AphE05SW4kM/s=afcɗrʣBO1[[7=wuSX²6PIX19y PJ}M`>_H-~J3wP-bo%8U7Bsdm#㞅5"b\6e99<n&ӹGOS!N `;i!,i`#P)bqхd:2R}+p8TnjxmXgr\1R"{8)(t:m薉f@`Iȴ{)FۉH"K*d" nio@"ɰgwЦ5' l3JuMp}c0x,!㶱ɹv=䈭pyd_#bzrhE# )uhu hX H&ۀtȧ_R~*<}G}m. KǐGpv|T31,!vŎCuV=m^676ņ)MLL~J2ѭ +n%qE%WpzېH,i!6LiP=kuMB"1-SZXBb!D"RbI 9k*(((BA*P)-rA( Htis/0u>zWP-J[:cJ3 cH!UQQ bC XUy=3%:2-YԬ*C }R3ʖ2nrm&H)ik{/SRG0n1x8tk@ H&ۀtk@ H&ۀt?_O&k%tEXtdate:create2022-03-16T11:53:24+00:009>%tEXtdate:modify2022-03-16T11:53:24+00:00Hc?tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sb.png000066400000000000000000000035001521174352300307430ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEXX\\OO??PP__HHẺ{{UUrr ;;߽kk FFaa ff斖!!ّۧ<<߄KKii ۓ33ڋ ++%%ܬ))(( >>໻uu ##ۢد L=מjj祥** UD8//~~ggJJ└ TC9''nn22]]::eeccddSS@@\SC9PP--ݪɵSB:²\hhhzz \f^_..99߹,,vvRB:`55 RAQA; ̷;P@< O@> N>> M=M=?[L<@ K<@ J;A Zػhg;bKGDE pHYs''iQtIME 5h!IDATHǥ[@,ADVACq ""*(n8q!(-wiZA!>F.(BVKſFMZmɍUS׎U16Bz-TŵŊG6D=x3"~ob~Ch!π֚) $R~29BmUå `k Hw]{4ANû  QD  q=H ɶE[g/| wDTxzRI6DH ;@ aςj?w Pò#;5zLXpq'd-&N"9A}Y zsݛ̗r <Œdi2WfKV"I |*q5kZ^o"6J^>L18 gS [o;2BE;w%K}jJCTvףǎ8Y i-TzL+ .FƂ?w^x,Uh~b6/9~u*_6U\W r>_Uk:;o0. (7@FU}.^U s`rC?}\ˍrn/^µ)@x}NjW`g>(TOqP-N0\*~n>e?qU(~m gW*L+O=%tEXtdate:create2022-03-16T11:53:28+00:00%tEXtdate:modify2022-03-16T11:53:28+00:00UhtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sc.png000066400000000000000000000043141521174352300307500ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5Hv]IDATh՚ylTo1x={7og{wPI9^czӐ*t4O=πM]2(dhiVO]G~ itu] g3?$kkw%ùó? mL-x ĸt@A!+/g~aTSq|d7WZ8p^o]2@ O~ SS3~ B't7 q8 B$?ɡ#hI_$?Hggyi:‚qmw?A_h,(Um AC$W.辰 G=%dD{ nN d9~#,+M3@>]Wnx%bouH/^4` *p8=9@tcWaUY_rCMQ6HR9=?'ED)BHdj!'7&iWɂ"  0R3!T5"mPff xsGvL أ {OP_`J$ϡ7+@Rx5)vK;axqdj6f9s` ; rsAQ@Nz{uuc͌?7 23a2^~;+vH?#GbLGo^3ddŰmAy9̝ ] Hg=JJfōb |R0a"zظydFq kٯ0=_#[= MBz|[Ri8x i]iEBHWUAi)kbd{菍"MwI7? s† RȪa: B~N4}HVvŬQo|XVX\oEcZPgK0 99fZXt'*q/ɱsU<vi+}_ zhAц)~Þ!];,ZisX[ILuTK7?gtmxYiJ:1p1ՍNLW6!P0(acceǝ\DX;_t:IxnƼ#zpX1͘fz}=Ȱ)BI!|0eeE+*0fW UU={wmhJ( QFqBAS M!Gܛ7DI}=<I*Hvw?70Xt #NSqEmT\9ܫ7o0NYMLVTU 8v܃t98,' MWAPԈ HXo9U>*7o0!#ҊL* .ݮnDt޼]|aD3&&BNөfu՛)XɱUOZQ!qzGj6Y<1#(|se| ~^! Q̀q(}WnVJD/#QA7a5t_(/곤C*30Nu/BD\Ap?  5yAXkKҹ E/H)Zz V8c4%tEXtdate:create2022-03-16T11:53:26+00:00%tEXtdate:modify2022-03-16T11:53:26+00:00.5tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sd.png000066400000000000000000000014371521174352300307540ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE_`g[;v$ ;"ǣؙgg;;֗לؙ##Ȥ[!!>v$u#`Ng2bKGD;9l pHYs''iQtIME 5$IDATHr0PHd%4Lo!ꄒ(dl jg%YQ+_8>aK YvƮOFkF0k^85Ry4ר7yyuM qsrh$)$ 6'o%tEXtdate:create2022-03-16T11:53:37+00:00|%tEXtdate:modify2022-03-16T11:53:37+00:00!%tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sg.png000066400000000000000000000020741521174352300307550ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE ..KKVV>>jjTT22llRR//PP qq!!]]kkoopp99 ''&& rrHH33@@tt88%%## AA$$II((^^::yyNNeeBBLL11<<--++44zzHibKGDbZq pHYs''iQtIME 5?qpIDATH#Q$M ) DYgB![BKY*}͒43/=p,;JG IAL[e2WڂVF1 j/&w70p6"6!iچmt+@=}ッC!pGFa,(1OM(L `v%1'inA\H,H$"!o7&`[b'f?8<)Od83=fγ˫kB#q7nŽz?((g!^rq!kx0~d$l.b@/BR*@PJ׬ %tEXtdate:create2022-03-16T11:53:27+00:00֝=%tEXtdate:modify2022-03-16T11:53:27+00:00y%tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sh.png000066400000000000000000000073561521174352300307660ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5!}By IDAThytTUWJ*I IHBMDVPmVAm۶q͢8xN3ڨ( ]RT*ڗޝ?*B z&8wNZ}}{_-۰$iY3UAiJ X9oAJhT/KصׇP}RaRZb-p!>KgrɋMx:H{gEh}-fe /gD A`J&XÊ󋺭xnՑGc(rE@?[ϞͦP).dlxT!OP&9ʕL`+/ѼiO`~.RUS?(9󱖖pnY@ c*x᫸i8s4Oq]R_Ⓤ0YDཏrU z1yǍ"/f@}gkf{>S5Mh}-֡Cpa:-;$)4썍~7%gϯ|L07OKz+OB}oylȿ{^݈Ի ȟ0W6wp2jl' MFsqUqH"$M:8tSr/F2iyo8'Sxdt^{k?߇@@#)O7DNq&W&=u;Uy($cUOgMf'3a/y޲kjl5Y[]: (́UUbJ1MO,Գt~9 >L<.}.!0a/DZ4-KьPr,x[,xM^A.E @OA ~_6RDjHD#w}=EQvH "cH!B=tt$Lb1)(Ps G;mgfhE*R8yq/0M ?F4F r7AJpCn-RJNXaѰ%u1TE90ER<5tuOE;s,:ͭ[H)ÉƪXv*JJLM;P=S2߻. 5H)n '0BaFgC]]G-'~_zOpîmB4`uR:V/ r);zM;v+OdS]QL[x= 4C\:-0qr"U gYއWڲf]<+~#T={_B6PE2rdy|A(+9 FS2ʆx侙v$×/ܰwͤjpWfߓ4M(= .` F#8 fhe̘f9@J&4O>Dj0Q"[(ͯws_pCS 5IQ>0޶s̝μ?솿}x)ROH$g%^Ayy&@Ta iAYWIe DWW2Sv[0n_ C\x'̽|iD\N%w0/io=UԒH>'B-CW=7E:pٍd!m-Am,-4ڢkb],gwKXЭj x2Sϭ]^b&Oa W?4< zX `k35+n+)}ܘK9膎P$&|rU]FH)f(RNZlœ[<kcƲh*[+oK2FҤ$lZ3@Ht!%h7[7ygE{H<,Y(G$Rٶ U{@TOfwfJ:H Z Ő@HX8޿ǖZ2Xh%ELUU=8%Dov[CnLժQR9SB:%!{[GRָbLX_&hW?8},6-a$Hl#d'l)Ղ͌CO_A-A7զ#.ɸދ Y'S!WBm!3Hj6R`۰j& O(Dڪ3LbBv%ܯjWqI@QIH's*¾)08p&-M;|D>mqWP=5>CH*eu# MbF4=͢ 3Wٻfѝ >:Ф58G)4q|XHGvn}<b{]A+1v u:DLxBwq#}Sah, YZlFrr˷"E5JZ泹A2ai nwmfnPW| [.96 =nS$h9OGIxA%b< kDǰQ#7&.G=P0J NH$il%m ;XT"CZqJNfC@=8lɴ/<'y_-'g 1Hjr(E4;; X[ᚁ}@X)&1.RaN,\>7i NO8AVpP'&2O| oǔM~D+%QD4 "-#GQ{A6;ޟO oDɏzSŏ~X @O`'= Z+cK%tEXtdate:create2022-03-16T11:53:33+00:0003%tEXtdate:modify2022-03-16T11:53:33+00:00An tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/si.png000066400000000000000000000023521521174352300307560ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<1PLTEuqa^he~yώߵs4391n_h,&vfb QLͦF  EwS MC% S|a{LB$ bqvr$s NN $ل3rddؖhh\\֦2噡=tJK Dؚ gkH0XvCLv|Mm h*jtᬬꏏ㒒㡡犊᜜槩jKbe[jP){~ᛛ慅⣣蓔[Xbm-dezWhH|^jw4klpA 7als#ltPs &bKGDG pHYs''iQtIME 5h|IDATHc` 02111 B"bR2r$ *M:Jz ȘdLL--I6VYYIIH;8N.JnJ^J>I(OHLbHLfHIMKψ"0dBAVvN.̼¢L"23T$W2TU(+ @S8 7@ףILJR P6}̼Ye̝7H@IxE,]|Je"bЄU׬]~2Q 7n<_xh E;$QSPnaF!`N!`AعcԀQF (r%tEXtdate:create2022-03-16T11:53:28+00:00%tEXtdate:modify2022-03-16T11:53:28+00:00UhtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sj.png000066400000000000000000000010151521174352300307520ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<?PLTE+-)+DFAz&f(h')CDZ\>wBz+j'g2bKGD5 pHYs''iQtIME 5%`IDATH0 Eїل_Mh+s 0Q;k) h@0.rgܗ3Plp28WqGNc!^uY֥Αtg_ !y@!QOYikE7lox/ 8ro=~J\M딵k|P45ݻ@s$4n< ,p4(2X\HsTUbA \jo~}$nO]G=^C 9XڛAv"Dw];g8~6S<kxy; xT|-eCWqjϿYid8زxYk #h"gb'؜KSϰ3x&SDHn=TVUUT޽װ+HQfDIJ1E2/ >g,182DOo|98"8~umt]ׁZWʋ:QP0Dk·ݟRzޘ@5,~{~|lvx?ٻѩ,ON)Kcڳ$=O bvY v^wq.F=7ҷ]//6>a9}×>yg!RcoS&[|Ef*}~/XMDno|z+wćb*}|+1Ch_V%!߾ swt<G#$ ^ `^ cQڻf}]3Cln<:P@0ܩx~ gͨ%tEXtdate:create2022-03-16T11:53:28+00:00%tEXtdate:modify2022-03-16T11:53:28+00:00UhtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sl.png000066400000000000000000000006161521174352300307620ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE&&85bKGD ٥ pHYs''iQtIME 5Hv]3IDAT8c` J1B*J B 4` F !ؙ%tEXtdate:create2022-03-16T11:53:26+00:00%tEXtdate:modify2022-03-16T11:53:26+00:00.5tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sm.png000066400000000000000000000051171521174352300307640ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 56 IDAThiUY̽wET@ԢlIJ6E#QִIƴ)McSϦIE 5ZƥdQC`2]ܳm/sk,y<{R5hFh4@ji*|=n?R}P|ȶ B(]$ہSS(!=O0G1/|**'I"(~u{Q|8j<<ץbHuy0/066J@kn 1ϝLg9J:J{[W'prh=|޼<ŕ:Lq?q^ݎږE<[y r7m o{}xm@D0%*~n6#rǓ}9`dbsU!ف"C9(4R\VA,P+nEW/KlM/lbM~xx7\N-l#tjT dXbNo#d)R[^:DE 1pj]w1gm8+(b)JRš-QĈcf# {3Z!~)%Р Q,z oF9O7Gbxm'3k]Ϲ`SN=|cW@Ũs21N&ѧv V'cE9ZH2Atޜl=KJ>^* oڋ`FxmlB\恵ߺ®+T I#YSؼj,kv8b!nλq*,M(8-_;Oq}^gn`U<+ {<08d<'۹JnQcII06S5kr(ESuZ .Bf~} e:;>EI\ G"^ѣE(NFGG)k)\%i8RG񫸆KT0T!CRݹTax6vhӥ-5k(uTz4!]t'3>򦤿B ã MeҲqkmAjr^;smZ+X"4i %_1lvi1#KTE'aE'h43I: >3!nݥCD=l1[Y˜vu5DŽm!@O,ǡf$nzN䏱(: ֲ6Tv0[O31qzY2E/6b&b&fIpD E9bSo~l/iҮ dMt8V-ɚ7"N`F5R]ypɠ}=,a7﹫L6;d \Iv'ҁl 6Nacr+F>Hvq;J~\8!L-yӣD*c駘TD%AHR ҭog\){~˗RJP3? v4ŲHjaF+iϠy3TK9ZNE}`-)[P]*+DɺW]\%qHB=Vr8&[GD6X&1,۴2%%G MV J T(N.GIw}-*}1?,2FV\62Cؾ 7w1YS9{Gtx{VRM6jdy;O "FS$bU.0kkN N6˂@ d Ԓi~a:^1c:ʦؓ\tjw@[ѕsɪa D~R.(*"_JF. .]8@B5Hמ:EA(_z$ǐa!P5s_*q>#uq/:<0o ~fb&c~^@ 4Z mZhFh F%tEXtdate:create2022-03-16T11:53:23+00:00.%tEXtdate:modify2022-03-16T11:53:23+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sn.png000066400000000000000000000016131521174352300307620ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<>PLTE r& q% s& fP/ !"v$  r%p&[o&H %! q&}"  4y${#{# q&x$y#$" @p&o&&!ft%Du$kh9A}"z#0 F\L p&Xls%)!1   FbKGDikĴ pHYs''iQtIME 5xqIDATHc`L,X+;&`5`ԀQc'pPh/?E Sd8EHHJISbY(*)++skpZ$o'ih(idolbJfj jjV6$$+idFF *8.nł+Ef4zX/GRzRd$%fIQ",,1qd 6($,RR!?-݌ 8`,ʣ0R GMb%tEXtdate:create2022-03-16T11:53:24+00:009>%tEXtdate:modify2022-03-16T11:53:24+00:00Hc?tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/so.png000066400000000000000000000017031521174352300307630ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<#PLTE@?dMDx=>`UGiC?`=L]FXW|BV~AZcIDATHYS@ Dp+Z hKVvc.ifНͷ&SAA.g8<^p:h>X` 8Ic04fcs2n$8v:b KEY]3'IUHmnO۫@_L']Ӭ l6:Kb|pd - pf6H+PV>CWzJJFI%F֘vw'><2 y T9iu>N>=zR+qw1$ p?P!-u%tEXtdate:create2022-03-16T11:53:29+00:00X`%tEXtdate:modify2022-03-16T11:53:29+00:00)^tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sr.png000066400000000000000000000016351521174352300307720ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE8~@6}>7~?4|<3{;on*))' . , --U& - ,ڍ!-%*-R& ,؆" ,"*'*&*$*8)H'  I' ,7)ޛ ߛ +u#v#+ ,M'N'؄"+F'z#ׂ"#*ׁ"Z&,Y&B(ܔ!6)5))&')(&mYnbKGDZ pHYs''iQtIME 5$OIDATHYO@>eYRQ`uT< *"ynM_2fv YYU Y l(lne],@/GP,X, @˴bnP,KZ. GǺ iJsYNjEK;VjiSP)wu.0kaL!$v&xhyELt'Hzpf^7:p܃d|Ƴb<,6Xi/W}/%oJ1|AJ+y%tEXtdate:create2022-03-16T11:53:36+00:00b %tEXtdate:modify2022-03-16T11:53:36+00:00V.tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ss.png000066400000000000000000000040211521174352300307630ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 58_IDAThKlTܙ`oc 6i ih)"U iRA]&mT͢iYdEuTm1ybvpScfuqgx 4,wkF-)m 9Kl)Ԇ'*( J)CS 87A H Mzy _C,Ji|pB$rtoo*  |AU"q$B(~yJ`q7HF)WWN3WhM+ !4b_t:fZ[V} ,cS)I2.SؙH-/2Șf&Bb YHV< djǶ})}_6%%(y|Ex|R3Ek5V4%Es<\e%|M MB;yQI?Z/$(Eoq='pA,,rx҇ybc~9Mm|,/#S/Y-<=X> ]8 9|[V̗f^:+"wXE@\9ٻ"%8 A](.1>]JIQ}IF`M0xJ`?v#6n$G B|/LήׯD`{ynl=xC[ 'oF9#GG^\or_NrXof9<m4M_E!ԛ09p틻C8 c5?NYK@Kwuf-j-VFNwat*0TcqP;; bsQLͭe=(J|w_!*eĻ)FYT4qanYUN0-^aG1;1T4]&\#LS׉-{@vdIlenylQޔPTŬ>w@W6t <qpѫUY| )- #}a:*[ksY.|S[>ܠg -15!9b 0]}#| 8Oݠo!\lIXdSׁ ~KBSM=a׍>>̖vo)kwHmxHu}%tEXtdate:create2022-03-16T11:53:31+00:00%tEXtdate:modify2022-03-16T11:53:31+00:00%tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/st.png000066400000000000000000000024301521174352300307660ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEr^/+*++3+*43444 + +3~_-[]]2n34nѩoZeR( *"Ϩ̥ͦШzaNϧͥˤs    bOcP s3p-$kk2q۲L>!L=۱or]3)/&  A5ȢmXxalXɢB5q[ZIr\լڰon~`-\__+bKGD70G pHYs''iQtIME 56.IDATHǥ_A鰲(kfQDHR<.45aYg}}f;<>r ;ЉjN (&H$!\0 @NΞ;0Bty^ښkױyXZM+iDZֹ (wP*x}2$_cW9@0coirs[<&F{3ȻBp|߭H8Ύ@{v;w{}p_yon cr G#<ǣF =3$?al=|R_JB/&d0m,SƧ@lJffr,\_X\b_\e,'lyw? _M?~ee9O8uѵoFbc}sIlC ݬf0!tg{K?`?Qll<쏋zfXcz@6 ޡāY2\hK]p -,ͤ_%tEXtdate:create2022-03-16T11:53:23+00:00.%tEXtdate:modify2022-03-16T11:53:23+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sv.png000066400000000000000000000023161521174352300307730ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<RPLTEG E+]+]Ǿƞ۴ߵ~ͫΫpɹƎ~tͪ뽲˫cw{zDbqm̯ҌcwIghވ9Yru\'Lt^sBbhœJh]MnenYpTuSjT\\IrBeiNlYķĨFl:rf~U|\~c}gHo>վ嵋`\ʹлжƓa\ԲR|PvoW}SU|QslYWƈ3c1Pg}Nis4e1X bKGDc +w pHYs''iQtIME 4 /M?IDATHc`` H!`` 31l0p<|Bx1@DTL\BRJZFVNTT4D0@SK[GWO߀Ĕt-,mlEH6@? 0dCB#"cbH6 9%5-=#3+;'7/dKJ+*kjH6@(?q)SM1s9sɓl -^t+W|Ihu7lܴym\}]ݷ/7laHZ APAH(9B(BJ)lom#e? @:.c|8J+q)%~gWJQ`e(@PJ|*T% *SCJQ3Pf͕wܕX)=AQhZ;B2rU|ǡc:wU}U` %xkѣQ,K%|4477}MX7xH~a#/]5{;,+%&@\Gm!ȿ2z$nM lA6Őu/٫,b^H$Dy$We$iE/NG!Aj NM6]~8|饩Vu 6qkaX3?F.E(F>lrD ) n)!aIA(m۸#F. ʢ PrjUIJ'~1Uh[#W iD( VOiRH|Ltu4&mЕg"F >t*^xm#R9xhi|Gi4kQ"w! UU19J ]OT;{!?{hG/P*n(DjrSĶ;(i;7FMdsXmS"~L0%`q P*!^<轛Elŋ d2477#tٰqA|R%4nlFVΑXԙllMӄڈ\&،xbhd mv>H#|R atwnd% v/0R-SY6%:Aَ:,+dȕK&qn::gxq)Nt #Kn `-PyU=JȔWťf_g](19peơ?d# 0Ap ){a<tE'"ze LY_0{aY1w,[Bݯ0'Uf%x(e "TJ@ETb R#*="_+%H)9uatG~w\poʏ ~>ٰ%tEXtdate:create2022-03-16T11:53:27+00:00֝=%tEXtdate:modify2022-03-16T11:53:27+00:00y%tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sy.png000066400000000000000000000014711521174352300307770ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE]]ԕ̀̂OO88ڢЋЉ,,\\ΆՖь~~ ssψ--bbԓ@@΅߯MM؟##jj߰XXܩ؞""э؝㹒ӒlbKGDW}  pHYs''iQtIME 5&gIDATHc`` H!``00S0 `aCV6s2< `cf(34bR2r WPTRVQUST M-m))m]=70IɈcm)S3s"k!%ei<4mmq3Xtpqqse>||py!0H9,!@R A 0Q)0j`1]r@%tEXtdate:create2022-03-16T11:53:38+00:0024J%tEXtdate:modify2022-03-16T11:53:38+00:00CiUtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/sz.png000066400000000000000000000054641521174352300310060ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 4ƿC IDATh{T?;3w; ,,HwaAJڦXGim&ZBic$ƤABԈؐZ)-QpuY`..ws]5793ɽ:;ޟ!0lA&l&l&7= l1&BЊ7ܜ Bvj?[1`U_ 2odWu! QFIh+hM*-e8P==DHCj 9r2ЃJK .\V 3||6L<Z"atvbR?7x;ъZs4+"@e]6leY㞑f鬯qnz@ZkF5$uXy4.{Y>1,f. f,BoQQQ1^ۖ,aŴn@ϓٿ낼nalz\4 "NJE|+Y8{9>a0;Nix-gp_K?OJg͢DžZdƹ khE+5b1B\B ʜxhRhpr9%HKScZ%p.p0^-ZD(:^ˢ|Jr3gGldpM ZgbmRt lTaF])rWh5Ji$QH($Is8{۷SZZL:6 ol!ξ$ e;r欦/c4>̧۶abg ( Zz\(@_^壤i<#444PYYI[{Ut"YŔ[Hv>=܃eY9w~by`L-ʉfw;H4ɷwm`ѣ?pz^Uy^.$ ښM&H)Yj|+VЀQ߂ ss)wpA\ץ K4eڴi "ˉb[%SY9ΓN/gZ4Y埘Qym'5BJyk JAJ4BzCZzv8N2$ɐL&0$o ,]4N80`O$,B`˲D"1H`d JiwNS M_OO'OpJHhZ#5x;h+@t뗴vGZ䠕S,ا8p2lfBjm@0qPJ())a֭lڴ K&8RJLĶmJKKx<ÿ剽!h9Juas4B?i)F 23. дsĸV?cXmoQUVz!8C&1Q h!?ntDP/ c,ȏu ba8E"mtTm->+1ѦÇz<lB,c466"d޼y;v˗܌mر0XnD;wRRRB]]UUUR#GԄv_q7ofڵ?~`0HQQeQQQNa Lx" -駼ts3aru֜WTN_L<\F6ԿEH S)q8O1'ܹsٵkUUUxBCzz>N?6Zspfm%@ |27R!BPm%]nA%5~!0PYp28{e˖F G Խ:=4(_ڙ瑙xi|fXqӜ֚ O!^ BUӚy^fŽ.Y׳pB2eʄR8/DNj/pʏGhL WJshQ-0Q%(  >1`\)ٓq>Ok(VbD"q]ץS۶ٿN!P@q>3i ͻ . [ҥKOqF,9}ݻٳ!2<>!iraP\FLX,FC]V9}:>rىW0kwo t[6ELǖPQ߸h`FŃ@9cj0@͡{WP$@߻fWfֻAso>p+ !4{]^%q`q`qwLW%tEXtdate:create2022-03-16T11:52:17+00:00i%tEXtdate:modify2022-03-16T11:52:17+00:00I\tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tc.png000066400000000000000000000074221521174352300307540ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5-R IDAThyUŵUܩ=L$h8O/qC <1(";%E# !AA.=;OT?nwCӍ4׺nߪSUw}{?OO Hhū c`HiJSR{̤khӍJoL-cgGasZ(.Wr~g= $q:U f׊lxOTLv3B=V9b^ŕw7O֝4&]xNH!}9yoAʎp ?8_Vzh϶S;w&}hh 𓫘5 |u-vݠ{]Kr34 >VMSf5޾"yȽ2Ho~ѧ?('^jPJxNrs3uMJubC4|/.ec5Jadx0rBа `g=3RM`y9V±$-QA.̸i]6D4] 5h0 B}zA@ Ad6O>BuK!h"nu>ok}Jp1%8>mߔ鉃o2+;HwVGӯ$/5[;b w vVRw+\q)_;l|`' mRD )|vG3kH*< %3o(qXՀYgT=}'OLϾX2Mc2}OF8(`wa!@iJKoeLw6'>ZNu̩xgqScokBŠwHz ĉ[ܹȇ1{_e8(ҐUxb1lFhYTE%>35FYב=SE5cFȲ% f*&Τp%dʊ,|T: v!e54ioڃErR*aJy aYn9筤r~JJ$EZάiWGwyxzS.~;&b-_C*eu Nu@+B{.'Z-hSшF+J7){J{vK1}JIճgd͟;Nz0, CRUgZ̘-鄷"4r3[TH/#ǎۆPPC,f}6hP0 RW"$ѧ4QxU4MSVl剧F$@t 1s(BHb;f݆L%wL`J X9VCS!(%Жa0M\v!R d?e4ָdT j1;Sl؇{/1OƜ߮dAFlo!QgB#C 𵐲VWHik?ɍʹoe\6vr@̹9 H$ql$㹸 *鏲7`:4RXVFxR aVOd~)Z_I,!)L$h󵭰2]tjF?-tMAHA*fr`'*)*>aM2ٻ!avxL)Cs0ic"* !ҖFDl\1̘ o.M57 56w[N"u jEj&e碐ڑ.zb>QdQI]N"ltp~g DAk0|t$6 "wQFeǰA}\tƻ$B-w7gvBhl 7 n z;r'0 M]:ݯM4gΆzewrc)Yq/;FDO@'M)LERHJ6)er(|˗c!շ{q⮋Z~uK8ZIu&Z+⮋X&>%9FHҪ-l]-N H 6F3chKc^˖O,5qĴ$e< 56I,XVEþp ›ocѪ|"ąM %1 Zv;Q(-'hU>o+_09<^m^G~i 8MeDh4Q&4p{q3FxL@"ee!2/N&~c`*LMҍCh,-(uvx 'RY`8qL N0i} %I)TY̊%#z'g֟eMx:r ɣO+ڎ/ZA@in8o(װrvBV?{CDYoc2:"$(7m |K9п@Ċ8ޏ!%tEXtdate:create2022-03-16T11:53:44+00:00Q'%tEXtdate:modify2022-03-16T11:53:44+00:00 6tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/td.png000066400000000000000000000005611521174352300307520ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTEg*蚃bKGDo pHYs''iQtIME 3+O "IDAT8c`F%80qQ F*U01XM%tEXtdate:create2022-03-16T11:51:43+00:00>`%tEXtdate:modify2022-03-16T11:51:43+00:00O^(tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tf.png000066400000000000000000000032511521174352300307530ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE#h}^j%6)9&6ZhN_"]i%5(8 . +pfp1?4A1?coO`h|f{˧ڧؤ}~}3N '&$&' ! -%C$B#A)2sTl"('0awnmkjWn)&H`>Wv"@'E7Ri4N4g{vXo9s`v -RjE_% +8%`v9T=Ẇ2MC\ )G`4P+GIaˈ'D0& /0XnShvś1$q:tPh1L.J|z`u8旦ᑠ턔#[r?Y[q2N7R3O2Nn퍝(#&B%3' ),H4Vl z~7Rw]s&C]ꭸݴ< +,I$ɔ҃$ѕ9;T+F ,64QiޜIb)oVmB[*F;.(bKGDmJ pHYs''iQtIME 4Qm{IDATHc`F&f(`aecN.F0j7 > A!"b` .!IRP -# r `J5P׀M-(dF62ЁIqu!7aס#c8053!I;9p`eMlmu͘]\ܜ= =m˛Ǘ? (@#CBAL)i  ,]2srtjAaQjIiʪjU՚ںzmb㠡ѶI%-ٲ3ˎLxŢNo__̖&O{cZ3gf3w^ IKH ܆/Yly䊕SWf^$uM>jH6GEo!""нu;wq={?@C2^|*ѐc$A3L^ ~RG3:gϝ'U;7 /]fr7It7wM[rs߽Ǽd''7OJ`Ԟ:}C/_< x7o߽ƈ!|t4o[}d' +%tEXtdate:create2022-03-16T11:52:26+00:00Ac%tEXtdate:modify2022-03-16T11:52:26+00:000>E tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tg.png000066400000000000000000000017731521174352300307630ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<tPLTE*(AA;;' 끁::2ge}}C RR**D""ss&&oo vvCCTT숈펎 ;;LLaa폏튊6!!55  1 kƻbKGD{Oҵ pHYs''iQtIME 5)KJIDATHWS@Ů5w{{" ~xW\2{X`L0/1)9%4_ WQdfe< /pOaQ1JJyV$JW澚ںFEwtvywOo_handtL݂@~{|bRY?5=~Hk@sq ,%ۀ{u=hc3E;{`?Ð|Oy𜞝 y ]5 OÿE#po[aɼW{w< A Lc aa _zㆦ1DL`%tEXtdate:create2022-03-16T11:53:41+00:00i%tEXtdate:modify2022-03-16T11:53:41+00:004<tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/th.png000066400000000000000000000007061521174352300307570ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<9PLTE105ݵfd|)&G-*J,)I1.N3H/ibKGD{l pHYs''iQtIME 5(PIDATH 0Pl q4I(1Ix"JlR".qHIR>tI̤%tEXtdate:create2022-03-16T11:53:40+00:00 4%tEXtdate:modify2022-03-16T11:53:40+00:00zCtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tj.png000066400000000000000000000021431521174352300307560ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEQQ6^*jiftgC,z@RA1 ?0K?MYU[LpXdTDcn{C`aCQQQSQRcfp8bKGDD pHYs''iQtIME 5'LIDATHWS@FcD0b@A "(E^`A.Fqy9 E|RS%TmPu?RP E# e U6)?8humZרl 7Pa kժf6A }# r~Gʧ  Q#D(|c*^DWj^`/BᡈTu:)# X sT0ѻy4O3Y-It3b3sť啐}um}>D`[;].P[ ON§v +uxw+B(O%QĎQ/8Z.cǨ*ޫDȂ")'*%tEXtdate:create2022-03-16T11:53:39+00:00C%tEXtdate:modify2022-03-16T11:53:39+00:00^BtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tk.png000066400000000000000000000041431521174352300307610ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5*n-IDAThklT3w^;1`k@c8.bЖ *IQմTUBVi%T%R)&QUmJ)lP e0{eܝ;wϙ+X3,2 [ȷy@e-,ھm!B[F+ÐT-uU!b^ȸG (yv#lX1w / Ѻ/shyo.'Btt2$=n㧶S_A^m`Seu_!td,5"5RG-74 aҴgv`[y|Q7?wxp]YE\U=Sٽ4JheB%G3yLga͖nӽͧhzWX̄z/ $@rTwjx<.XSM0ш9 btxQ}<=upI_c+NUXZsF2ɻ =Zo꤮j8'(JDlMWs-;\.0ʛގaQN6X^=;WSR\4h0ro ?Qv5uSNIVCbZqL(5XUJ1r+x-~o^{C6wTi*Z[5+SX'UBttCvkq$w إPxq/ș Q#B\*i][(`#NJP3 n3yI1Ny/κ .'˸zͩKK..!jJ( Z ;hZ{LKnkd6Sӓ@SOyGVs;VlѨBY)ckOS"NJ!&%R&Cj*J'8SE ]f"l2Ĥ>nWoDrBI=DnV1HvA\$Co`kc8=t{:W!5qx.- iJ|Lȷo-[|gWW:u%tEXtdate:create2022-03-16T11:53:42+00:00%tEXtdate:modify2022-03-16T11:53:42+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tl.png000066400000000000000000000034401521174352300307610ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEM, 3"Z @ f B \Jأ A 3( m @ ^I۪ 5) ?o > aKݫ > 8+ =q eN߬ <;. ;u : jR 9@1Ř 8<<X;nH- mDeg3(*,@~p=iUpnFT5ǀ DVq XްVm$T&ÅQe%tEXtdate:create2022-03-16T11:53:41+00:00i%tEXtdate:modify2022-03-16T11:53:41+00:004<tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tm.png000066400000000000000000000057741521174352300307760ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5,> IDAThݚo\}?q7HJ|DٲerdWn4 ËnnˢhMIԶ4HJ%DzdaR|h8{P2;9sgp9ws_3-Gܓ}pp8kB~n`40sUH[r4`#3~Ypx3Hemi7=l," 4l DBhYU90v"M8tI_ 9m"oDG25[za׃?wIKt$VB)FW-sך|DʙӇ4T՚EQ]ɯ'GL9XS!R+\x W]7q?ibk"æg?H^Jɗ$bPA<`@J9x]##L, /ڈ~wy~];>܃pαީэ@ IbRN%@0)as4f"b[s_" H-k]k;vcfE~8wyW8\烮OT$H63l.9ƟWG)gf/ʏQ 28#NZd8̍L[A;5F<__` Z+dBG% 66WWpa+YrS1RHzTLj n޺@lR54-@`!Lc=$sE|B^ΐ$* BB$ d?B!J DB1(ۗBa1%Fu X++{#>SmH9UΡʴ{_xr^A8K1ߗv{EQwI9/gC%7¿Q7w %ICՖW<3"TROX9#)6/6*i8M{,Zi2ʧX(xYN/O] ^cu "w:Yǵ1x#9RehJ.+JC8}9{f̖&89>r(_ݟVoA\oH$ʂ4d&ږb9u )%VLɠԞFH4;RyKl[]_e Uo]35ٌ<>É;7 ?<6C;e{:Ȃ$vѱ8E'8ޓb:S$n*2#)BH kqCX뷸:*hg |pNP/.dbY[w7 ]pMˇ~ȭyH Kΐ* iH{ V(-y46chy3<1=^`br’ p ]Gr( A*%fq,$[!7aDAFRL$PCj7Ő[u4q&K/eYl sqw~NգfFhs&p Mf'zGsه>۩ iՁR$⺢7Qbb:(I7>NOš&(LAvDDO/ .G qsprGԧD9e%tEXtdate:create2022-03-16T11:53:44+00:00Q'%tEXtdate:modify2022-03-16T11:53:44+00:00 6tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tn.png000066400000000000000000000030211521174352300307560ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<sPLTE !1.=/>#3" ESP]!AO v!s}x9H,DR~A!aQ1q fFR `9yq& `RTRE*Lҧ b0o#PckF `jw0gqtrv;AՍX==}d}5D,@ALL!PY39<29:ȈzȊO`$DjF&AI)i>@IQ0efUg0s+f&R`0WVVU02 Ьg!Ʀ6FvYR `Vba0.n^>}yPD/IAgigԁY"#lj9,sdeͯ]pPrql|ReF2 "ˁ}V(fЃe&e5M@ FkK9֭Z Dg&`aq4|x{pc"pbTݽvA.'H8 nx0*(59zx݉ff!XI01;{<# n5 VmLdWmĀQF -M!O,%tEXtdate:create2022-03-16T11:53:43+00:00:%tEXtdate:modify2022-03-16T11:53:43+00:00KtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/to.png000066400000000000000000000013421521174352300307630ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEqq--1144OO뱱OO챱JJ餤rr**--..11SS쳳SS__ BB䑑PPQQ##~bKGDG`{ pHYs''iQtIME 5*nIDATH `Ec5{`]ě3 8wXr F ($qI eel|@T&R:!828}z_8=F <QS: J/q-|<->\owN5\1ۦ(@ P'B)qb%tEXtdate:create2022-03-16T11:53:42+00:00%tEXtdate:modify2022-03-16T11:53:42+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tr.png000066400000000000000000000025361521174352300307740ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE  %2=EOMVFP8C:D `ijrKTAKISgo`h /:+6t|S\QZU^6@%1 #/KU}ov&@J+#$04?OXiq  $/ 1<%0*5!\eJShp6AXalt=GZc5@"-9Cjr% *0;'2?I $;E)4) +GQIR3>_bKGD+ pHYs''iQtIME 5+g)IDATHc``xF&ff&F20sYdhgd&FQ1q !FE%neU5u M-m]RL`dP70T0))&0[X2@`ehH!"< vHN "@N(Ar+1&)! @KXꆱ3%(ft F8Kad„. 'G^`M123+$Ā\|4l @G &EA؊0I5dOF,0WUջ5'L76587d@G') Rp^dF DPDËA[S@d^ 'dOlaaI.(̓'P2եGa3gh9se^< IBEbu][yRMe5T,('nadfa!R@2= FIu]Tv%tEXtdate:create2022-03-16T11:53:43+00:00:%tEXtdate:modify2022-03-16T11:53:43+00:00KtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tt.png000066400000000000000000000053001521174352300307660ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5+g IDAThRoq< *ʨ )swZSLs95oI:' 9 p$I"Z?+^2lv_H2^?J4*++?xj,FI?>d0u^~E\03==$HVSb6"Gɶvj*~-++&8ɉ ffft Bf`ZQ"! xZ:cu낀dll9]Uz{{iooNK %(}}('|pϤkK%;wpp8;dee^, [[1(j,V_5=]dIܽ{T:vy^UX~l6Z[1#$~?ŵT9XV"*Dllk\s3ߏV~?pA__hTw28fLȒH$GyM@sܶioo't.--122F{;=Bml'(fv^\\dttIeGꐽ^r[[:r(DI[wm6_XX`ll AX(a{`#(0v~y1$ucM rO@#QbpnƆ255 \(}{aw# D"lퟙavfQp`qcuH)±JFQ8pPg^/ۺSSSvtbv׋N38ؤDfdz^/dRw nʝNʐ}>4Y&l2Hfljzzz՝1>>C˅EdIBS3GlCd'&8/E9_4I$\Ef3A81!qeJ=̂ $L&044&bg'=T -;Upr<:D O6E`ggdMN B%ƅN,h$ !Np#d"SC"wX-# \~2KxЩ |uCh;;\&d20\Ndz|d$?D"hE(q:ۋ#dȌ~US#r(h%(M?vtf*pb[Wy< dǿ©T .#$ t,Pi&;;Kfb :P(fA.b}D# @!E 1rEq"hd2.]J8!@!A1\KYz7oʕ+t<}J˅2:Jv~ (~?E .A`~~ROyy9O)u8 ]\"3r 0;3n,~_S{g#|c*N'nGU*B$TWMټ˯ vvPcJ 0Q$IܽnJZZx\ |]7l6l6HA$߻Gg&P0yX*J__˺dI3L։ p75qjp8̇t$:?܏?EpD(85@0Pmb6 ommy?>Nqm? GX[w,Z[[ qMԽxA?!LB(X<*Jo/&cMH$}b#bd)ٸgЀ$I$ u --- QtjÇ|>tg5s履(*+C1f46e0lz?},ԵRQQAOO\#*o߾J2 bB# D8%tEXtdate:create2022-03-16T11:53:43+00:00:%tEXtdate:modify2022-03-16T11:53:43+00:00KtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tw.png000066400000000000000000000015431521174352300307760ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE%%((ii((88::곳''&&̜ccΜՇ77@@̣ٛխܬܵ$$''##hh۫ۊkkbbߴ숈AA룣))99((9s~ebKGDOnfAI pHYs''iQtIME 5'L6IDATHkS@rV8RY/tiwO3Ϝ!Q|~HXB 8@R ~FQB, `EZ%:rnkZsg0J[7:fkZ='~&b@V=:p`(Z@N ךHlМyD'̉4sfN - poaڅKʚD[wUƱmˌe뭨:=3[Zy"0=IU8SoS/K<O"PH|(T d[$Dw%tEXtdate:create2022-03-16T11:53:39+00:00C%tEXtdate:modify2022-03-16T11:53:39+00:00^BtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/tz.png000066400000000000000000000015271521174352300310030ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE8ss lEE1mDD:: wȇP0lĒ 10k CCmđO2 vmőrr:9ųhbKGDޕz pHYs''iQtIME 5(HIDATHǥV@ V *mU@]QJN,VhgJ2}xo|aJKe s P H|m}Vo(曭HL<#` O XybΓ(U#ݞ  _ؖ+x8'Q["13"o h>7R>E!_ '?_40l|Os+y G3Hn!4ǀ@o,1i x xK`[¿\g|~6OsgI⿾y `2}%tEXtdate:create2022-03-16T11:53:40+00:00 4%tEXtdate:modify2022-03-16T11:53:40+00:00zCtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ua.png000066400000000000000000000005631521174352300307520ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTEWVf!bKGDo pHYs''iQtIME 5.i_$IDAT8c``AA`0&\Q A!O+%tEXtdate:create2022-03-16T11:53:46+00:00hΟ%tEXtdate:modify2022-03-16T11:53:46+00:00'tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ug.png000066400000000000000000000023131521174352300307530ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTENMMb$wAыQژgۅQ75J"ܚĄt!տnۚ986Y4yw2,_:97K"aOK88688ܛr`ZfcbM%ۥMSN96oQaaa]c]fjf2.ˁk]]]LPLujh%%%$'$_d`skA%K,tjhKKKddd '6+iPGGG|}°8iPwvwlllֽD&䲨韞٨پ///~}~tsv=:fcH~dmliNFF bKGDH pHYs''iQtIME 5.i_IDATHUWBAGEsql[ [;_wrt=ך7BfAAVAt_JKH 0 G>Ge'8i ?'SWS^I칝g8FKS'vi]X॔l۸o}8kW/iYȬ/:k"q4MEUd޸ *L9et1( 6C'H3319 Or^b$cS86t܏^pĽt1T`< jB,K=)+uO! `X^|i)fӹsִd7CشM[y᥷²$cwm~ }XVNiqKEZVq$ @`&+.dՊE6i悉 !fM-cb4UrΘ&t^б7Mt/cY9#?[Qse@mu0ᛥ܃D(_Pacd|4Ua6$ent]%b7 jpc؋ĉ0(Bc}%^.;p$eY,ja`K2qK`hmaώNN~g\pd6_?.!BQ۽?p}Uf~wV<@@,t"8 Hq3CQE* T+DbIB4M!7Mי ]SIMۗ ktIN̸@Z7c,R$0C oμGfEi*tL#5JA$l[4t4F_ad| CT:@:iKN1sӞR^9B=KxYfQ,K*.cb^z,S3ce ֵw, MUY[xhM5Cs6kv OZd}r/"%YӢcb6;:k6X\ĞN~shYK={ww221"rS|fz_oK#UIE(,@1l> tMe'X_Sf0Ler%2\NDWUq;2,WPVf"s` Ǟs gg#搻xB˞d=Eq aHȾǡ /vk m__M]7OXMM;y_|練|0b#üBnj h)c(_QT5޻cW|z wO=|{c~scP4)qӛy L<%tEXtdate:create2022-03-16T11:53:47+00:00ι%tEXtdate:modify2022-03-16T11:53:47+00:00,tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/uy.png000066400000000000000000000034361521174352300310040ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 50bIDATh]lWwvowĩB4"iKEP+U@COH*JAAH (F%iH 'vƔɦήwg=ޝٹCB6 RlKi4?qq(%M id.^{&tۏm311i yqq( :*bAu-cAQ,b$>6l܂QɏbYOrrlq{]@۶ċ~pD fMJ*H ڢB^`*ѰD7;|{;@Ust"_4nZ1dYN`=|'˄|D?lZCJ*NiE%_!))W<9N0kg?:3?n:b.l/!n' n#H%m9C(>< |R4u 2@BĶ%}AcO%BrSGN݅09@t3|/@_IBC:|$s9kz7ljQ H?E嶻vSQ>6{-O0д:NȪ۠T]O~`0aY(Fsp0TnF,(##;BP,,p!_ʮ`FOxu4wukܶU1ȦRwh hqW!gM! pMO* ǟmjwmjT.=RHm\Fa pp/i$'+[i%tEXtdate:create2022-03-16T11:53:48+00:008S%tEXtdate:modify2022-03-16T11:53:48+00:00I\tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/uz.png000066400000000000000000000020661521174352300310030ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE N˨2H`m4/o~x Wtօ?9ň_)< S,-iӌMEɢHI.E!F "c;@0O0AJ"L ^h*+hӊKDȡ/X F]񪴋P/9::hbKGDj pHYs''iQtIME 51RgIDATHS@XK,IԠ"(V{n0 =|F.DFL\|EO56&Q&%r? i<@VvyL[()ʅWHH!kj똈n=os ܀۪_.7|=@o_?``pȪ aqZ'TLNM @d8;7 4#蝌mXX\ZVʪ%k2Ke?8<p}r* I~TY&@E!!/!^S` KjfnaiS` LA/ѳcO8%tEXtdate:create2022-03-16T11:53:48+00:008S%tEXtdate:modify2022-03-16T11:53:48+00:00I\tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/va.png000066400000000000000000000040031521174352300307440ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 52}IDATho\W?s3i;DEHEH* `CT a VD%!4JlR;vďddӞG69eua)< 8  @ D}wUIm:18pbE<ՋY[E"d/&swۻU3+[˨puOƷ>Y\~k)Ox>6E7Ev[nD^' C@`MrQG&?C6SVZI0OoeDk$[?!W  V̠gSrlmm177GZEATbtt |966f1;\%{h;`J7IQ; aP# ڨQ B0gе`{|8GHRaqq)%Zfx F}8ccV"6_D'8\$0RTCS !`accy*SHaFEJ>$a~~z=fяQI/Ɏz'd+h5/N!aTӍ·]yG\fjjbR>}AZkOS/|giQDR S 8@xbi-FԷv(s#[_S=gIR]b'pZs ;F]{8&2 LQ$VhXy>R{_[I5ZTw7^; {`2C4IWrkT~_$q1l߰ZW_ٳ =J88ezwݹTUyV֟#nӺn0iV$ 8Zc%f`ϧR>H.呉˄v6-[a.s7-MCOޭ=_t=,9_tIP "m\\d@w'"1]PW`=W0c:ʞ%tEXtdate:create2022-03-16T11:53:50+00:00Ǵ%tEXtdate:modify2022-03-16T11:53:50+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/vc.png000066400000000000000000000022751521174352300307570ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTEXVj32PA?ey;%.:{Jl*! ])A1GZWEf'~|0w#<>a9},K+[`Q_$o5BLV&bKGDoG pHYs''iQtIME 5$IDATHS1Wa^$tYʠP9¢xrzdTeMvCWM׿>ґ^;v<'A^>{-dG;~8Qv";Y-ȋKNB(;} Pgy&ke!Ֆ=5¯;Ev _SA.И&-\bоhk7x5_Λ&B& <[՗4>eSln5G@:5{!||p1g3F-a1DgSj/_lKմMH2b5Ze>7o9V AU{\A--Rj-\$3%XUYt `~bJ: ,_ e@gc? l5Z+t, 8 $s}%tEXtdate:create2022-03-16T11:53:35+00:00S㌊%tEXtdate:modify2022-03-16T11:53:35+00:00"46tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ve.png000066400000000000000000000017521521174352300307600ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<VPLTE8m7m7m"}!}(6|$}#|"|)=01^tPh!{]t2)4"s!r!r4*+l?bKGDq\ pHYs''iQtIME 52}WIDATHIS@FGeAH7AE%(n p&+<kz^w}?O%_%h :} sʷ}jKu#lm{\u+ӹ1L=U]Sqq_y$qI &#UGEd><GVw=H- 8ip.-;np 6ukS=֕.$9ۄO6AL<'fͮj"a/9WU9$jIY!X - 0Ir*}](İ$:g/ľ3a' e6l.CJ%QP[gR'130wR@Π<?^D"Żiz3gN 1 ,%xb$+{`. }o w*jA`<Z^nZKJZF3{\?GT޽;3fx{].!A/D4/GEFۨ̂GOv˛Hj/0"&u ͘#u͝$^8,iY.'jJB_^E t}ᅪ޳"4͛Ym 44P(_?NuPsbw824Ol&y )%HPU4;hX6Hٱta!pՇhIl6 vۢ`!w8nEIlKlHS-am.j-CNK l؈ggdXxHb B#~,VBp>PP=aVixR* 1 i("A*n8c-M#h $SFp0 s8h1C!h۵dx h\j?)%s'tXe/B (%9":]2Iq*Si_?H6OQӈ uU *6n3@ӧO;xL"Im0B3Ө_;EJ<&"lj E6 [@BU8!}~x;h N` 8=AYCQp IXB1hV,d%Rg lO.2_CLJ%?2nד--\2% aBSN_ ^/J۔sY|6Pl[oW* >2()Lx2Ni}srCt!(oxe{B[eIW\0y7O_n*VTw(1^z-˴+"o,z2䞙3Xv6hIbΛ,ZWkv*`Ou (-ýXN+J/ua;r]EJ inP/.Ueu¦J]"uWdxyalnFs 2.lfϬ!:)Ca&O 4&{ȹlL޾λ&=P&MHٸxp]nl&{nǰp8-BLp`XP//-@Fu=C`ƢY8ۼE\|7߸_a<\wY<iKG23ٵi_1&]: (8)7};U$٩nmSFl(1da(hnͦzS?cGW4P|5~n [wsK%p f2[s%y#EU8p GZF'/M4Fѣ,h** %MShk|>Lb2.=seMY#TU刳;A%i p4·Ә02f8b0P!% ; gj/0Y2؛Ñ aj.n4LI~PlU.l}t뮼M%3â̸m>i&HC!15BZjL5VTEL0 MX.'[G^?MyhȤI !,Pdw>6(95E00/p$NLeFqIT§D^ ,R -#k|BBfzJ4|lna$FFZLA( ξ}LykDU4λ*5Nw pcs(T!. Z8:d4Hh$+·!;asY5tb6Qɑa&56"GQt |1C}$)%SH\j,Ht%aI"hY"AdblGs)tv)19DIK Pi_ p0&T'pi?°$⠬!h†](ت,6P{A3uti;p\ [ {$a5j#Jtcю^d"D= vq$6g~s Cgpp+E3T l3hUHrI%аHTRH}1RB }x~.x>;;9\8- =RVUem|ӪCQlOgǾ2kj A3A=q:cS+o acu'T5C?C3+CL+ZKzrthkhL,/AD$& ij`elcO(H2H0,m2>¤݌#:Mڟݢ8^ȅSlTV5jɠ z'LH?ZL͜ƨw[EAo UUز+DrTOk[HixYqmIi^JRSACóOGhed[׬.a|"R([qF72o ˋ[ٸ#|Ӂ$L3pk{}$20 iYDuW 2AS8w@v9gXі**iႉZt/ oz1Mӥys]\r'`ddxqio Ű-l)OFnVgJ*uV py^mTP/PQA!Y|'5:ƶ_nn:YD,Z:ɒF\}QҒmH{:%l?f468sZygY6rx)b@ Qm1t]!b{~t&" ͦa(ILowXB8ebLXwm ?#A~= =@Ozځ/=-wKx%tEXtdate:create2022-03-16T11:51:32+00:00b9%tEXtdate:modify2022-03-16T11:51:32+00:00څtEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/vi.png000066400000000000000000000105071521174352300307620ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5-RIDATh{l\w?߽wgo;<'qҦi6 J),/n芊.ZiZ@K%]V-Z RB"li6A؉;3e~4iCVA_i4|sJ)16ZMop Xp]y<(S} )p\ϻ߾8Ç ')e`Z|W崧RBvBv}Tq)֠W~ >AO~q"!iL Oɍ'H]p/2x];Xϼ,B* Q|k1ũECGO[ىg}DyrH.3Ia~xwPyt[wfKmGvt'ϩXո4oo}td9#Th`$h}G:qkmpQql4e>/||zQD=Nzf*`)Pq E4VwɞK EHz/ҸXREQ<9f<3O77jFMcp*iL^45&R b>5LSKq]Bv!ʳY4QƓ!C!|qIxuk<$=}d~Pʪߔ&R񨎮 ,jٓ~B|om|- =K6ɗOA<;y 'R PDdtXXGR4E+zVHfI?8M4aض6WU2s |ĂA:w}s3WPH .cS`rQ#)gߔTlpP#ФyKR[,Uy$[3?8噧11@k-~S)BE~ey QIVEx#4|Aa|ܰڢ%;7I$`zf$cOI$ aJG1 )n@m{MÞSGP|^Q̜ &.X %yG.v?򻀤4ጓ X6+ZP1:>O?wR)%A0>S!ԈGtR((x4v][[bE@w.ҵ G<*s9>]b8 !k=3J9R9щ(ZA08`` *BҜ(et eoJ OR<ju M{8y2dU,[3d]tщ~ЖBVyS1 !܂Wv4/MWh*kPy7ݛߋ& "rb@')"g+r=cm4V8g'DTgRtm%4CCy^?MgY6QR =J.gL$ҨX.VMnJ4qC/4|$qM+dY|} &?Ay,4u$,<35Lh|wp?m,Mcg $wlf?fe}{ڻ`[#x/ކ|܂KQձvD)سKTИgQ G#]RN+R)'N1bF+K2WJxrRvJ)'EQ36Ydd}Gu5GFw%=ƞvD¬kHj]*E);OPxJr6ӄx?=yx/LNR'D~<t_r ]q;fp2Y!tcXVwiZ:i|3}>HzN& L|UpYARah!h7DC'S|xI="g5Jȁ켾@ peړ$\=CsNh~ tuSXAGsilS_,z]!d?ݎD|!FJ~aXii(L vwFxk nJ%i`їchGyrC #2d ^@2:$H]_B] ,7,~٩NZz.ZE-@ݍ1>sH)xUpZ[^e T:#$?yS3]rd7li{2NME}NV5. IYble{z&@04RMwMgpO2V 0lۿmm'p-->B֨|30#<8B1<$'AWG,E?ɹi%6G& ljw`vX2R]Oo@(BG@8"Z0M 3CdQ3Jz3Wn,gakI4-5ec{QG~I&=Mk}øP,3xuj^+ !ǨYnjn;ȑew} >BzX8=#{K,e%T&թ97JQ7%DQv5sat#._=;>?6|q濶.V=0I ; rngh!%~YB#PD:Sc"]A%$3:K:T&Y;8|j9{U;WyoPAkc+ׯs+MRӴ])~\CRVf?]1]v.X@0^~:@DU;o|';22s. #lt ~ߔ*)>]""oב);ցRF;RprlOta'Jys*z\U\k\{Q'X{q f~B,#Sʨft݆ayĊAW0?DoBK?P8B&k8mVm yWۅrfw5.d!`K[~߅`(J0%$f[{ţ:e>^y r@I  (7JpUT@m!7( 6jTIEfQ[Z6[{GwvG)t=}N=084Ȉǫ3:6$Q+3@<>3;hj0_0ׂFe~m"hͫ,i7Ł1Y#KFpL$FbNZ5 Ŗ`$c1 `:d<"D -1/9)+rmennG,/#`}H>"z,2U4xA%tEXtdate:create2022-03-16T11:53:50+00:00Ǵ%tEXtdate:modify2022-03-16T11:53:50+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/vu.png000066400000000000000000000041101521174352300307670ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 51RIDAThkle3tzaig:ӷ mm5Ŕ rŸZ _lX6Qduv]*kt5b Hh1Y(–KA K0Ӊ0-&3Sηw'?ϙQTt@ %ՍQX(6l}T绫 E!0"]G냺z^ ͰrtL~5(ϣ;(p86 ?:b2BPLH,HN;8l> L QdSz$۷C[vPZF+_+$WŽٳaV4w;'d41A*.rAF|PVS0$*S~5\D'Nmp{~MÆ \yZ[͛a:1,wóBi)R8Rqp1`乿\AEv$PR26czXֿS Undy=PXf3 m^={੧XOX aG bbd Rv/ $p1L"+g6tϟ3 /f| eυ6zz^{MV*.CN:U*z}^1š&FA~ ̔&@ -իᣏ~ylF\^`C1!rI&u[DclŋL-pYyYtS dK!6VCDEn4I<pY mU0lh$$?V񨨐~[ '^=Dž1&?aTUCXR.MF#U`.IֈŁOM'.xM:gբF\ /޽bm_8hzMtNgOǷ$oș|LPO`*ň~74$M"7!B)zr-V62hlam {zd^%8vΌ؃{ S)jv}LB=]e R5|Mz_y: Y @%~Cn2f-A{K)V5*wB=+o*Iұz" E -qI*L`|kY+*dohOEl$T,NK}D?[V D2h (jtY۸(Y_')3Ei-pcE 5kak%{ڦ%¤\]~+e^Rf;QcFz +o_o=%tEXtdate:create2022-03-16T11:53:49+00:00%tEXtdate:modify2022-03-16T11:53:49+00:00W[tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/wf.png000066400000000000000000000005771521174352300307660ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE&T%S'T'%&'bKGD ٥ pHYs''iQtIME 53 31$IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:53:51+00:00aá%tEXtdate:modify2022-03-16T11:53:51+00:00tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ws.png000066400000000000000000000021371521174352300307750ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<PLTE+*~+'t0%&'|/Q3T7"Gʞ!F*)~,O3U(}_zhc}e*~?0A)}/Dc-?^8,DNlJhC9&JVr>/WsOl80.-'KoHgo 5/|.Q+,-'}. 572Ro@-:Dc{?<9%{k^x/R@`;\ 3s0/ˍ.畦8a}>D`| 4+(t)u(t&s&s(t.%j/'%&bKGD pHYs''iQtIME 5AvxIDATHc`@LL(,lx~vNvF `b'A!aQ1F] .!)% s0I4AAQQ H+)3`#8PȨP `d70426:’-ml`hL\\ܕiM>~P큌A!A$j, (MFH`E385'$2o!q I d LJH̔*\ dcDFfVvN=ٙ1//_ܼl/StyEe#W7 M `F-m-H `: Jt0B0j0j }e!™%tEXtdate:create2022-03-16T11:53:22+00:00Z%tEXtdate:modify2022-03-16T11:53:22+00:00+ &tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/ye.png000066400000000000000000000006051521174352300307570ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTEOKKKK3bKGDa pHYs''iQtIME 540IDAT8c` J1B*J B 4U0zP0%tEXtdate:create2022-03-16T11:53:52+00:00P+%tEXtdate:modify2022-03-16T11:53:52+00:00!v?tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/yt.png000066400000000000000000000005771521174352300310060ustar00rootroot00000000000000PNG  IHDR@0Sea,gAMA a cHRMz&u0`:pQ<PLTE&T%S'T'%&'bKGD ٥ pHYs''iQtIME 5[3 $IDAT8c`Fe8Q F*U0p%tEXtdate:create2022-03-16T11:53:02+00:00˵%tEXtdate:modify2022-03-16T11:53:02+00:00i [tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/za.png000066400000000000000000000052571521174352300307640ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 5> yIDATh՚{pT?}oM6fy$"Ix*HQJ ;JNgکՁ S)J:aTc[ b⠤"n6l6lvw@+f̆q={;s<_P Mj1e;Kqv@ŋm pƭW R:'s0)ۏar2 EJq3uG[JV+̛giLW>$~G'8)%|j[SƕCZE.R]wd=8v òeW4mT?%AH }3gB EEz5x::2y@NhJh) b !PJqu0 7,\KB08ݠp$In᳘hoR8gBH7pCnH$xL@ͮv&Z y}03 6,ZK@}=9J}}ECEn32G'7eGi֭I! (ϙꚀߑƏ[n8y:;3 h_dBJ(0Ynoѩ6 7Jq,o^8&4fz&c,`uߺ:8w.nԫ@av] N‚bo'YЇᆎx y&N4rCvh4s8?OJ}E|8\X51;nbB+O[k,)0¢Ep|ܠ *AWO U,pF!`Jm]{:x|^njm ņ ]]!/btHJ$Rg\D2p$ISr돒ev0=4i ٳF~%7&OkܿNp4"v'tJǪYY7yofzN@[8 {g)av hLqpn0<HA 7-0T_4G/4򻰗Ec\%~_'7Ou8ꢟrLr$W #Z ޜ0gG0[ʣeyb(=.C& #غArZG/DT],`0)6KW˲S<*L\c{bI5iⅦB~ېO(>|էH]/]iT ESSD.K7GnPXEU#fM_S?V,JbJީkҒϮP!gcW}\%+դ8v;V{*gDNƜ yE\O8ф ^QYȔI^zj>sSߥkh7NŁ~}|fXJ5)7TμiC~"> 1T:RHno~] $ٷ' QW76T皊nKjl髞c ?s-yTĉnvm0?_z9$^G"X PqKRwv&yfxsN=aS=:{=TOٹ3kM/! RVG X\TFnCFI&ٿ]B֎m/%`H sln*gk6Q7tsgW_mG*psB^˶-4xF8㏇8}:wS1I_)ˇýAkR}po9%tEXtdate:create2022-03-16T11:53:29+00:00X`%tEXtdate:modify2022-03-16T11:53:29+00:00)^tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/zm.png000066400000000000000000000024421521174352300307710ustar00rootroot00000000000000PNG  IHDR@0-gAMA a cHRMz&u0`:pQ<dPLTE&{HpHz"!.w2z\^bhqtfkp3wtgmi#~";}Lr]vicc.v[b]bhm\dmyvhrwvTkCy@Szpjfdkkfa&}Jv`erY[jyzklgbc]YcnjeTn)ywbbia^``u|w_]\Zsokiq9tcjea^^glmhXc}hPw.$Tjgki]TRk^6y5u_zj^|d[mz^Pg]/mYojbf4u)|Eo1r'z^d= > > = %+%%$PO}T+h8~|{T *g8~}|T*g91h bKGDJ pHYs''iQtIME 54IDATHc`2RĽ, , "Jl\<@|@]B"D/*&.!)%-++'¤CzF&fV6vN.nmgKd0'$&%gdfe89E%eU5)9u L!VֶήV+3o_Ą&3)SMDnd9kȴ/XTA YA$O@RX|gVo6o غmعkػo?iGQ'F 5`ԀQ'O0G%tEXtdate:create2022-03-16T11:53:52+00:00P+%tEXtdate:modify2022-03-16T11:53:52+00:00!v?tEXtSoftwarewww.inkscape.org<IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/countries/zw.png000066400000000000000000000043571521174352300310120ustar00rootroot00000000000000PNG  IHDR@0K|gAMA a cHRMz&u0`:pQ<bKGDC pHYs''iQtIME 55㧖IDATh{PT? K|hL|MbaN;I:h+Z;Ɍ$3v%LIEJKH0m@hDiki$ [D| A]u >Yp93{=>w^s$!O[! M?KgΘVyJ wHBp_c.x]nw$\2AVx 7a/RZZJ||<C`0nՑf*}35$j;-4x)'BN>ƍqN`bx8ÀB[[9|`;-7 6>p8-GZ&f?t`d6Az+晀VƬ}X^G'@kcbP TTI?f+_<`H7 %gc#g {yEHQ6%%ȳ¬G|m4("v19$K.)s{"A+5!kb*,dEGߑo6_vV:_U~evTTk}F1*B.{*T 7ɵ4|K.)AXze gO!O[G|p0[/$y4Fv"[e%~"+3 LMxi=t0!j:4ZDp05W"K[Y濞|:SIBZ,:N=Ș |8^C?w3N$0a ̜.\.xxn " [Ys:!R_]M-&IZEݢv4Q=bcĵb)Bѐt&=}@hq/U?/^\LhoS_~[TZQr@U!AĹGM{-B'Mltu od2Dzz7nRL&:rsiIۂ)k r,XQ9,PU}):KuuφAˠ&<`Bb=3SAu6hӟC֎ԋ8Nʴ}5:0rwk (o$ $Wh$;;,cispGO A@E>}[%o U%$P|{\MMXN$B_1aR@Y po~R7mZ~k`~2&#$@ƊBc5DU'Ƭ[wvu+of3ˁPc7'!]!D_nьV p:̈́'197c;{{u5AstEqqqHÝ6hN&xq\# ~i ~!3keV+呑JtCI@$1sL ^U(7nBeIIMD^ 1_ A/-#!>mEfqM/.y7m[Yt_iܟt/twZ< I\:@2'K"A3Dξ\.>0) LGڤ`0ۼu1024ߟonionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_history_icon_toggle.svg000066400000000000000000000016231521174352300334160ustar00rootroot00000000000000dark_history_icon_toggle_selected.svg000066400000000000000000000016231521174352300352070ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/imagesonionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_history_in_progress_none.svg000066400000000000000000000010761521174352300345000ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_history_requests_none.svg000066400000000000000000000010301521174352300340070ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_icon-add.png000066400000000000000000000003131521174352300310020ustar00rootroot00000000000000PNG  IHDR pHYs  sRGBgAMA a`IDATx D=Jw $;NDA> ѡ3!BnENs$BBz{j3:AlHr2hmsIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_icon-close.png000066400000000000000000000004611521174352300313630ustar00rootroot00000000000000PNG  IHDR pHYs  sRGBgAMA aIDATx 9A n`tXn<4@4BZrpDƘ.Q[kC8|!<Ң /9q38wM nR97+\i1q'5Lk}$bj h])uy8N|A5sXz(n]uGԫS4VI*L2goz4ڎIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_logo_text.png000066400000000000000000000060601521174352300313350ustar00rootroot00000000000000PNG  IHDR$-`6 pHYs  sRGBgAMA a IDATx\Kl兽 y))Ҕ?/B5TNUТEEݥE?*v6YWZZ ȟ3~yR )s!޼ϝ7HۙLfիWׯ_p)k^WW*ΧXRXcdf|ɗ/_ -duww$E5B,ߖ۶m[)%t@$/^Ǥf2eA%ICp$-//Op{em@):IbhjRSɓ'ݻ%!R2D>}*nݒYXg ;w޾>9t9|4.lF3kV,a0&?olߣǎz1fff+}?r5LDd}0c@<.ឩ-6 CوlQt+)bG!T"'>@#E9z(yqa+^.pNiSM M=*ojK\RK< +õ%LMl{J\ ;Qrjʑf4.J82z!m.37$%Fv~jgd[U&߿sglh*Ȳi#KBgΞ$ /w74mS=-7˧>~gT(.L=-+%=y)~ys)U_| %y7%zQ4+A_1x)G7.Y\ŀ̀8,;ۖCM=! V;~Zm}%k˞q:Sn7Ip-TlNs݅i&{ae?7WiHbXEƺ0zkzꗍJ en>>h5m0@qi-NtRi{X'~i?'̢@ZQ_h.my3 ' Z,p} g`$@9èkĪ  k*zOy{aKc:y k&-t![@M ֧YS[tfz{:q9ׅ^,hZԉA6.G2߼ySZ138TXq .q-,٢J3%t hBR9 òW.ƬFWq _|Hf.\-,x|ԅX)&㢢" 6'5Ftj6deτ3g.3*QYBmN9@p%Hb Q#W] }k7I2F"?FQyۍ}*oڦ.,"g(UI=qܳHIDgg.ڀ|>,Q{)\$dƸǀtbS븁^'mʙYt+uMӼNlqAv 0*v|4 ]l}:e2ɐ$o2/vGY>|_e|F'w&B$ðU ƥ3eUݪ.j}vF Vה\\zajz%=֫bi-rIx ~]wN}>)Uv~)}B](Cϖ#>nE.uT%'>Ybf0R EkxoLS֪A3+χFHp X]  q[!S-:Hh4}̬5 6`U闩tG2MYhhٴQ5i B^ه4=~4urJv]gt@HK[|nvdf*$q_5dݲğ]Ӆٵ贝9WeiY۷o֣]-}ۃ=YC2̟]˺LQr̘L^5>Id5a"*1\B!b@s{G] ‡|t;O]dS|7E\?=aԗAFRXB`@B3w Fm]]X-2 AbВbq]ḽ>FxS\uokފu>I5q">fU;ō}X"XDPz7EN!1 h?kX_Zaµ>0^Vϟ_]RwsaR=@IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_logo_text_bg.png000066400000000000000000000233571521174352300320150ustar00rootroot00000000000000PNG  IHDRDB/įo pHYssBtEXtSoftwarewww.inkscape.org< IDATxy|UzF[ k:% 9]Vx]^|}G h``fڤ>X@`Z{HKjinhV+X< ou$y:D[OhYej+jg5ӎI q[˺'%%}սA!P[(wcMs!"hy ~]Ĥ~sO8[J*l>Ҝ;3:Z_;Ͽ3'gDbK/c;V7V6v,t)O-u@-%ƶEO.:e100uB\d1%vfիrRZR§555j̼eDm``pbQ-zryGfneX]Y],v|Wx;3:lHLBmTO߾jFFvIsWW47s&_9h[2008q 4s;ӻ[򪛾)+jjk&%!:2a錉gN&[-ʲg˞31*'>!"3ӪU;{ 7AUEүKֽn|UFHtٓL>l[-ae7]v{[e10081 ] ]<sX]]S= @]8Lf{í٧8uH}./ظc?)J\~Z)… SfYbZDafdݚV{2&NĐ4_3˧<.>m``3ɒ,Vex~幗onTqc mc]޸;&[uO{}( #iLD;DQ#e:e]C}GDբ(q'H-zv^ KW-8ӵk RLz47{'uJT:+pC{TZZz13߬PA:1 0f v 0ShCUUtΝfΜt8@  X@ۓ= pAmV,d2l`:PȊo{̼rk'36,vBhG:imDz+xf5T%O._tEF'\拪i+} fT?4TװùKot ˲"'"9))i駟N\t.`)MJ4`Dt /kPyyHKDo4  XU[VDo)75*,ԔkvW=/9j-SҒtiLe9ݨLDM /++NNNsd3hdY~@]`>g-%I:7y x|D*?j61͟X!:&;g S[uϿ\w9Z*7U1B+REQ&'''*IR*l?~HÇK(A;t:'`)(Ht$IIt$IWI$ _C_\3 bԌ4w*3;sr[Ǜyլ]xw$E8>S(8ӕ9-j$6lN)f>]ӬGj޿ZKJJg˲$IwU6Ab9#O$I:" A|eeeu;)ddfg$j S'L0m5q*;nRZRi^JJJ1-fzRZrss?zgAsm|,m 񔔔 02o *C6ʝ$W;1m#fO>QԥhP"??1F5%L^h|~C$}D-"$庠ne=3s:yc2ѨQ~6Ά L#&Q?n\XXh߿4"D J|,&36,l/E;'%%%TU, U I3.3SIII.3% "/3WFDEuuu_xu9DUUk\ vͱ0DDD{ܲH(.. 0F0s'G $I5 v`A1.=.* +tr~vV!Hz\6=z [MSs6d(AD\ɷ&wzcΌ#>nrw,u0,Z];opy~X2|\mcl6?z~O=(Ȗc`RZZFf/V[~f>Y,_/I;q2,̏"r xi`UU5sә/7zox+a(..ԴQynG-p8655Y'K,+8H̟2ɂ .u> bsf9,O$isЗ[ZRW+U޸7r?cC/f5@i~e+))#,9lUaCĸ9r4`cVl'"C/* JD:ɤ(J '|gql6RZeLDkJD|>"!xZmz~V?Ϸ@S"Zz233P̯t7A$ ?+ãJf!ԈN 2˘y (] A@D38␿ 2੯ߥme: XzkZVk/zJ,G߱ȃAQy |1cΌ+ߖ~ʂBtc< NgYIPt:eb;3}dDQ|Zh_'X y#;f.2 Lx~R8hi}}@I$5Q_$q2,,,4\2|n2v}Z[lذXzpyܿU½]k^sҷ3^< .^=`TG;d29kޠ!k1ť].W(k5rAS MHYA^Ep}M&ӭ!8i.UULeCC,(I4͓JJJbEq^$ѣwhKzо\w Pt:8ΗNTzg"h0=Jj}6/>3~wG z\hs"-򵐓s!}TA?3т$Itl>k\G9w\CXgx3q̸g݌`2s}i%Z (1nsؗ MQ !NáBڵk|=7|nnrA.fJҵ4鲢X>]?'1 ̼@,ϖa=SRyoMDc8^=BOq-"ns2ZH{- ^76h<4효GH֏5L1s3Ϻ⫷ 5F$lzsn_QJE/,KEQ\ADQ)jՃ]y-vh*12=}V]PI1 ntfe04Kt a̼>-nVe,LО]H&" hg ,kWVV 6"U@[ ^7v;ՍMMS%?uԈqǝu匫KgL-@vbz;q)DAZx gV6ܔOUzp3k$G i֭[UU ~mL[IV3_p |N3-fB8"*JQac@;; AUUFdۼys=.!O>ц]1c!H_C{e<䐙me l6t=YOG҅5&S? R\ UE"b_Mõ֊smלНU<&ŐÇx녅06Kc3ey$I9_4B\[LUXXh:STŨEQ}*g,0sm(?Ȳx.3sS}ӑ̞KsK/5`gJm+ߖmyoFJfyzFnY\v6fsS;mwPfx4{RZUX.eJ=jJT<h _ m hAUհPxCVkJDq?cG_Ҷͻh=.@0^wbZ 6hȠa?~ወ 159ecOD3<x1Z5jTP4؂5HZI:ޓ0sIDT|Y5J1ܱ;vl, f1D-K%//_ů999WgYv8c^'/ f6r67i_ߨ\0sk"465=#nj<&t[xWE3s*p㏶n%#Zk=,DCL~dvĤTi̜9Sa??oFDy+0':nlfx(+ċxx<L%ЄE#Sy!o64[z|ؓ'%%%H4]N"*f|Nr8yv]WÇ'fMw~lQ@$BL>^*bvc?M DW?ҟT#y,T6JKK3EY`exHUK!q8]tZ[ǖ aAz]Co1Q<}$Hjĭ @UgB44*(2??3<4&U򌌌m.p)3_d2icl|튢(Iv!pN"),,lD,T|W5/2otcLֽw5Iz^T qXFW|uH44VX "UK;YشiS`L95c2%t7Cpe-+:Ym_ p򏖕%N; 3Ot^g^[$i%YD,Q:/e91G𛏾9 ehӆM}A$Ɍ3:o%eXXe?Z>P{TP׋f{8κ` S'F+:ъC%26¦^kAXf `2 Gn\TTl03m-f#F(..)/"k`m6gl e (pGEo -Zf"۷iXk<\J2*\yF)D|z/ׅ翮x[U~rrr䙶C4V{ gȑ?eY@DӘVAYDHV2K )2n׮]#ò,g;Oh^z UB_K+jdWU3WhŊ$)O2t+ڷ477bM mFR ~պ(>.++KzJrA$iy|gA1exwUkWq赳=zA;0YRmpDD7q%I.,[d //{$]%%%EyZ9C& DQ}ODzʤ)D(7keawS_  jp$IN4f_Hۻ$~4~6}g…y@DϊJK rf .5;H sj=}رA9c os4m٠ɿ-f-k׮5wi3X'6y l)t:gkcF"Nf^eovrqeo/[c`$I47=n5TN;{܄Ne蔞И7]}Fs{c>k)=%Dp^ov=3YrS2[*pIDATb$T- IgW: @A(e_Mh+'i˃/:RpѣGEq 3_`#St(CWm:WcDg!2L&,ꂂ#(e6(x<./o\p*| " .kn_|eZ[Gehnk]vEݖ2Hr"̾r%S&LYJv^sS3S>>L$z2"""E)b1]k[ [$=H$iRbHt:37S`I 5%HEDK~aiCtqps/-rň>NJNn4`؀W{ۯZGX+c3O\[7k!DX1_^KΘt~5m_mB2h``` B,|gV=2Tߖ~e??b2n)V5ɚU#UG6T6 ~t풼AQ>]ì1]N2dNR$"-fbXVٔډ5k*rgnF{X5008Э}YF{'pzoumڡ3oYѲ:[IO뽲SN=-d'͜t\ ~<.|KjԢz(^{]ro/^[wdfaKK5RWo[Fm```6-,zjQ-ٶ<'7g4 _KݻuwC L$D-yiDKM6'uԥٺKխ^q٭!5m&f݂ L}HNOnj*xϔd[[ Vew<yZVz-ffgꭥz,Q]Q}_,g8Dj```qq{#5]lKuN!%b6 ^wnt7*kzN:ʌn¥hQeIQ~}cNfFvct<]wsw1~y{lp섔@?fvf<#Wu8hi̡C BG8^e1kmYG=}\l*qVKYMfeF: (ݏdf2!;/5)Tdmİ5# aoڤVnv]➝jFpvmJi ~;y:n|23mm왺A '{jrurA;~N\;Y sQQT:fTW ݜB'M :CB\l'%KBwV^526Efp%uۙ=Z5&Pj`H"$GhPn*\/B]ŒNbns!jz6iZlh9ȆwR{ cZ@h+Klgz"rѲg#__%:WsCD$*fwWJ$(N& O쒁@Bݪؼ',a(Ǭ1Aӧ Xv׃Ơ %Q)tWNuH#a`quͯ?̟'+m8ʋp#$nv9Z8phѱi][&:y}((I4[0U[^R!1f~ᢇ2@* ȗkp{ءR

    6VTBgDgk3=lR)`ElkJP@[7*vKX7x1F|.4z#>:^vg4P7@R ^AԊB:@ 0t"/tS71p=x: #,MZ;e)6܆CB(^X*U3AM9B X舄,^%9-H6(:1At ؀v> h4=uKyhi}2 &^ y`IB˥t igN0 ɦBZX𕷥ܛ:/ ,y+_'H-G/ge 8*UʤHADHT/- B$&FdA5쫁rJ&4r\[脈~@.7(bk׶p+hR~"FEǘ S$(Ȉ@^*quq kDq2lPS%&@ÌOI%ϟ1ѼSdq̲7H7x+f #A KrKOGc2pT mrbZ% c=UW@a$^|vS\h<ϦBl2C[ǯ-zͰJVBY# EmSZMxc0 Ml5+Mi vqmk~xn[Eu3 #.}cꡰM4sC9S>iO})kmhW7\Q]Jrvrc/Z nNVuqsOֈ! A;ҧNֳӳ_kfT6@(g>:gQi(Kjm5SʎOcHuMkUȶl*d {Y5RjO~J MɎx+(C6|\.Ƨ)'FBb+ѠcĈƷSxXGTTg} "7:Ax-ߑ.mw7&hD)M iA0WTNxSI W}(x8sMEޚ+*,X|nV-&+& HEĆ֔pgڹg+OY"MUɴ1PNzӎVo #r5mhbc=ZΓIw/hŃG`jpBޜ%%7 ff`NйaG6iPzT) AUC4H;`k|L3nɍ]OturCY.-d#CnOT'T1`QJpBDiu]K@G*Z`9~M9~> ƬdX36F7+#2x-3y̅܄3/峰~!Wm 4vnB>Lz|PhM!4hi#GrDi[J57vp7(&At^ eW5&k"۴KEwI¤z_HlI(ڞj;& Oja*4]\.|@ݟeh<~Lj͵jowMtBRtU=CQ&QWDH'Ӷ\N'Gȫ5>~]WA g!Gr}$}ݐM4e1P`.&+%;E^G*ݴhF8/£2]Է-ݚʥOjqCh2zyі1s޾EP3n0PaS34.*y @r6GeQy#c[sؙj|-: Q@( ]yih~-!iӘܜpp^5k0 GQg'F/ЪXAW ixu;3-8 enԁ^{Fe(XZ/dIAJl_8]9ь:i%ITGjSr ]N⎀qd؁7b@䗭vAoUH Ps6_'tA7% JT vVRF$&!2HYKiת?i6J]=XqJ0>&-셶Z[DEu--= ־ ?DSzJh^w=l1= % 2!j{ȟ}ҙ'm~= -Jޮ]< UanA؍:jF < _K* cӀovZsIVi,֡@ *E "EݡFPwŘ $L{-R :DG"pY WfEfLxU{Ic E* gByZSg{dദj/I7BӲ;(5-Bd mኼlj~2P3k Ҋ'XX-)JZ {t΍XтpJujZ^ZcZҊ߁ r6AN"bggh;'F´$ע2Os w&PVj rnptQKG-2ã \Qhgp+E2Q)3qZt R !az0KgПRA KkjTMZ:EG&@ܗ!7=kdh9f~ؔB-MDYDޝ(* Ww4_aZ¦uQo}vwoUugkA!'tܠ-¤٨ LB[Zٴ x"r 4J7 &T8>zX~aeA>p[4>b>,"?h78 KOA5SFi ž(: IL}0cA4^6RHݤD+Ē0<[KOVKעȍ/LK+7f;(r]-AC[ |\*Ez,SyrĭWEћTP&vn\TBO ̬Me+h:2:D0 P*R_M ilPa+: RF62/?[w`/e8XQO*Gx-[V&0PO'h[>pyy\9B+!rqܟ;ɫ;+$5TG,̤SgEgӪB= !y06ζxYd1 /J DW|P7HT ] Mb\A3ڀ"@ķeZ4ct.-wU,oArF"i)bsj:t*uumpHq DR^bfڑ𣑐LߪlA77j, bKGD pHYs  tIME1P/F4 IDATx{p[y}sp@,_DwڦkoChzKr-;.tqEOή$2n?IIdIݍ/vrkfPMRN9lBlKEJ$9xI 28{syAAAAAAAAAAAAAAAAAAAAAAAAAAAA!SO6Yc:#$3'RIfN:ۛa8N2d#S@uӵ(b"XPѨT+}̜ #GN` )Ϸ#DMiD?z),AXBNJk~%=K(zy` BBe."꬐phacN` BcǎvK,u@رcEʄc"\ (\"X05 RJE8dWBE,A@M .ugY$ NQFvֽb&` KUue\Pa J%%,9oED1E>/% O.RRy^岉!C.,MD&Q!iNO*- dMBBܾ^2H5fATq+Z@ ;u "BGG"}dZP(/uuu\]2ڵkZ3'êUaeb[ p0HHK<ϓaV'BK @kkk8RVJYL\;00p^FU&v-+2Ն ׆5b E 8 3wڕSj:klfX, U4Zaz+mƛZ2enS&wɡR::Q悙SNT<3񾪾.^S$4NB>]H-+Y0#q32m :yN'[Щ>'=<FN8o,n5ہ`]GSXkwX>7>&ʲ$¯V[HQY5櫱HlGD2Lal.!g^xo=uxj?hLn~폿/N,q<A*K_+)KbHJFfr\{ ef`?Ry^9!MI+LJ(`]&BBץ&Lܹoޗe9d2yʶ;f>?{.&7##cMDy9z)q>;D /3 X/w9Y\yW(Vϡ}LO©R?۷Ν;rQfdݕUy^"okц2[# _;=wpF[#JK|"-R͋9hJ´cA!> ]\ S<u[u2<(b扥'/?y)O_R&J..}:^hL&OcҼhg%s[BA!+ ui8t: uy<σzSZ< q0::t: i*X/.3$R=\̜{W-J{d2m)V7Es g5#4\[?sTȑ#Goߞwɯ@ 099)fRc.︌Dh U2Tb4oR{^1EAJ( inҞ24 CoooJfT _>CJzg8nlO8,)8HyY"HTMMMcr+6`0|6:NyR8DQIg Dk .\444$J>|x,;syכ}'+.d #%,f V^ "U:l`A!a%r,~.X~ĕxùOxf-bhU w]V@رcYˡja ^W} LM- k+F(" ȡx_>BP__׹uU ٳlS>i$@'iCDZ2,okMӄaa|| ˃+4^"F|*B% V,qu-✻ q'U՟)y*99xȑ(-G=@jJC?]%"~,ǝ-Ǥ:FIĪXuVQUs`uuuxMnЙvО`p٢X4U9a}]2iHAZo=zh.%_HOcl Gn\G(T?ڌeay Ç_=yA"~ 'W-JHc;0_IO/ήKÇt h,,(X~~r鑑E]M8,7I3ȑ#3nWFcVR㮪0"Xe EnO;ig]KXXnk+Em UM`O^>مngp0P"W@*Ѻq#Ius-Z%O0sw9V`ish<൫hVTYG6'贜ɓO>i%&\)Te7۔guQCcl6,YtvvZׯ_d 8 V1 F=ŕGXbM 5O=N)_["3G"^J~WٟgC$qk0\<7VJBdJC4Y++ty,>2zU)^IR}J☖ jhf9N\0NkddMkmi7(,"\SJ%$<3'CPVSe j1MQn@_rF,]Fe\: U 3j>0!,R&VnH/*+B Kxh ĄP" T`P+V}HҒWI[s՜RFNqԕ~Pu?e2TW#֖CرcǮz(n'wرKFUddZ]VVR>jnܧycK"*y{V6 C'mܝc]Fr[BrPED "zdCq*zhSڸRG;=BJJO3wׯ 0< F{i[ix~L$c]_h BuNu' ly -"B9z"}~2Y$< VX#q}S&~y?yn@:9ڏ&yjfKz[|4c ]1ԑ_/WAi-)" ;S]H9ݧ aEt: SGc2}~ ad:>@}hyф+9\?=X # _mo|=939I'_89*w_?og5obC}{v.uoUoÇ*1!Eb288+Wn| q4`!$\EЇx'f[pRe}F2^Vm,!LݻbFИrI&"y*n Sb+Nq)] Q=.\uuu q |]F.% N# ;)l24ng,3V- 吙 , "Lc&F Yf.5 0y?gùB ]Z+J1*Bf yp]g=]#w@ߥu9s}f/rX B ֺ Ncmh)9L?ɏo.~wޙ鯐:B`S10G~6ǐ;S )(S4}:i;}ek`G`,)4iڧ^y忊q<70sIlϗ B`rsrk?nOO*~v'q>yW'\NDՄ;ZPWO~_=5W!Қpyc" \뺅 S}q0aI V%Dz,`l?t)J](FFGAσ㥡 o4k89\LiN0{zi9 H.fQ2{P#VQ7p\퀵PYv:Xu8N0"nȳ)s/~)-jU;Tߞ={g' O2Lz}P,HI8 ӈ?yo3rh "XsXM^)mp ATĨ<#^l͑ ަJ[fAbʸY!HaYxnkE&P Uc@~$"{G?+"D}e[oI,Jn0 "ZVqK*~@ S~!n*tJKEbΝ]֎;vutt,z+Fܚׂ*%Ll0$xf۲bm8Қuw׋]\_|9NNf|9_̇VwjTRDXIDAT x,ZB^XHْ#h$;OHuu?ލ\E+^Y/<|gf5UnÞ-̺WVNhm/Ӛ,yg?bXsxK{Fj_}zV^UJqd+مȃsl $0 )T @ĥfsB6CkoMum..Kk.g@4!`+jw4&zl5i=@ؿ]g̹ jVϣ=-)C}_ٝ* tȴDf cSs8\,a`) 6O[PdAd0 #h{h Lc/[ ?=Uڷix`< ,U4!\@Y B8V&lX mYJ10y4qb&7&r::"Tbb7?kBDGȾ'b f D]kbe=8zKNrlY\Z[FZ@lOiB 4 0.]2/yf"6E 0Ke89jXĔymQ*MNE ̜ɸĜa;IИ۠u=4xXȳ(r:>ٖJ\t*gDǽ6ƾK>sY״\D"DY5-Tt_/gdXFcE ־'|Z,47A)Q}虱u8YD* \"Ea15csK|zpE3GNX̭Y,ܶ6!`[cٯ~"PB$B+Op z\'s-j5kx>XP04ƌ K-{%/&= ط1u\ΖyOl#R63vaۦ˺L__X`g\n֑{f}ii؍ W/qnp 44]ƬLW|]*|RPgFjJǜtOQ@$+_^b{)ևӵl$NB]\8H,\):ĤuE5XiOMwp"LL{rOGGrg6\׍utt~AѣGOUê+t [9{c5Y# x@gS(~K~1t@~)O|닻]YE(X"bpU}-g]92x5ǚyKzn'w~ZȉPтED\׭ZDt%Px&4t=)yHLYio ?`r/ f&y@>Lo|TBN; e쿴j ɽ} vXe[=UI&1 U$X}5d%7LusrkIaR mI8(T`Q{-7wzdi~y~%atڽt1 KឞZ R PaB%uX0,mVMf,;Ok猖5_PWO>{ϾENU삕_%k~Tyqd`kCO_y^bJQϝ8yܒSVj8K!,(H@\j̽SQaWj6 }eW+[4U1SNYYW<.EPLQr_4ef.V9VM50Қ/t\VGw+c8/|4-jxX U.X5\'? n\'kϞ=y8 )83C>DH"۷okIj Q0hΟYIE'rroRQ^.܍a):]┭ 3M<7y3#YT0Zh+Pr 8I(ΒaYVn FW;wQkvYWfsq^i\ki_JK@u+̝tw' ?/@#'ۊ)x&KaT%/ 0yDjTvwwwRXV|{bú$J r %ڡuC0E Q悬~DVY”%U NqPv*DԗKM#9ePA nmzq d4W6(x']9@DŊ~쒩9"X%DbInv|0MsL{R>(T]oLpJZ6)w/AN7җb$ㅲ3-U"Zd-m]@fFdAS~r+)\d5 ;GƧ(JZFGܦ~E BsXZ%w`C+5zF>y6~2f#`&%*Xqbu/-vF|ڈ&>DfR*FF+<hmmŸ`z*FƵ!獅~#l&DGGG )u ,"dF[fMD6M.D4X@c B» hjNS&~Zl^.^,֚Z)oƜbfZ1W}UPjmmm~zv#2aUPZp  w'Bc]X.ٳg's%Yfjn.~~!u&X;BD Bl۶L@DmD`˿ _Y z-0 H OjAcͲ//chhhi>6!X>~$a455?fmGdOm۶\9 ֺuڕRLۘlҥK2֮]{]]]z|pWgח;qhnnk㭷ޚ3ݫC}^ߏ1sΝdң](`["D;W2fkgs79D)ϕzt:]Ȧ,4>r0]dXC}}!kc}&c͚5hnnFSSsI~{~fHNKURK!S9ذan_rW\R%Ԅf]{SĊ}Rrѭ~?Eg|~^6њθͻ{k֬D… ~89zZd۶gj 裿W=w~KZf Bz477y, 1<<:t:a\xaJ1BQqWBނ5Il%µ0pQ>8}:1oqg%>w\B ,\~cm2l[Xv|󝿩H"yDt7ߔ3Bqk 3Yqš5#Zt?Z^ 'pZܔP6νpYwq;n~bqr]/[A(`l>XFNu*zᅯZ9kxazR~i*k6NpqR)N||V F}̜2 >q✄9l"7['[[`^*?ߎok֬-z߾2KJaR+d0( "XaIXfͷXE5bT_x!oRJZT&KI&`U{y9d no1EfYDY_HNT&x;DK˝nYB*EZ$b                              -c{UeIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_mode_new_tab_chat.png000066400000000000000000000353561521174352300327650ustar00rootroot00000000000000PNG  IHDRxe,'zTXtRaw profile type exifxڭir9p>B8X#|C5u&lG#jvWryKr࿒Tjno'B_3./_kޟw^O?](~^\~.Mw|y_\ݵzi9V%c!+y{S :_gțZxLf=5ɟ7byݧF'_߆_К؝9]]HeY7BF#;}*K}|h'!Lrת¼ɈO(l9dc5S^{+w^w<ۋ_:G^$MpPʜ]$ğOLӍ?%`a,?HGmͳD\qx#O|O xO+<~RXrcIN 7)7 d iIV)RC=Y.SI5ԳSιdaT/VbI%RjiWk[h[qz禝Kw>yG# qGu'3L32ll+V]m7N;nj؉'|ʩOV͚-s5ɚ2ʏr)_=/2=-)512ܿͥ[9#sNdϼ%k_F ubxî=.N?u/Lv>'b@>ƳF{Rh"t \OD2zsXcÙI+O򬭘gy!V;ylWyW_Vj{m_K!ϥI3*v|'&>^VNZ)~ xhhYRcp7,]'Xӏ^yz'gʦߠlJ P%3WZ˃wrSK$}~rhWIlݟ[}?6WX. lOt9unUb6S' mY RzU7L&¿~MԴ3Dyz̹q2i\:q<&圜xKqZe5}r.L 亴GM`Y Okx sZnc}dWF&%,tj.ZOY20",4syg <;4]v6Q<BapTT G#~NسA@ RjV)\K;ơ< $FS"A&L-0Lْ pcEܸv,m84..7@Rgs{DɄX{M~2Lˡi)齉^焍ymoۙ>R<90C]pgegq1CjɳDHqMoi׉P#ٺ +H߿ZGsQEbȟO[\yAtPa=OYxBz#k3{aZZ,kwi% qKvS7^EvQʝA R5g@cL&L8-N#0Z S~θLRQCpyGwIyK%f,cCR([s̡K)m(4fxt|(a.%o"_yZg@.U3P(t0B7^/6l0Q6Yun/~>b{ :IS|.áZJNĀ%3ۂ|JrO$?e3#8B7O(HRxi%h=(Y~,tPrZP@P4.B6p Jqx9H ; #fmX'@X(Lz"/qUU֡&C8"]%Eds;<w8s1Bۙ[JCnZ)KH  wHBJ.4Fu˸v&MW{f-e4言'^/!w23J]҅G "s3UO ;*SyĽ'^O9FH:-9B"qikoٷRF~ ḼÏz|W{whapA!6.ta-:l0ĩ+lS`zàN+3zzAG_.^X3Vx9b< PvTNV%Ku|'0rWca\A@dDH=1J6A|(¥B,䬑C~ :1Gq 3x[E}3rRXzE`RԼiHRcFtYfu.|ʲ ^j؆]x,=]ᤵ{rbTb3 6#k}0.ߐ{ dsTq;Mh{hכP 18P &m<=Eh&Y OΆC@>.ϙ#pc(.c3 ] v[@89c >U7ȠL[}ƪF`DTHEz&y54#*o[#`=w"7H~P=6M˜t?rۆ@G>i(kZS8EPy\:P@ 559$Qբ=! [;(['\)#[ zG!"xd*);F(j =cvώ=Jhڮ)ݩx) (OM ?VL{U+=0ċb"GJQ|R#[SȚ.lB2 |M8u FXViSK8!D\i*DqL?̭`(r=:Fch&WݐC^REPpNjz;>f .˅`R2Q:XV&[(sy.=JjU4IʞѶ#6VmaA0%\̇BV;hD %@9`m/ZptßX 27XO>e }3vGnR][M}ò,U#UjJ0բ1Fa0Um'\`$HQ^ƾ/Zۇ2U.(ǥlijyw<C+(Q" N΁Y[8'Nꕳ(6yв^{hmL}>hDXfXt8*'j"lNHP8zn{l'ď3RĹQ=|z6*Ouc!pns7*_msE2)I>8~N`4:U2_Ɯ-: DE("O2{OH%k"ro 9맸40k` 樏ET&E30c? !5CGLmOZHQ`H15$ R@ *oCLlwjNK,%whrs35D!b$O{on79,8͜X3M%bsiQ j4F;U~b d5x#|=㭲_?~=k+>Az|hi"bpCYgDUnҵChc(\^QH# ~x5q c@Det&#wN B]gOl=vR5,iVFN,GmʳB\;JFj~e[Tn (-4#~1'GV* PB:\i~t'i>Ƃ5 @E"%nED"ڻlFlBf:-4Ģ=?ڔt,bIfvE9X!Om S %ifm8'Ja+ ~Q8@7̽Xon#+㐿N5ݽ}72v BpC DOcPEi?#~-SB?IÔMzLstX^xFu z4GMzlpZc;z~kXw{^gIT7% 9ߖM]ua M$O:A =I._tږʶi6ˊj`GVXmz(+ R.Qv߳nЛM1N[$"[Y#!Z5#T _x-;BƵ!s,i>c| ,R  8B<=8A*Sʾ>LB |qʄK ,J*!" Q;D%&bZpb"J1)%wz:MhHkviL]B 0y}oda <@ʉ} ߤem'ìˉގ'.MC2.uAj 7 6,iZc: W=ɾ2ra`v,~5 q<~)adx * 6Kھ"@!w,*yP.f@+hwB2W*KFfU]rb` AMO 4( Tun^ԩ)NH p=Y ռΫ~iUi||E[(A2:>#22oM0EtH yмR?M 7Cᬼʃ8Kc__Cc'Bx**5ȲECuCh}"R~=w_|F@Vzn37H8  yz`E' |2{RS{o r٣쬬#6 57H;J$~훻iF)/STA@4j@j^)H/m#Q:1QȀM5@Ͻ3(8][<(.F+"Xǃ¯k`ߴG:\t!տ[y*ۿ^ǴGWsM:idkZN@|h:akmnJ!Vm@z.h{?5CiJM_ xbAF45EA?c!$6dQ,ф[K3u&sHH{0e-/s`\#AɎ#$2ˀ'J մ{!RHaUVҙ3LO4QHҥQ~kVsU(OSDsTL?ܫ&_ 8dȴ3$?$ (q"6Ȅϔq4m*X(a "Z|ԎD,M5PP(xςAq ׫iPzϔ@2%(6ε#n4Hp L(~͸5 2yעBŝ-*Akux&(u"V=p[u I풖(h0.aAoQFqfJ -;*9u1^*҄]Nq#J?8dKoIJC jJvtw'wAPvQM94 ̉hTNh<2!7 JL]:tGVG7P==ags:\{Hi?m@/7IEsu :ڞ@+"&K0,9.-ӭjA $j&@N"rM%jh3̵(zbd$OH_qG-3ڽ]Mx0ON՜@9-bxkF4eB iQsWݶIbAa"/ w:FcI&M Uqr7P)DPj`|k0i4):cM5UT|5mQs//83g찴!MynLNJ[EXws8`xk=Vzr gVh^ Er1&/1#<:YXh,@ȉ{:teGfQ:ܯ Wa?|.ܓ?6' lϏN^Ctv"f'Zl:O&)'4p5($!xLB"B;U{3.ŸS `ݫ͇'gKohiMujր*TmR:cATG_>s}8DlȑE3gmGĕ3S4:dž{/^bKGD pHYs  tIME 5IDATx{|Uյc_yA@Em=Wk[_jK7cz5#co[{ǫGxEm8*RQԀ@ $ُ5cm`'d';#!f|>YϹo1s1*}& 4U=80:;*/[;,Xd51ogeMrqk%K|n\D@f`RU_d1ܹs"?D䟁-@Zۺtc>%"_, G_dlW\a1W}ql> 0FD.N:Ojr DE@Pknn8bY |k 7ĺ{'Ef>-; B }]4p9K fΜ/pp~Y!P(ȥ;wCc.f;@~\,:ŦsS#"7;XEd8~4c+>vp, :<WR^>p8'H̝;7 _~9PhLAPEdUfYUou@I{^zteCʁpk-۶m=u;? P)"9뮻X{ j%S?ܩy3EdNmmm-~lMC]k(Xk(T[[k?:X @3j!,2\ڼ\',):>qUL(E:P?D8< e[w4|Jt_>a:ڻcw Qd!B۬G;v XJ'u šGTO1z37\5$ܤ;5)ګGD9sHE%'p6]k) S;850NB/&O۷o}ePHn\XiQ#|X9g^6p]^TxG2֢֡ۍ1@ezQVVv|>1os!~zc#&-"ˀ8BPOw c(t1 h`q)++lT ,@DקٍN(k׮XjuGn]ǣw)BΞ.ejOM:UG@Q^65Ȳ29l\VӽEi\[^z3jUD$# K.҈t:M2$LH$HR$ $Tίyzkn":ٕHqQxPmiiڟ<潠#Z%m¥4޾-5=:xȼysLU͛ݻw{UF+}|Ŵ1ʪZֲcv?.Y$ ~s g/?74<ؐw [ZZR_7$k!h\?9Xk{Nk3kjxsgzx\QsZ[?q|g?@/˅ vxۈdCò΁4U6w77oFzj\/N=pPEEE|-ƘdYbݭzHϡvtOgjC<SSUDMZ{͒%K *ᚷ4jUCWF*N:Ug^MXu4W^y{Pk]DS >MvB'3+(?1 J=b9:;lRp=/L־6<0q{S lnX8혡FU1C =\|2)"755WፍXU^sWLη&B|c 8ӇJg&6@zID08~?c ƘlM)Z>g􈪞xȘ"4qxOG{x~""7755ټ d jߥ=*ܜ"OP><ۺ歎TqWdoeRIӨ[C+$yO1/;vH۞U<ԯXK!xgb|5<Psrk?_-ѨƘgavCzF 0!|s_r4V{R#{R]]]lknn.F]Um~TIWٕվnF/X666:Wr͗Ua1FQ_^ג13Bq]SSS:U5\ S7\hѢ־.kTj&?ZY _O[}82ڊ\OZ""X,O-^xAF7f`!7wȏ-Zo<'笪߁DOL mK2FUvo\ߋ~:HNo| j]y:O tiMu/%‘=2+LJ<_(_||iwt́`oN.,N ՛!WCY]mjjFQU{0?q];#5AE¥ Lv <6VXG/9tsDׇK.}8?`ˍ+bbjIZ+\ԛrjqDӇ|n0X,Hkߧ@_| x8 ~mtW^e%-r;0vvzӬܣSߤc4Ed xCDnpzCYvΐF 7XJU(Gzʙ#ΐwvj}z0GP>&Qne4?1>o8l"RD&q<v)鎎Դ+/ȁw8)< ݅m[7뙟dk\3gH$8gê+ý鰈zWծoXzMc2Fnhhh8u5yT]]]PN;6"* aBE$&?.6$(j#,@oVíɃh4*ld$X&@mUBV>oKJJc" ];w ݀jʶMuO@LP`w8<)vh?D ]Ċi >t^|gԤSGql݇8ΉHslQ[9o ǤR)g˖ͼ;߰ӧS[;b~n*$=aWesˇ ik/&Na0@!ݑ毪<cu_*M ,8Z.fё̔<4/XoB^T~DH9 9/L_n}ùuTj:%S /PJ=fiuW8 hh4k(4x ]JmCp-FD9 /{!Wrx)*Cmy@T@FwgyTz8_x_Ղp(n`/~ߏQk[=GicjqC˶:("%BUH'~72Y`bvӞly]<@`Bdւ)q)UG*}[*抯|Gɱa'NDjDUwͽqU7_)>PaDɀ;)o񸨪IR[%15d>ʚOr#Ķ)fE<|ʊkV>\!"o·š$qV {,K2է2bVAn81n܇ 9ZrԋNG5տhhaA<}OA,uuuJpFLFpx1fzлMIؘx\sCn|༫&~z?*=z{X }-:ӹJ<]w7re WdJ%a`Ŏ\dmK%~wf?ƶVko}"20h4[oH& ja+vV\OvA{g'.?t tqR/LX]A/ʇFqC 8555lܸ$Nݙ$ERjjƲnZ)ɚH`| 55v3 K"$~aCc-*wq\/Z 5jUUUQ\\D8!JLhoo^U-K6DD"cy"r)sPTSSYg}@ tYk-./{8ZDm,'@NUT׬Yl([c2Mp-ǎ˄ 7n<lܸ\T8Q^UT5kִ1̩O&NH86(`~񫲗T8SJL91cP\\L({GyUU |n>Hx_U׈H1{뭷}GCSNu@([URU-JU5""r LPY]]Q[;kĉHQSmӯVI?doMwN;IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_mode_new_tab_receive.png000066400000000000000000000356551521174352300334720ustar00rootroot00000000000000PNG  IHDRd܃\zTXtRaw profile type exifxڭgv,9rcZYL@wQfg9"Y@k"uſzv^Gy'?ty >oﻚV?y=>?Oï&]9=Qw7w;=7q o袥<HW})sOױ{Dc(b}?݋W~3C{̕HUݔāPW} :[vaHonf9ZlƸɁKFWKlx;%w:W>#cdO×7ݫ AŊQ29}(7}OMd0w68b[mqg?qbB"TB B LV_d OpܤTIN6iK jjfIr.O˝%J)(k*-JFzGʨsrɩ'1+ʪƚy]w}=O]ا8~u?o Kmp_O`y^N0>V[K&3dHnY+ups<{bk1תu>.<Б>V,mX FZ}*s_'`E ^W {M/|{;ݕ+tK()٫Օ^mGuh 'Xճڣo+6[;S)ۼw[nݬloAu]E/ESbo;W6YMܔ>:|~Fgzft?Xp+hyՍ.JN%4[>!VktUxdӶ-oTk<9ngXp˶}`ū?*M$E={g+C]-ڍ M5.J$:%U"_SN>ŹfSnŒ+E .ZBkEѴAn4Q>FuMW(3N5i ,x/dQan\5PG?(A X5 q,*{ZWΖL:9==L &qF-f$ za2hրXGi'}m{/c@]mzȋ CĠVLABHK}\ZTPOKoi [!ԩ# )+@ύr]BB }QLGTIZŏL X^Ev\g+iQ֮ tG+)` g r9tQO0ӯ+/@C6olg.|B0*}ew@B򏛊w [Nu6nԙvV`Qp}1\68YsKdC w:o,b7F zF +V c=' ֣6( S#Ft6%4%a^n|,2gvw%[}tR3[rZ@/A&jrXDSu]ĭNH)@SS b'ZĴ )#Y_\Æؚ4hV5t88t1 Dr@r>#`8qѦWJІT3@R;  )!7yq)6 FF$ /ʈRǽB@HIJJ]c$_t%S5^K;s(x  OK0 '%|GH[&UcDaU!@r`z !. @ ?z{?S*Ŷr d0@j7iP?5=S/$h A} څ2`"B\u&5!*`>.^0~'޼ӐkTM"KӊF #{ICYھ2AՁF"/218h V(I#" `~+[˶\B& /:͙( u\%-ۀ'$`jAf@9u&$^ߐ::`AX]yo8djK C 9چ@C; K3Qʔ[8Ptte1@)>?z A(CA&b>=4x[.8.(vFMDÂ;|@EEC P\4;h{c>!JO^Ѥ.ZG_?nVR5XPH;/e`-ē$,/込.4%,քIҦIʾ#Wl# ٵyO%<@ +\2^M-_bS4H!c!lȕя@. BAK "~ ,tS؊^6h0֌ LiReG 3p+6I95~ QRє$,@*abrȭeH, Tc ?%,OTc(^V6 <4^6$+m+P@&>nj_^h}x Ph QepEō#Clá3Q@в P?Qg|;!|+ dn 1Zs=hA Iza'HbM;`@ЍM S&x[:Fy`5ޞ(g ҄oƎK_S ~ !%ހv4 C`]j*evWԃGlbsĽk> X&L&,‡Dk#P@I^\G@jhU\>h!u"KO'WxC] Ja>[; 0 PHy ^ SSD=7DGR lX1 d΃Q#/gf{rL.#v RFNfRUdC]LUq膦pcnS46z϶&Kz({U5e(/$MG5Td 09z.`sET hD'a]4}Qއo o)hh / %@?,!q&R#wDQ#Җ*F/ @U"-Y("zt[}fQ;˓언EBR¾7k#s(  pD_vXjCgJ|bx"%+@("`9ɆЯ!hAS3-\Dҕ. Mf_6N JH8&96n9%H%BI""`еo;N _gS]>q)#%#2[C ~4 p#բtm:ϣ-M eKB0x A-[?0J/.(ɢA!ʔF:.X[63!p<4;.H :4la؄G B} X_\7$M1}oѱ@0ʓ*ºoAbJLo b鱩IRBрa_:~Ә)C c)60%b7(TxJ+hu!oZޒK}&WXBփ{E 4v)!K\L.%[Blw@ٓ>^)Q3dy?YGҞ=8իTm)M‰QgCmPAHW X?i]s@٧Of+GbKŪl!7'.C=/7EQ5Tm$ZX4m;[C^iZNtCK;0,FO WԢw4B" F?,;b[^!pP)j,8?FjF )#&E' +Bv} \5 [נa~C&-Ga, LZ155QZ*`l j*PQ 1l|b"hćBhEj%``}FE;f\0茑 |g^!Dpyٞ%^,D^M9.G#H3~yu# )A*fwR*F|bDFPH݌9ƣA-5ʅ,Jލ.\MU!)k]Ip=j|5h5DEN q&Y}\`? GD N4 dFϏbu?u1drV805^E{O^VŤQ;fm@d21AOPפ(~t#G|vT BPX ڍ̤pN@?7Lƥ "t'a˾mmE+Я(u I?W@uTx3DgU$Ijz&%rsQÎ*`nJsW0o=PS8bP Jo镘*6vXDٹAH!RC"{f J;ѽ?s 18=:Wb)W$}!Q@$ZIѠnQFFM] _eq v')lwU(y5>$ZS`F 7b9[+xkl۪MR$4/ syǼX*4L_un\;p!j{]0BݱKD8d}cD9$t.=x#O\~DWpIM?S_oRRug0CNzCN#*F(] B:΍@@2bmvƹgW1f`4o\k~sцUu3R=X=:sP;UAi4 Р>? zФ5Khf"FҐH@T&UKma7$QzAb0 .٧@P,: Na4'byVKBEXDEi=$)C尟\t$^VHX=mD' lj rv4փ/T2E@D 0| 2\h6=:!2bQSd(y[᫃H&up iUSXL㬐[GB5"ߨL?tƺ!=:GЉ?z"=zU*R۽JgzvXoo҄B})FMBzc9ZT @*(m\Ԑ|!QBC2F 'ĭ9h>D1,iOEnVARqH WcEv0M|/˅fl7z kpmA'r{q.= [\*aOjeT Φ6n4IՍOԝQu&=54ww>~~p߫l<^ϣYgڟ|͢Ӂ(>P_j3iGXbKGD pHYs  tIMENP IDATxyx]U?{!iҙa rUZ@Ad-(z?^.{MR TRfd-(tINδ^sN8I3CJ9O{z׻~ey8x 4/Ꜻ^Gz3f 0| !)6q+jkkm92ݽ̙3'c?PczW ̚5kt:.ȵƘkg̘aP 16CNJgz"]c`DDN>[ᡈ|}5k֐\N=Edvc(E"y{30X}a-}W#Mc{yRr<9F amPuvP~2T[ "1@fܸqs0ue6?ouT ~5QW ৎ׸qlwoUJf~0tSƍ7|Gl5v̘10^݌ N.Ond\/{}Ha)$0$aDe(UƨGѣ( Km#24{HFgD#Dܝ1e`E~|BՂgYs c˼MgVtae6?w\kY cf-6G ,.䐅537R@^ϻ,F'W_o I&kmk zz87' rmi0 \%"7oޓsoSȒ%K쮼.C+0$ CT>|1M!=~hOw饗a"rQsE0 ϟCׇeڴi#8 8끍&`;~O?W/ YοӣN%c<(ʯ?Azg͚gD`]WW\BDH͛7/OMT)(`PZ[apFrcP̄8/Y+fb9%*\DV /T)7D=\|uݣ3OCTUĬY^>g`9xTU%twl0 ֢-`w"閬Ya>&p$0b d)0OR_ܔK5ؠ ׬ЯOD9}!"D,&"7'z4ec̢.9s}  ˿m;R/K*U1Fr2]/ƈ.y?iX$ؐGɠG!Q/YeتzxanQ :sL>-"%zUgΜ9Z0l_CoIE)|]DB>c{8ć+V #Yn>C2'"'䙯sEdA6/"ct饗`ܹ}TV,!"_ 2:wK>M5ȫFWUljOK?Uu8RD>ScS~Vp1pa,UVP @C`b7`!m0cƌDCfXFy+vnVԥKKG$潞QˇE_ޏ9#waZr啛0˼;ـ +$c9t~C!^M"4my_A~/}To7Fr7Ƹ?0]rɭxO?Qdxp@F oYPo=?5i`uW6XzwԸ> |fHO73 ~L.]Sl6+W+^M&/Ӄe;Ӏ ?Ap7| =P+w]zJV:q~SFO's<c ;dzi'xՐʰwyДh@USƘ zI5<q7'"?QEՄl;Մ0qXa^ 4ͼMM6 c34ՕT{TEv;Z<|T*NcofHm{QҌe)xO%5F}O'y7\ \2.`P՗V&!F!iJ4x8u`!lc/fҬoHXٽxLu}XsetNo=2ٛ\c9|vpt{jыZNUU[x̑CGs9>P)"7ma0ODܼ!,W+quuu2^ tCs=¦rNuƿ<ϵn*־">X9EF6t$5y֬Y @Uum{'q>ZS g,H#r<0Fa=ʋt6 'pXj?^܍D( "-A›fd jW 'FqaHv# dh6)栙͐Y;qE1$6huvsrɫVji|[%!Fxyx#D5ʓ[4 矿CD>ey^²p9`OSMہCh#"ru|7.V/!Dp|H5cli–As;j7FZ.NV~ [A9`,y6y,<ëqpRXz;ﲛ pVEEŢK.JUO*+(\p hx*" yZPS@~튞 <_֖KIYg%Dڻpg $v%U϶BFs1~t;{wo'W6P?鳿1FA:x 5eaS+ >%_A1.ݣ̠"L)z[Z%},a:s1fm}FTt@'H9\Tee477Hsslʐ ZV7tg! 7dr]wio>{6ÐXņ0"Wo1Jg ETD͛7m6n֭hhh$vfFY&e6r/家U0f|҈8Taߜ.,wk 7ڧDl+zk7nXy- R^Gc^D.^DzÏ䳆TdRj|^&:4 '$=V$"yؖaAnTA/}?Cߓ.2޳f@xCh?x󁗋0s]p+}*ۅQQEK;6y8X>pϸGφ M2VYlolڝ#hɫ)iK4J" '3UWF* sG) |ND;w.ǒp?SFX~÷ yeQ_vuN81"!Q޲"t.d<;"3aTGTwD\dWIϒ R4fi65d -]R=5Q*Tߍ1Ν;w) .pԎ9\<"SECY6"r*#|y<Ǫ*ےܴHGSh3Xmt(nJ=($V]]vú]ᶸ#rm;gʗyNGLP,Hd2I6ҽ߹_=Su̷qtmeUqEE:vt`#o' _#_z(ZѥG%F~g;h"z ]Zweބȑuڌ~s`$"tQCn$7%E@Ք<1ߵ'P*uh ,6TSHm+a4I'u Ƙ;wn.ّX Dq#1Mh*m) m,m*εQ#i:X)~| ^eenV53XU}О܁L̝yçE\_;*Bf >p/Ci[6"l㽩"lnbͷz^] /~k/֞1Ԓ " s]W ,p0o`ڴiѩS7mڴSlʳO&:8.LSf̘:$w+T98\-eܣ M^; mU+wU%?K mx≋}fX[M~ v_} '_ |0|k;*7H+L~aS`(g^| )8w Q1k?;7O[pwvú.K-D.bS)75\HZU]:Y3A XCƘf͚uymm Ųm}mE'e~M} n@8붊Q L>tUv`QX F": usK$Κ5>+LxR|N +L0{hKΞՑyf(|Y3f6jl㤾,ہAA Gw|+_I0)Cm&h7g ) ]xMH+)x)i5s̾ ǟmV~"E,DLcͭۦSml]aȩUJ8XEfǞXj2F?oN73~! ʪrW!23R]:XѠlfHzw:LV:ٵj/G+$d:tkI HUo 4x,DC($^ 2w2MU/ZEtq%Hw=ZKVa/U ln?c\YmcJ|}^Q1-ߑ]ΘATu1l6;K.Oi0?n+ަײ߽s&IՓ>qe_C$\l9EevM ڑ ԋ9کA:{wcv\p w{Wጎ4f0W+'1/ׯr%0.Jw 8\Pl20Db1"U5b[ë h2akfl@ocLK~n/+vrG㛌)wpl0vd36Sk|;7toǜEUwq0ٱ|Q]{Ĉ#8|O6؀$ ~L#7||vhҩ%{@[kIӅH[";;&;䢇ݶ!"+#cq Es}^YfP,s ⪣:$Ϡi׆a%m^aL'={:d˺sVX%/^ȄL:۔ĸv/510,U3kKYW3!}<7ҁ11»~u{r>*MU&5g\s1Z?8J7Q0,~m+~}TMHyF a8;(TxM?^.˿g/õ‹+㾖)J|[l !Ԡ݈g@p(n~sJìOI?];@Cϥ8it۸k\ σBu5DcW_]3 3[MɻU?oJqdz^j#0〚#Go+]r)s.~ex쫑CXvBL?zf3yI2JDq=!DW:Dc< ,hY8՟KwʓM] kh^  Ǝ39&D5u׆` 8* ~DX=y~0LM!js%TV s4mde.øqQ8UUOU}RAXEuƔ3I0Ap-}Uͮ[Λ8qbP졮s7իW =s0_nܸ׮]ea8ccnj$y8< ,Z]C7Lq+3z֬YKXkYuVZ9:j*+"HN+aLr}H.oq@y6%." dP|+3b(zQ*TF*q-kiL7ҘndKr p\%ѵX\sӪW&0>A/GvW&Lر;k{BrFTZ`h}dڳ[IMMMLDjU ˫jr[ ,L<*8B`fiP#LSx{d#jdyoTTfMnϫ"lm44H˻4P{O4ɸ몪Knٙ 8 b.hX_{ЛO^Vlzml.To1J&vN] ygDelBU8$W'̮,IDATRՌdT5XɥS jk֬U dyaIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_mode_new_tab_share.png000066400000000000000000000316601521174352300331420ustar00rootroot00000000000000PNG  IHDRd7#&zTXtRaw profile type exifxڭgv$9vcZY9ځ",=ݚQ$3 @?}ML斳_l/>WgU~0/;gst=f"P W;{_#Nkל'E\w:do_x~WCϛ/w| -,*d-m~UGzh?Oo;_:G뜂Iݓ`dʜ~r qi_3) v;K~Vyl4)wW{BĽq Br}q8V~_rB&9ޜS=' r(NbLO)hRJ9TSK=s9,%XRɥZZ5XS͵Z[ͷ[1z禝Kw#8ȣ:qguٗ_a+bV]m6N;njO:SO;3koVϚ5fM+k]%$)gdGGƋ2@A{VW3930RmiB@2~U Ȋnٓ t'F TNq =8kg8yCc0=əMxc2s8 m6,)5LM^8:0͵]Djî~Drt淥2nDcSظ[XJjRmkz'8PlWgu1 GuFS؋609zSV>vQOhs ~%LOmZLnL-En fK;\X6+!5JS:êHn:FCW_~f?+KJ=d ?\sd-v_6po=9@]> K_65 Cv@xxn⁤*2ׯ+7_v6{]dFUQYM#tɻCs_^)kha"D-dۚ'16TODQd:y!RNgb~j0~r59 s?BZ$`eP@noJTF@9tQ @q"k˞DXh7BO~N5[vmh؝) 5HgERHEׁ('+ 0eԓf@1Z MqDAdE 蘚6j6Gņ!CODo@P O*brd`q4A% `P3ɚBY{X.$iSVc5Si2 Q3 #uN $;1ak"|QSqrq^m.Oٹt$dHsQlaRcDD%1&(E7=*zr7X% *<0g nd6U`g cl 4Jh/%fΤtߴqOoMkG;v"22hTC@V\bR e߆N Mp=CNHOZ|c%Ѥ,D `yEyCz]V 1 c#Pwa3'Q҆P4DT *`Oገ8'/x2wsA}pQ @AqI)If:@=QŁ50PG f`Qw(5bl-6PwMXTJSޕ2 c Óxk;%"l@.[N;E|~`O(aNlt{o][ 1>х@fnQ eDEʃA <ad2nOUnidV ,+xK)2ee+ +EQąEO~ ɫ&"_-FI[PƀԤLGb7Hψ@ȏQSR[#K.+G."_*n$Jrnzz -dY`:P;|$۷.Əfl% G+nT/Qo/.lI"4g_hM>@Y0cbv@NtL8,m *t` n 'a"I[-_frLPsnyy4m+B*r)U L7ьNp*"^F҇4$w@7݉Gt ԢMXS)MAɝj1%Ҙ5!s5mN-PERjn8?r"XL_;#kl( u| RpfmuAd P٦aNҞ~L] ^X W VPd9n&& TچGGs"W?H$XmT4׏.Йf K"j#FМ9ۦ;HTboaTH3-zL zՒ]  #un MԧnK} 3Q޽r"7$۸;ÂTL\|= J)k.+ @Q$/,".Y; }A/ c<Nd#0+ENHkb7 I4 t&o91׭,z Y3@~O׏׿gb?l'dQ4:qâ%@)1tZ >૟3EwZ>Rr.o1"-#J F#F+[ 3îy 8="=hog|zG|iP8 `"fر0@A_.䮽SCw/Y zyѰ p[-,bM45S _(`(\^7Dw"c+E-0э"<RCzhL=Ԛl֧=5+ikhi䖄'.>$_>+h]. $f]%mئ|BdH8dG[MDٹ5#Al6=4ܡ~-;>`R`21 }Y&b òڢBc90E EnL/(NtZZ^4M ,bn M5=_;y xm-bK@+Ye)2*zOoy#cr6P]7|?4Eҫ;Zk4M[1)0噕 D/M%5ל[]ıؾCz=|nۨNtAx)-`Wypyb;@~' yY;ނD#p&ke5()6Nu4XfȓEa.OOm/z A %l۹]'B7Xf1Td@ "ZBk GFsAƊVy@*i{a-͙K*Mj/QKң8?52J<:`w \$kBe-P"D85O*3ߑ˭-bBuOy',''FSAB1.atr:! ._f{B~FD5u+ w;xN HC55<W~4730M(r;6o >ó|Q+bzu]!0_46pW*KN]\QqY{ZR;ya6Ɩm& iGoxfV>捈Y-FS0FbЈeD:m(^2b"(=6Z+b6ơ۠RQpV U#kTSƝ!h`iR8ڗPi(8i/4hj"F8VtVi8)|"-Cm=Pb4T^ {v7ƹkwHt6w6_w22]T)w =Ӈ ^}GlݾD<2`绑E)Tۊک?#@{[rdfAyRu i=vURU]̟\ӎwסBMPwq54H-$ʟoLTˤQ>veTlj6:U  YsOt QV)XѨ{.hhB׾숧[0ApZPi" RBEat@ S_5M<\gTZNA nN[٧J=FrRNihNtDŽ6F;٢WlNs #5#_5v%*Y8+Ic|DDMIf>hk _%Y+RXtL6J1oLhwZf'}*z)ģ*[!\9kA !.ˈW?ka1L*mMiFd\&M3:n@֞:/z ^Z-F=`Bs_B<@q@Yi}"N0ņPKC8gl~k} 53D\sֵ}ekx-mv`I0wF^M,qXB!qcUt@K hMCkx"rfDPbOM]};ڼ€I'BCY ] *ϚN eөlhܻp;h[)ڥƴA/Ѡ{2: IuQ孆 _Kci>YK X"X u: i-BK@m<"9j$S溌_C/2`cu;ĝZ>YsUEhm)ćD.888t,e! F3$A=;EqL38hWjĂztrL Y USBkRщ-*+i,BǯađxRziQNL}ǖvն91}RV7ln} H($Ӫⴙ#RNx:KZ^J %MⳖw$B[ SDI;;:uI]b}'Z|}4?8$ g_!̜/ L0%r(lbKGD pHYs  tIME9ZKAIDATxy\UǿW{UW/t$:QdgF?Y&8nQ23 at‎ㆠcQ@B@:꽶ޙ?I:ݯtOIzu}9B*J硪!UgYT5U5vT5TVUQU+VlR] 8@H]v6mrkUn6"H&vС^urSG@`o=ׯNy^teY%,0@ !"Nk[<ϫxEcתA1FF6%kjjUp5@D B̞=c?kT(E$l{N+ PP(TϦ]r}]"j)*8& I}W SH3R>O"*>~A@'1lyGr uu]~E3烬עhR?GU2iPՎɘcY+===}x<~ cȔ fecccds`\.GOOwE-DU kFƘc i9&I.>:FF~ EU{Fڃx9@?p>OPp/H (ʦ8V\iEdUGUZ[[{+B?XukjUCDx5PJ^nQMc9:knݺ뺛1-^8s8Yz{{fsDZV"CW4lժU @D3"gW~?~pyնk@`…!"xWvh"QC<ϱz pkit8ظr >@`[jjj5k֦{WkJ2&1ewE2PwȵZW+ 8`o̥Ƙ/O%_Uu׮]h4c=0`/6֯_fOH$"gqFC==UjE@ 89? =S]:UfŊ<:ɷ(&8Nmۦby?MX˲WVwߪU (~ǃ8Gi*HercİFq), ڶDke-o*")N J&9&S";>UU<\ν/ 0I ds{QSc ~n#""!" UMs['8=S*VTuDDE,O}= d$Ă]P"q{)XGG?QV^kmmM{ ׯ?Toii48CSSCDVVEx,j22hЙuA:70 |]j&Np}U]mK+ fS+]S+V`)߱` \W۸c+H%9Ǿ5ɟr/l_m\M7mpB%pgh㩒|کM2r l ^#',ε!>7 K"Ohհz>۶_s|J8,z "8kfe{MZ[[?= _ 앱P0jD,[r.˯]@xiG_+G_tu8ɶH)" Y,ԭÃg\#;4RS v\\.XEOOoaxi,S9xj_PnCԭ`!]x6K]3͊(VfkE[h+̫~'kp+|cD"dzCeU"FjHIʫyY+ny<Yp{b|a[1ں)+(S%7MM$9b@{Df bP7WaX,v\S6yȶi*"K )<11` `|pUk:)CUn#}CX† !pՕH摜~J`.gh\d4Fcǝ^Rɾ)x.Bd0{c|WH8QIUmqrsq|+D>"cXf/TA3@\Iamdv&tw{\],O؄&h9Jc$k#!"2kx `&֫uttW.-Ʋ,gy_LQ?DqY :ơRY*e({0k֬Fk6om7nl۴iS `7cߊRMYc0Z|>O~cWW点Jhۗ Mspo1ౣDpU2xX d޽c;cp7@6O0}'K7<; Bsaemя~O?C_1.џ/p+󮛦V_ƍ7hȏ̎DEtHUX  pPq ю*$.sn=%v"]GIRT&@WlQ95qY7l:ЄK[}zN,&n I?/վaB[{p I-s۾h̦:O~=l`0(P~A=9ɡdcY8t=RGy\(dwubSk9xb>tɺ$| w?oUu|")*3Gmlp8{#ݩn߻߄"S[rx3*snnXwglΝI<1HAh?3* SKy+IN*HVDJDzhp؁3#`}Grd^u9#@ӦCEwPcT7gg-8C*e9ˉ%k!T51&@8Sw2Ө{+ 'yWv/s"B94-YLFUOUD$B JסP#yـ`D8yr.>7LzMsӶm!Lf(ԩj 2]{p9z_N-SKI Op[[Fxw7)_b{4K8-yUojP p2Q-x\AUб;xe D^0sJio«J_'oߊzےߺe怣zŽf<]['5(jS: U )~Lܕ[7Z@pz<;#!FnV~Y}]7왷zom Bar-_r x]]|>˂Xy {j#"\H81V=Ф7.`zF?g |`ʱ-#Fnf>l1;aBr ޖl1E.Z*iL %" 80I ("*x6E/s'~8sS"nB)۲}]zܲbj4OXd\}͟[0|d hg D-K>ko^Я8y pK6l`]76c2.y""o}mG੢)[tӧ,j`p7xKsUyØ:sK?srix_ $C譹; ?ݡP {SO=_ϟ\䴋kJu϶mb%9}\k"gmmGug7cgOmfSGۺsNNޛ%IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_mode_new_tab_website.png000066400000000000000000000244521521174352300335030ustar00rootroot00000000000000PNG  IHDRdmi^zTXtRaw profile type exifxڭgv丒Fcxsfsʒ>GYRJL|,'uW=\ZVWy/ݿ^~|>w5?D%*9?]8׀lx@)o7f;;F0N`.J .ɾCϘ2'G9vM9v~>gϡp>'/1zsn>(5~`+bzV7s%R=7N\ʫMnM\ #D!f }sxq;S#lKl8s oΝO,pŷ?yR I+4,sHH';, _!V k+<'+>;*3!ޅɄD| |@;~PJ<)I\=7: jjfIr.O˝%J)(kj5[jV[k6{깗^{뽏>G +FcM'CO1+ʪƚy]w}=Odjju8j7G)e9AUAΠ`;eBtbY@ֱ:4CrA"&-myJT`[uF-9*<|^5IQGEڰb9mҞy2VV0%x M9RS2;"s>:g(@_ )VB_JwsUCv Ȁovvnxp~0{n5+̲qHlA h $ oĉ%V$`Ͼ̑fz @MubDDEO-Eyk%Pඬ>MT#Ud,QD&=&Eicq>%NlOh;>G'IwM6 zJTE#-ٲZas_!bJ#cnHE3Hr~W:;Zl9`nu?h$A=s&/G}oAh' VhZ&G(Qj2Ba=5/2uḋͭR:dY5h@/H]O¬ZSp}SHYk(N߻pcng&"5V+)ņ8' iSa>YRӓ*5*΅'#]|ß[Ղi(8m[QcBgryXEFTX7J@E6Q( 71 4:d/{ElLtodBp_@mnݬUჶхuKTŝa9u5g=bjQV͒02ksʳ]dF]TvDSǙȓ;=\Nwj%Eg pÅ z ~JqWWZ:J-[H'|涁d.F+,w`b!y14ENx{H "ƸH(?76яr#KGf?k\ 0 >ʼn_w͸:^0ԽL;Y&K/1.0nE*L\':*VvA4V nX&G ѣI1eK%MFeC& >mdnoސX+ (51t!ߥ\܉D1tD"<0%mh%ô $ϓ~ 0֊ǀ.skeYE4.Dhf&R'=ClYPjf=KV&{ &8a tgx P(% Bi&r13U[* ۨe?g 4]РKB3½Tr$G:x, cɐV׭AbU "4 ƚxh u;~}?q&"W=+κHr-,kѴ8'ʡM#hw N+awET-5oM`j3=eHз=:7]~ y;ܴ7B8&p:#5hYC`^ kݴӧmd9, B 2Gsoi3H-B=A})7ОioS] ebD!H.'3c05B θ7 4M0I:'g bQv W7^=Hq.E[xz1#|?…cU Bd0EGb$2X @TCCzK`&qz _a,Îx:Г\qnoBXPj TLEB=<]FM{x Rfޡs 1.P܇C[G $'@Ў宄& ȚW;Z?U s8P۔bk3Aڮ3X"iYvb)hQkyt\􉳵wyJQ۷ /6,?T{9L{H)s ʮ2e}B7{) 6vyCn#&I|6+%C &xm&0 4)r]HO!<@BK9:C<M ΐTP7q 3+7ýжY~n;hԁ#Sg@ 5 "j@؊xFiPI*-q{űAgM]^\w?g#+3yw7|lBd~~ۢ\5󨨦aҘkvXmkT4#X̡Z{Fu#zͶolY؝bTiaւ\ ͛7k@=x`F9> D8̵Q>%j4y Qwʝl4bKͨLt)iEÁ4C$0α}W*<*("w?{nf/qg`=iZ% `'x(3:xbݮEBvBYJpWv!" v;1Go G1ZoaPUZ/ JjaQq=iOcCcb'#8[A ah e.0P)3P5s.G03z, !ϗa+D#!챔=H5ݨI=BD&ɩyr+5d)13AV}nؔv:z13 g'dlMD!"GRNT pvww>w*JHꭡ !9xuɱoB0R3%mu~.w\ v8%x2inӴ4>xg4 GȲ1qxwM~W{3Jjf0tx*R>pj45ζY},0vz=wL% d63,inǤArT)8@h{zl/ ZX=82Bj,1*o*"/ВL*CX iga p4V!jŕHq }&0;qg@L$Dz&ڂH΍Z)l t?aqg p3alt\,֑hi0 %vk)JaN8 JA#̂G `bFN~5q }ae3u`Mˣb? m0.GpGQ9cY)lԐ ;t3a aXoJw砫I}Pr2Y6[9-?p(e $x-LY@ d!pmSjцMc8:3Qu|$˸~ۆfYj[rP ۑ<Y.WӞ7ׯnUω>׺skݿ+`UOMu CzbƄQĦ cS8aղZ&[@ 0G kQ5pq& gqAtGC/@ h2*㘑=EY.ki!p?@W*LMXdMG2B#е(}4$G|n]ݖ:.3δ*G[ >loMxkzoa!pe{*Zkhj Vy I@ȓP%"_G31jcf$yDM0A@f IB/#RGUFm`\ )@HH\T{D$@3\aYh. :]<"uDWE?Ѡ(OxCyq.\Z}맴\pꩪ`s<⪃I_Cf:oRƼ4dϧs3]+"Lo`G3 sHfs p*""|̋Q2p\>re.iu-("qz ծt|b㘂 "r-/=O};EKTT+Ji6G/Ʒ;)77RT5V^{'п٥)"LDnfe0x`"PUwum lzP*<"ɗ顪/HNnn+܍c|t9(O?u&VN?1lf5"F~ &8ՈsZh.ջlC4 q9q`Rt1Y`9Lő@/`}[yҩ2+![MMLn[{$R=P9: lFܰ ɆT=Wu 6Ģ!_1x|H*:c6riweeeT_/NJxg%K/-ܢ0!LY\R9cowXa#" Rk1w%v鵉ږ~ ﬤwo1Und揄zlxwߍ^ B6La=UI I.)) T7|N+Ez,> ƀM;|e!M?JJJbWx}1#/4A[hHM}n?-v‚h>3Ӱ !vCΘ@Uģ};Q~d9JFKfZUWgMW^;oąONv߶ )"iAcIҏCt.zPV|իWP9ff coDq}HY5J$n^௪]3p^G'"$0Lׄ|#寬:&OU l&ީU9+跛?48?reUu}kz{G~WʳF˧o8t뭷w'FM:޽uTbHtuEZD^ONN.0`Zߟ)AU6>", /O~a@W-L;茩9e8pгX:m^ M<f %pYh mfdHb;]/\$0ت]1COFzD/zGK(4X"9h蟤$TP(8C IɄB!\gߏ?ANJjiO;BE]? D7prssGsl:"(`ۇ{Y@Q˭jM^cj3"UVVo4?k֬C$]uؾ};eeeXk֞D9%*ԂG+%5H&뺴{={oK+)!zE/}֠\Г\|V|ypϬ Og غߡ.$ʜ MXs\mJH$͛=aZKMt!'G#|9%:x :6~jJj,]iF.}ɽ{#;m7ewZ0۬EdS%>2y8n5e8PDV'*lKY(߫sE."\Q0׶k"yhǦauzA>=52BѲ7t,B8)s=_7蜍|`$G"lKMrPH1yDJV L9#w ь͌FMZU8p`*g*hR1[@XEZ跀;N.Y2!D IU!ba-ᅏ{'+w[m)\2X_*t4ٶTv'P:v{D# S¹e{CpUmM4#jɬJg%] ۖAxrx<4G|)hYϦi|XՉ3 V*S__>!_W8VU\ 7Tw5#=;d}Rֺ`B/;ciе )NdW;F7h~`Q/jE4z eH%Q#ұ#l&|.Zhzw߅/D6y;'FWtlˌ1EEE͒[xq`ĉk<5@{}[9jɒ%;Dϣ3q'(2=-EUhѢc-ZH/^\{" rs sw,o{ª'lH$ᅧ ' GNAu"(s{H4q-O%Kh\(M 7wѺ $xuNJA UmyJkNW`/(Gz*f_ޒ%K1ƣ;'- ="DX7RTTSU?M }>6CP>eLG#cŋ7ǣ!y/jw$ @cs \Pծqla`[xGQ&XvG#ҡQ'" Z UJHofשݎ-aKD2!Ƈ0qܟ fGC#Z/.F:e͟e$j8)qdr1ǂէ_2j s\FߙNj{xDjcr^UHnmhPt0k8; &H-#ZFD:S%hS^͟#ˋ2 HO/&"?#V ~FD.$19Zm-{u<".Ƿy~!M:Ϟe|s8Ok֚!GduFP/sq=//7~\ab 66+'M#RȷB7ǏX2q0 %*y#ҡ,0Ƭ{47N0!y„ XkKt_\|Jn'6+=s=oL!0//o0PNt%K;LƘl'@ډ2~ 'X]]@t7G#M7Nռ`gcL伴F tbib U=;Dp}MOWHG0W߯nh l;oq<vBCD8ĩm^9yrglr2߰dH j2MOxCZZZ\۬Mb:{HG5yk-=8]o7POׁ1le8 ۓHpM61tל?O- zՔ)Ӟ;wQ8yEu#v9oc&dja*l|7pppT w~q KGk|>ݻw[{ZB?}j],%fϣ#\tE"+e~lܓ( ;@pqSyd'yIxoZA ^\GNvm۶ >NKϚwJb89{LrΈYŏرUUiCq~2fƦM ҿN89`p"+vyؘ7<,%%UpvuܱDӾ0kCٟ+DrAAۇwwGɽB;TY6mZqBy6R;Œ3?.OT9)“0sAH' b3y)`=x@͜xDXr\*s%D&/ N`mHF (]^Xغi JFk_:hp`%ʃq2r \IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_mode_receive.png000066400000000000000000000557071521174352300317730ustar00rootroot00000000000000PNG  IHDR,,y}uzTXtRaw profile type exifxڽWr$9EYXăY`?"DW d zO\_\ZVϿ</owyM}^-~kIF_vä'G~(w7>7O?w{nLEK!y1&S"{'w}}~m(__b~(G~<71Lbwgv3W"UפMąPW} :SvaHonf9ZlƸɁKFWKLlx;~Kxy;t|Wݗ77WcŸ a(sU$$ܯ~Sb,/̝ N>X%򜸮C;_7 D<0Ȁ!Po1c'?%7)UӣgZx?o-$i rfI%RJ-2ʬZj fK-jkfO=ko#aec9y֓OOsŕV^eV_cMˮǞ'thSOsq,[jͺ Z[n;6kuW֔k?ۭ}E匌xS(訜rʜrG)J$k(9'(cd0[̛+_[99}ey% S.gSo7M.q6+(r+y\Fb:Gk7я0ax y?NJg~~uカv2S5l(;|4:|b Lmj7NI'CF}pkD=W=V3ܪmCP1'J/>nE7KeDu w\"#[\[BkbP_δ޵F_.$HIsTe5O:9/#u{Q"S=)yZYG- IMvgKC; ?ha!"}Oҕ~6R@) RLaX[G6*qB]^8TyHMXzWUQ0j}w:^; %kn) >:Nӭ94zI}n hvgZ17REߘ6ǩwx.%I}ڂBI РkA}tÞ:u?f1: HHHnq";=MÕyҡ#U{΂W96MKZQq MHA.B)HpH̼ 2;5w#.1}mqC[5!0F#o5V[>MC0rҬQ+s|(㮞ʆ0Y9mp|C a;~ȖbVМqK6EE[Yy#?%~E)ӣ^jL|SP sT@$['n0 4M<34$Slym#.dsFdP4.EEe< D`kH.b]dJ&Igμ}̑ d4^uF|a?p !ʖjo/rlZ`/h R>& &N,8j{RqƄ”~Э0q?=ZAAl$qCYnVt*@Ɍ5n p{JPdD>bdf< "Ȉ좦WУq,xFO/`p0<ԯats6hZ 1)6k;{# 8U ǟ4RɳwdQtsHLm;턲U.(E@YУ٩=ttuPqaZ7#yg5 v'"z*kt`BZm(Jwt0sn%@iStPxipApk_I޽•@H@lGDŽ`g7چ;)*Ffq%E$p^#G;~Rj_@^ Ae$vGȃ$H]IܗOB4KCWezvUW r*H'S%G-O.)-uuOK#o*xA,ct^0>^1x./BDzlҪY`,)%Y4;-Mh`ưDsC/"2_65ꆢ8ؾCa8POuPcp<,>Pִn$j99H=(x]QѫMKw Is㷸K|s+l@D`sWH %X4NX&Uy >x赪 ½0nͨpj#CsύEo+2,}UP,'n L> 1/a=L\U+=<Z ')26dcjk=d@ђGX-gϘ?AH ;MT<~̡*N3\hr&I@ZѤ+[; 5^kYSxerWsYP[<;]!䓧']:AX &o"f ̟eajϊ"10;2BM PZ3U6lm]@v4 ) F*)YYѡd$]"9 *5[_ p}[Q=aa鲎3n @S|"!2mAKF71# x,8I} n Vm[`(udHvM`6B*^8nTySi#@0FM)d̗V݂ǁRB) 4y&Ó7 xӅ eR2Bɽ4 Cy՞,7Hx# lI 'IuN4SZ֊c]|8zi iC@4HW&/' /qM±9~ZzGb {7`S.c5d"l W6I¨qeFh;Д3bog^F,8EyZn B^Z@r::90'`?&4[:EUr cvՉ]M+ob9>+6$:urCq^$XIxv ѨǷYP.EIJQVF'T;&`4JrIuW\ :~U+XO)ʻMھK~s*6@,b+O$ĩaL.TJ+YtԟCG eE1" `4bd4ƛNȂ@Fڻi%丅yxvm1Atd0بW!o*RW:d @ZgZ?\,hCW)=g%7hDeșd-.'i- ST/#J]w@G$3@gH*tA=q2 ?%Ix{`D XĶC!]"܁d!*tZG&B5WsU ~JJԢtbKGZ[;_㫍"_`+d t}*rf:|;~kh 7b:,%42%AgMtFE~D B> x{ 9_#Ԉ 8`.np=15lJKdÃ]LǫhE $L` ZG 6gLB_<)rī!"8'Ɯux`&}tgK7tWR(`riߖ|2[!E֮Md˧U9|fꌠ(u,O@33ezI<CQG0:lC3# 5鿪sdKq PGIc!@̾o,VIvvT;FLJEGl) wN8a֑@.]GlDgd`Ht\"8&䨼MƌU'1E6,܍'ꇠ FsRN종3…tEobM  CJ-5-{uJ  ujtTp#m C%UNAglΖ3d_>,IA('޵B^[gHL=o8hs{^cp;Eu ֠jk\0N(G@~H .64&>Pb'JLjDf:%3M &Q7Lpe= hE !Jk1SCu׼cJ2h֟:9ݴbP͘ܞ:#?%Ɂm)wC2.RJ1CR !,mW>:M6nL@BӵMX VôB&a.i6U韢8^ucz!)v:N#\P]VMVgAk7<\C rWǣP*dqu|>2# E9DjPhiӹ|hP"qm 8>zJI#3jǛH#IB1iڰuj QKC/Nj/N:AC]Kwᄍ ?E^39Ƴv6;sd-ݏ{[J+;jREoxN\>\;L'IӴ_<"k+bKGD pHYs  tIME D IDATx{p=(P-;MЉeܛ$ wvϮ$'@S=E;;3u%-h+I1(?Av&Y:l #b"Ww@$@  |T,B80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0̲xq ^a۶O>/4LRGɂ0LMݨ"2"v|z1,)]׷Q/Ѣl%T3L[T 8FD!ޒ\-"30L*{*}MvvmTppp[X ÔDOO0gTC!DP)[C,X ,[ !¥EZW뭷`bfQbUU$MyDg/ 0 ۻbo!!D ``Jӽӳa|"u=RϚϺeizzz:=,X pt]/FDa]Ӂa jJECD]3ߟF^xla1 3'xQҜP5ǃ?3+0 8˵NvjV 8T_쪿Z Yơ eWdbva nbbe_O+X_zXL|RmBҷLKGsD!;ralث,XLCٹ^)m%ȵ D8vq'yl90RE^<>e]vrrrwV| 0b R4mtH|VYeR}>'RSʂ4u@R|>.Y.6Ngrrra~[C72AwBnץ^ZM)H]jBTeYzb꺮](Q,Y]Bk^oab4,;šv긾;a"ͮ-] p=!D䡇J^5WwLMhX-?;D*@97W;_} g&b3ҲaÖe9&eYUV,ij-M}P῿LİiUmy&| ^Wj{E'@:f|;9ulڶ}jOy&|jC'-j ?U7 fʶC>:0BN}˲U#jZ y3q͒\1\̞;>_{?ۺuA'ZYD};la1u%n渑3ҭ8v ,P,V5l-.QwˏKshhh , Rji8885  D@YgSh ZN;8STRD5 #Pgbp6Î8iY֦ZVV$ʂ4^IYwI)wqfEZ 0\)В/bCȐӏ5RUW)ΖyXLq0%!PIS.z:;gYVR={8Ef i6LekhK L"^ؽ{wtϞ=>" *eJPss'[XLZZ>k `y Ji++!7wm{Rj"."RʝN),y>㘮 }+a6lF*eA)9f1ĂTUR~T3J)( 13߾& h=DEN| Fe.dl_QQPJDs#@D,bVJ͞66]<ƍ,+nD5Msua{Umy{_ߎTiEs/b¯B(\Am'|fTafo`5:^{mRʟi'LBJ ׶@q9!t}MV]u~mWss &0$W|k9nTJuQDsSJ^(Fhxppd!lڴa+|RJoɶm%۶ 9?: ao)H˰(YVu % Ph2 jxa0꺾xi2EnmۡRӰ`9!p)ٮ<|l۞\w|S J㼆̴/N_u/YWN6@cGU_t)ED,,b OB]Ȃ@\ReYޭZm BPXh o=,J|e8ǎ.$Xo_%SŮBZӱjѥ xMwnd]QVp5Wweo["kCkiY@46 ֗ϐq$֔-(uM;@0u>8dj 90pe~G)T!-TE5`mݺu*\9_?Þ"Ƌ ձWԶ@@9r_輡zjW3.X/WL_Q p:[nݑWUoB[o5ĂT=Pƒ0\ƊݸUvp~B@&h !Fq n_ "\w[o]iZWӴm,Xc9%"\/Y֎ ?HO&`-4nBTUJ'V9;pgbJ"yX+W~BU]͵EBQi'7 RU={o8 zYG/+ F(Dh`շ+ JJN($V0Df S{ j;u}"XEӳ@d!ij:X#i:)}:M$pYQTb1VfYDs{G_S;u;oUv?u]XAƲX+`vrG) 81_AJl,oJmlÇG0mdbņ Jvmk/9!|X:wT>oFAɧY5?x-V4cyE8ZsGq}u R:2wݿm$_m?Lx2iL=(wp]!$qܦQ XL0Oo]c8:gl5 Hw 7#P *{w}ѕ$mBNoIPNʶRSS8ɳx{掳@7/Vzh柗)uNŕ,o \M3gN;Gj /Rj`ծX4u3O{Y@BNX<{SJwR"|w@_à'4 C\Kv̲ȋ8Ӻ ę3'ftRJMR%قe1(Et"S"+Vy5x[_x78W Ueo^v$_B JOpڷBi/i?lɟ1ƙlhaEs/_Qz͒\SZ9w>"IʚeG7JK^e,9;Vt )8%^TZ>c̲qxKJ3".2ZxG6fG c++ V3@n]AC{S;ڛDvpL nǑ)eq;6 +]3)o<;{WNݱIz]hIB5&`] {>"(PwShd`9n[RXzGIJl4:,HB6ƹx߮C}HB7ط*:88Lwo 9WO7~wT9jE|Y# ekK PxlxeG>= nDž5JNBVǰ#T+q%wTrJ},XLQ-k.A[ar|$ռ]e]v&-,8ޛ(|'{1J}t{iQV tWHC۶CafRl-sj^wk*V)~FR JQPzRʑqA" cbΙy_ȅm՟]78| E77P kvݰ)1CY[ϿSx)ZdT$C[2o0 zX Vٲ̰m{CͬX-E,%}&zf<&CǪ-.!@Dl?\zzz1S ZBT{UfGs,XYD$n?,X`лu[6 cǬ|ٶ-b&|aS@E---y]Wlb9nNPtڛUu r`?knݺ0cD""h֟}|E_:ZݻwGk,ZG  _Ă-,Z|PT^ъJb㲶>" \U'\\8I )~===UI hEZZZV,XL&>bwثNǴb]\Յ-I[Es&!DPӴHݻwG-Wl>88eł,Lz(v>v> NU NdxZWVhX*$&,.PJDnP59DQJm`gbf~3)ĭʔO uժ>-\bE3crmUK޷g_9FMe7,X̼r na?R\jj7 W'6^/.iZOO϶싔[@<.ZDL!DX)ސ^˖q2~;22R9WԼWh/Vsg((V8*b|`pC8^pRQ{P:KdJzSo ^Ѣ ǭ"%UV [{,X˘ kIc"-DD/Bg=ccg׼[SOfBW1nbH)f]&kx}kkOfrå=x?>"#S)5BD#\?};H$fuʅ56GSxTj.!,]^bZ/Ϙ>OJ鍚QJ4hr5fBP]vtĉD"th5Z͗ξwݒ/ˆyf̞6 |j@:}se]X(-+ie*7=s  "J"|ɽkf 2\sxj[s6[+;KZ0&ƒcr\uUpiWP6O[6ffɓH,n NE˹H @|{mn+;EV]?ßXbjVE/JR]~GXJuoL9@~}7?+j*ӿVGD "rcӂ0B B -i13hwã{i%!`,>33LMN[[PJ!y.|%ZE+Z݅%d1+j#4]CnmNMx2b`0-pps~p ]] [P5 ]])[=z8n1lV}YY;wLuh2jEJaʚBN: ]PEە isz~7H).mۙ 7=P?A+h}uBF )i qbUKBHTNp*w8A7Mc&Ls 'O@<@<17YvœWN&l:DRUBQ0PZp]j5Qa9K[ut$X4c4gXIYA2_I=ъ+Ң5&ɄtK)պ`aa'RˈXcaf8y2QZ=x}z{ sHO' qk2?Qe6X\@Q64}_El/~',,SPbo2u\2tVu|<Ū8^ҖֽԎR~!0pӻRRg쨔[Hݓ 쿛4RJ|OO_ʹ.Lфfq+>Qk TIJZbUQ@ڝ?~[H*D"͗3#Zk5+BN>;qss3Re̲cYRӂ}\,T "+", ݉(*,WHZw'0 ӓ;C?]@XD *-Z]pwه,v c 83]BZUX`IFH) ܸ(J"]6'>2ypQ.HR'n%tAM@tM R %LAZg<='ޑp8 -\OS)ܳg%Zpw$HVdʂO"9>3xv|㈏M+R\•eCeB#K;y=pKKK',, gЖ2R|@z2 R#{ 2)j쨔ha>J` =AS2 ~oII,šyIJ,;-amum3QYRWUp17]TTz)Tw$Z[Lf]][#K%[_r؁rp:ٵ7u-RhgkmOWB6:uTwSRXǤ6̈_Qooo?R$(C|&Xъv mOŕQ0%T[[TnwOQđ7>kc:/=38o-y/u( TJD"]rj-.#Rku>ŧR qEs)ѯ79Aa=91iWUPAm<쏺 @j$EQKh$Yp|uT}2s'Vpaae"zF9g%b"կZ[5%6߿w_P{KLIhŎQԲ}DwhhZZX-mt.B'SK$G2cbK7q@b2)@Ps47lȏ#<J #TOՓE\^*[^: +dmDb䷿v(@mzR>MhKOOO-.,Pt_Mӎ+)~+._NIax:,,LD4s֒HT(S>[9Sާe>wEѲvWZG-j+|BpoooPJdkk9D~R@kuS6 "aַ XbZ[[0j=V0R)$95'''ǑL&֨߰aC4{dIAW +M"~z}u*X%Fduì|r2+tcNF6mdDXlFX,D"d2 ˲`Gyz3-,?Os[ӵ -: KE"unE [&X>H_Y$W6m$x_jh=g 32RwB|pR#ۄTN7R%)Lo4 \y>gա`E"&ͩ&*Q$)k؜%X%)ňET Y3ʈVF*|x*,(kLYHNL!1>Yc<%ZBK"XPevk*d:6b:6$gǑH4+=/.*%髨j嗽%uǟ}J͌9)ˆLYe ApܵB~ZVJxWJ.F 7Ia*bVl`۶w>{9~UUr]ڞ%V';7-S\ς_!ђdI`"M?.]ZK߇ %R ٮs'|REK=<%XinnCq\uzc_>WSvj66~`LCKM!Tts;9^ , wsw򽉀<:yw|S_-Wͺ*cX|_6^дR4 i'"⪔ڴ\º] wIwsmcVkh0|pI/j4qン}+BW>d + z?\uC V^'R}-1 WNP8ߠ7ߓyMAgE@T;CD#pxٺ wkǣ,O MhЄC3?Kwm1-d$c)+L Cm#na۾IZ{ ~[~'Vj[5X" JOR=Z O>x9΂UuB57Mi˫Y!KX 'ǑOLHL .㰤UQq-PV|bL&L&*jV4ݰhSYT:XGCf`Ǣk3d*Vf%µ+\+{b_J!'&tÎO"e'Kr e;IwW_}cD@~O(BSf D 2()aM`OAV|힊pCF4Q/af˒RthT*^ϑv Ԫ`*vzڵkMO'v ;)([/ET/  wzOE]^lذa~ZVYz~IP0r|\ 2ODw]!DP)u<DzJmzV`/r;3eE @2A^-W]ԃ;Y3]k CP2|YuIͿ|](= `[{u\Bhސך3Z "c Ts_9ÒiDK|e%KږMJ!zwop`۵ފ'aN&VYZ+ ph־_x:4@Ҋmm/-TP ?۾!'WB1P2x.yXJ,&2܀rthZ`R'5Oq%SQ(JJ$&:7;H"K 9CȯRG,PjVoɢ@pnX$"\K.)rBL+PV2D ɉ8D*N8,X̲%kMHX˧ xm\*+}RۜCI|Y^WλLnsH%Ⱥ\F,k-娆)O|]{CPYk\ >'#[XL#R8N5O|aztL(h%E}NqÉߟNibł4|TR=Ǐ&;㱥R8i̮mʦH'?xo\zGY@]B%Wp( `dI3:wEA_uI'-,)E)頹kH'PBinT)ׯˊU@HK0b\x@n%gFL\zkGBMs=]]^[ h;B60@h+Xi],CCYCZt֕S¶K;RD}p"fw;`1 ʤ%xϯMKkRھh11Iw5P;XS Hkvb +%#na*jDưݻHWPR/mm-Y?FQ|g{< ()XT8iYeG֡故K) uHgwH'#c^:79$MM/INCNg,7uA mHn=7[RN`'HNƾKVK,;Bɣ h`rE R,}8Kgrѳ\q7!SN_,-EH!jawak<{gn:<=~']B@(T\,)aE{zr3ԧxla1 (6[vm1Jrżwڵf>0wo/?ݘi}3?v#2}>?cQe\.dJPNG['O0 +jن[W{vt\xwy3Î:H&u!Z_T6N8_ .C i}/1>m4YBYhғ&2)B3JD1 y[4}eJ&鬄?qA,,%Y._xۉ7Ѳ,0)傍#&&&ں.bZ gϞ} #G̼-% HgƮ].M/. |h7 ŊR^>y&+, XR,kHI)^zق5X7pʐyRޱSPA>O\.Q4+9qTJBdx%Mi ȟk e:M0'۶a6LF/UΞ-5k,I^|EǍ8Ix-E,+˽)lV\.2q(RQԈeYG*fܱzX*^z VMFڛ*`”]Nˊzo16K&~7|ӡn{7ֶU5('.բ-9~2"ʊ۶#oƢRiڵQbzՄyzSŅN|P= Ї199~nnNhW tnW3D.ToLM_{Eѓf0ȿ܄+!\Q檖UhojGE4b>W6A)B]ס:4m7 w8#J95:Z\jrr/x·m099j΁R*bY֢S&f5|>۶X~g [5Md%s,$NL٩b46𷳮i4MaB@1}V8-5T)֬Y5k.ƪUp\?@nb$kid#tReY#KcuW5MI);2w}D}(^sC[\-Р-Nڴi]AD–}\eYtpS;!<$ÂŨ%Sv `RCnW,͛7,Yn8,ՐXAkf ؐXbU_Lvq3* jq4K|r` ŸjYBa\[X몵1~W\/ U`x@@(5khh0,XXU"Sv 760-,5\'|2_ x/%doa z68 CmZL*ZC64KLa%d8ØT37U`b+A3@-v04n޼ SSwOp* ,@Z;́F29S6 ayچJ B3a2ټytE:5M»8BtcG?'Nc.@ (P]tP*%ǀ)3'N.eyx2Fu]?ٱc&<'"8bʕplcZ+ 6K +XdQ v(.]hq]Ɠe5==󨭭 ~iطoߜccAeY]1+eH<>/@؅qDxǏAݝ)VHR.hػ t#(V@.}(ZUf )`ٍg+-Vx14}fF9 _8&%3I_WWў2ϝ;l%Ôg pcX%q3--Qc[B2 w玳edɩ'ݵny^`9,!M(sBAw??-ZP3)) [Xh -d01]u_s[YŃipCk:gϞ>ڣduP4]ݙ1 q򖼏߽,"0gҏ[x IJ+dWZȺMwcȲZݵZk[^s.'@KXX:zHd WP`)A( XO߁bJ;o]gZ*9N+iH' Gks4$ɌhiH _BemAQ:+'qt⋞K06&H@VAK,rXfE9DKfބ9s-Bj!fDՆRIp!tۻpxbWoG9>`;dBzc͠Ą73'@)p̑뵩gcA59X aƨ"؂1, Kq+Ơ88YR4bZTIHp7be7Hzr.TwZ9+CP*CSpet xHYQU1"|_ez iKA_EKEҹz ?}ߑ*]ħrŠ!k0VZ + JZX:&>~iy{XTq!I~unߴ*myM*bn5S7!f9+)X8;m]w0ZY/)~@&xQw@**L:+x}AFư7t]  Az7)Fx_rҽ3ގ6O|-[of3×ƭQ i\ODw^:Ψ0mݽ \֭Q --s=N.)uF1/=aK05mk+ve Ve%UyC`7 F\lڻǵGGG%lmyUJ&8)V Ѹ D gpum_1.n߾]PҐu ()XqݮX5n(- ᇋzNp!$ڡ$PcccI632@Q=W=57Ad}& K`%TtP"x-M(sBggAV Vuu ;cWi<8Z V0˿ Ss ,ha1 S2t X s ʵ1g`m=WZ ݕ.Ȱq*UoCx%4a1JuD!<ҤIAAPnp 28-V?z00LI0e0n̎%v>c *V,#1S9 %-,yqUE) CQ 4QSycO:-uBx꿠&*^2p!-ƻT SgHHi0^DIF'}q2t v՟bdkw=X(Vpxbh!99֑" .5x93bR5,XN0TlBp(cW U.a2>Yz\q8׎ XO00@1-Df|_>cǎ-PP\j*v K$ 2FiQYׯK.%''pwEosP:g"V2pg,~=PsfAK+P; .S.`;1yQQ@@a娙% UP$PV(p]===={*0B7d1,uu"+WªUfG?QhkkwԩdL kBmPf P,S.P4ZBPUf,doll\<66vʄ0uefݺup9A4N͠(iG1W)<%X!&}U]EP^eQ,C*iG_R'8$8^xz0A$A$f=}Q.oT+SdQ-N0B8 i[o~hD2;vlh/,L ޤ:%yVEJ- 8'X Ka 0NCH[QDzтJ R:˝ 1khh=t7-qt#[6JAJf@6,T Жs_}FGg 5uP[?ܜPZ4qr->m$ª|Vɠh}7_߾}{F%o}[9E\ߣ+Ae+mhoOf_T K/L6oX 9t`WOmX S$q yj׬ -ʝzs0}_a3P$,kC\q+hz70Aޕ\^gœ!k UamY >=U<#X:{ ^$SƬ}Aic:jO`9$0JX fhjAP3;q,0F>bxFb{"? ;" 40Jct38ލ- na,` ؖhJJ9YQ MηM'XIr IC',VfC1,VV F,Cr x1= Bw0b7Q +{ Tkw滢n]sF,d>;q EBhpӚ{La,tǦ}pm{rGs7̸Xl̿RTH$/[|G]ܪœ?VG&չMNSX$j-eEˡ ?;2FY*ZKiK@#W ƳQe*O_} b箨Qpn"qi*T+İG.װz2}t޾ĝ!`cv2 l-!YW+j}=O8Q6fhcXSe+{EEh۠hʙ$ `D&o7n|cCCA,?@҂HgsEZ (nr{@bJa L0R øblx.}k:az2`m wX 8W 83HyluFiXL_oޭ7sw* `56< ojAf|dz?g h]Qӂu_'E'6Yz]Z[qкWA߼s {?((V%(7,,V“E7X}vh^\].asY"K\M>0n  x ֻaENNazb \~M<%Xd]EO@&0r1ŊZJG`u~-p` 0-U(xlxO h2)+Vz?wk zl.wgk 8 Ų`dǦ'ZI) [+˱\ɽ[V%?*b̀"u'3Q~bd%4~h)q EMxv՜hYAn Ym^+JO)^ Oh]ݟދR?pM+pL~ o^R'QM$*ǯ瞊d/ J'q"?^bQ'S XLڢi _-iM5te˒+l6m,9-iy,HYGi0Tχ<[Y;(0+,u3sFps)NT1 3 >Xq ,X ø,a\ 0a0kX˱ёa({,mo@ 8epO$[Z@ uX9Vɨ_alZk AnGg0I\A*z\JKHr 3 ([m ?ۉv@3^7a*Lقu]#Ѿ-/7K @__o(HDOAg$SO&5vEhuֺ.EaH,|>-s`+K_R 'a$҂SC`!;cZݟ K_PZ0|IX_ F`e`o7؄ʏ_A'"8Bipwwai  !z  MOƱĔƫ2 H?+ !=$-"HNo0|BG C;"tEx!M 2B`b(CaA%"D/HČȍ$؆DPp.% V0zmoo ݜua,1FLlcyށakjbi;Ef )zAsY(Eق`=gS((咐In'cT wMWNH[WB$8 e La Nc(׻ﻹcAZr`Ҥ[Qr[U3Z-eƌuUS?&~,BbBͻʴҌ(޷d5/P( ]fcޅ4XA:-?ɌLN&_Mw5kp<;yF`_%b 'xvQ+Db_:3{u֬` OonXրC`J'Ub&jlr2L0E ֧^ۻ3۽3z?ٙwuϿv067|}\rVxKh<19[3 ô>[HAƏYpk/t'7NH gxX*GQ-,!͌u!N]QL+Ԣ|xkl:M[U4ɓE͖+MM$.`<+Q+(f%4mS?JUm M3_f}ҩ)z\Jc$'d0JQ`.W? . Mtc0$8A %: ,ìs'\)/]Yn,\xn 2,R.;,ơ/I%?#R%XSq~sW"vE8V HwR,/FcW "E3n-*LRq,#o&>ZBҳS u66|/?;z,D/n<^p)d\`ݖ"@%s/,56l8eR5\ɑ;euuu`vNutt8 g?:*ƿ>hR#\{Μ9㚙7IBGIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_mode_website.png000066400000000000000000000215471521174352300320060ustar00rootroot00000000000000PNG  IHDR,M pHYs  sRGBgAMA a"IDATx{uﯪg$ !GB$lYve'>{c#kd}F'%Y!csb;F5pz|b=1X !]ޚ~TpTwկg0 S5FRȰROmZDE'Oɜ1 0KB0%!a!!JuWHE4H@g(ljX)-K0G|4(^)|HP4LY`1Lvܾc0QB*Tr~`1nE]eC!`‚08U WBJ,-ib~XLuPȪ zF߁̃5UiB[)Z!Kq`fрa|If+Bv`jFED?ɗI`lX_ұc#wACю[,\,XMhl`^M…F;:fN L1`:>_/ zH.+B 6`:,}F( p; 2~B]܏ _#-,;рςx2ۥ&c%0҃&,X! r`1F"-]6`b< z=]QnxUQ4m@',x45exڊ Ώtݺjab੐Z>,za.KO`b+#Xςf_",XwQ0G-,ƳH%=/XTůiovab< ҧ"E=)RG=U/z_FTt6wMv]AWKS{6? ]Kno/LRs#m{bo6`f M=*x-V`)k@ <V <ҔZ%`]s !z1E|.+BIh>펕B F ,@gJ4sBadNh%( 񀯺`M)=ē{{]_T@ <1dd̜y/xjY\ob5 SYn~̈q( C,yM@YO*ԓPr-7[/gC`;=Aq!hG17I@qH$ DbxYJӽdCۓϱbx Oq] ФZHi))( .Z3Jػ$u)ھ?4HV/3y ̙yfftbF0!)@B5cxAIPv"ٓ2a>G^a5 ~0 Uk>|S/6嫄Rv?0>a ЃӲMZ%reF+zZRHJ;ay-!X"ZZk.oN@XEQ8)0]ղOduIe! ֜3)ǖCP,L@tPky)zh]ܒTÐ&e{G`5KfX~:{aJNYwܳa $'Zx"c?0m +BUW?{q}xi89vgߝzӹQh #:3~WL)# VBPqo% _pG?'2_BK랮c pIB1D:BѠBCx+ Ek_4}4]nˆv$^)^XT_?ؖuu¿;_zW ֒J뮣TN <(ҵ #.T@BlcϵQn b+V&/?Ob\ťdt`=x xE]_v-GUy=H$ GxZ6HP|5FIY1pOb< EuUrh`0ؕfvݏ\uUN}Ectÿ=0 y ݠ yO>$4?}&lY4sTjw4Q'[(s;ÔB4˽ P6Y6Ym{EF>a0g~H-"Ϫshx 7V]%'RZB\~pz\50 ϫh-2Q ¡tDW_Y-,Xҕ h]o ГB a{+p9i}_6 =(m] :^:7O)f {92ᥦg!TvC7VY!>w V,$hIENJ1 W)~tm {¹5r"?kr6%̗'0 UTp5p"V/k-9fo8H;ЎI(M+X:!H_ZL8+h@Le8NQVςUqT^xa{nޘ1Tsp ì bM ̚ryT~j lMa8qVZe=z8917$VXZz+]/~ W5qӄXYMĦTƟ̈U"5q8ziW~ 7_uIɱD,̠}R 2-P\VR䙟E?}-o jkb-t=V<+Z$.0Ӽ@(W89>a&xpRQ"?z/ IF[5DL" ZګB2n&8ϪDэֆt6B$)5i.McvHu[FZ D享 HsM t: 4]K1B z@ҦiRy'_{U84>QM}=y_IJO~C+C9o9Y/kB%j ix`Q1ig2(6i<&WSA+s] kΑcI}]o.thtekA Mo1|U ,X S$\7QbwSU煊 ֏No `k`1Ltdtn{Q)-Mxx6 VVxlf LopJzTw (|s^#+tB:l#,q/eQ2zR᠙w#,qacV~6Â0NAͶxD >a\pσB˝PQb oIMh+̂kLP^8Bhn ͏-N(Ja!Di|+3i4Gݽyv/R`P[(8`jnWX13wuW䡇JaxSڲe "[m=5-|,`5B HJRm]+|`5'$,q3' U)yf{{{$~(b0`ray ?:sS> #`p0@@ F9ivQӧFPiz3S5b&GXpx2sĪPu0c їMiXFV/_ ?|(DYp( .US`YF4/=Mk/]6DZ/kP9`zկ&%ucA_fKLTky%֗$uBH$2hS:۽"q8P* ,,XuSap$Z#[*wi-p YX^4 ʚdf:@ŠP\Ȃrc ,X5fj}>wn+N!/ )yS`!T40eusJ1|6,X5DJ0eQ%|Yj1+ YXjEXh!=wZ .Bxc,X5v<GYS(% Ja n5ڋ^TtP'^'qt,XaG< T-QAq5lXj\c j ꌙmqeӰ`4]0¢M 33ZezsjVc~w6mXjF!Ðh|zjg&`C[ϰVwjhsǰ`9r?\$͛7bUB!Tc (Rar@ x~[k^j%,XT #3$4>A]NuOarl6c&u%B ‚0*%L֨fۻ+ٔw8`1L \)΂0y3>(4ɏ; nq*Ojtpb4}+y0WYCFR6earMcvn&}.>4Y#g>G'hbf`9 Ѻ'zs|g$ZgeE')[ |f`Ոn X,Bi/"|g˖-\two /=}d`/FXl6_+*W΂U#x3nJ5Mp _ÂU;˜> Q;41uXjFtoRMR,X5J>Ob(D,Xu.;Z"ÂUȬvr-[lB2ok݌Ƿgh i֐~V?u- 3΂U?1:[ JI֞æ-2@An'5ڏ,okςHqq4ՌƧŊMvDIu \WwfɈG4"bbuIp#5YG;͢(\ -;icN6 5.ŋ; VCf0IlٲH#".J(.0{{`!wWA rP(iYm$AF_x\}۴w#p\#-;E-J?1A? U9H5#&c:ҢѠ(0$\Id߿oJl7M~ }B()jjw>‚դ,Yҷ8FHCx?f=uOҘ{8 ^KiZk.UuXӎdˣ ͻԅQ /bmh=F<7\<0{X 76ؠ.':`1L 4AN2cXJ:,X SJw xc[{,)]$lkς0e-kqgb2%: i۷gb2QHq΂0ef+&Gf&[#d֝2en|grv511?oحfz Einp,XL&.CR\)uTjyKw,AA&OT Tf ECv5oC=ۀ ab H鍴6뻳N]R`i2EE,jS`k 4MZ\?;B>;R92IjzFJ+S*£hNDDӠt62|8Qj9:Ai5NM CZ% 4ԆQHȘ'$2g{9*뤒P͡g{]**$~c)|]`aqXx~w C(K7("%>$*yvfQfs eb#\Z^G[∁ڢ"P:ȲD˜ [-8a{ ^(+iiM6X=hyMOk27uGȢ{?`1L3`QeYS(ʪE :iaz(Dr%}3MVj,X Ps Zf ^M|Q30jӁDЧrBEeJTW\qE_y]mmm /0K+ 7tstݺ NOcF^M~ve o2xell4~!1֭ pyG輕GJҏ?]TW_aڵk/?4K{ѵ3gOEWG.}l6 ?k?~|U5A0 ep~ /BץT}8nd_63'`azFbc4M8-X&aX/Y u1~Zڋ;t`1L( EͱI)M m(grh``gSmł0 `ǎ+B)q*j/shv4vYrM`=`b:C)01P*CHP$AXΠoSo!q(kbb:2ex\ UF):"R @afSIDJqX 1 MJɎJ=_N ~ SGVQia%atC$`+i/!,X SWr](Pz,G4d:z.݃K^&˂)!4Jt]z; 9gG> 5-ԃT;%G,J9VYܔZIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_persistent_enabled.svg000066400000000000000000000007371521174352300332230ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_server_stopped.svg000066400000000000000000000012511521174352300324050ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_settings.png000066400000000000000000000007101521174352300311650ustar00rootroot00000000000000PNG  IHDR pHYs  sRGBgAMA a]IDATxTQ08`:NZ `*W@po?X(3>h>Bu,븾X,W0HYKӝm۵eY;i?4X{A-4{W,GEaCѿ m{,?{Vʳ b-[}U窇.|[0=܁T9ІDGE6sf]d΍gkiZEq%u~(+FoH'0zQD!+ɭJycb^`((I[^,FzP>O9GI&gC~9IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/dark_tor_settings.png000066400000000000000000000070201521174352300320520ustar00rootroot00000000000000PNG  IHDR zTXtRaw profile type exifxڵi sYgxNvKdwҲRU \Y6/MLRrkqPWϧ|^_{=o<cJ8~>M] x :g#9wCLݐkgSAnqAxMrWA.4|zpp3 >-Gkz~d>8o_^p?O ci9޳콮յ|?;Kx'*bP>py8(=WGPj˄iŝyoqw< ¿]{(DΖVկ1COou>:s6f/ } !gdD̝0م䲳8ÀKO1un~#^OMB754Ȋ1? >RH1bRM-s9KVk$J,"ETrRJ-TsZjyӘ3cO=w3H#eѦaƙ&B1ˬ-g*J+/Ye6Î;e]w{vcXs7aJk5"G8EPSlq1zeN9cdRnt|/ͤo3J9uyynƮ(TLm J34Mj`T|zr'b@#Ri ݷhRY4(TFȞ֜ nC 1X6BYvHi-nX{3DoM7Tr-ŕCoIYjZ΅V_4sjtO)&le\Aךڂ4窪.UfF*whL F9'><0t,BD't1it VݦXՊ6H-JjmQE/PS']\en^Yj\Υ8CZZ+fVR>>DeBs(dXlǑOTGoNe&Ի,<.KY=‚`~O~qjwaEMLIyYfY3/գ^98~c'kN(d`'A54*JԝʠspK|4PȊp]ԮުeoѼ{t/]"QuI Y"F꣑kNeSбTGV ؃J?0\E 6vd78jQ6˩OVB:jD&J]-R&y3 LEēBm" ˖a?ww;14<rKz=kN[jX(š$댍֋<3@wv~ؗ@q-ӗ0f 00A!8>C7{? ~9xc4]l#LGQ3G8Rl͕ͫJ $w/ .Eoӄq0SOlD:)L*fۖb\ǔS5gTwDxXm.m*|1kBRbpat:=ܘnɫȴ͞ZY?.݋ 4)⿊k4]n ^%ÊUܱ>v kTIhQ-q [:aq]< a=P}skAzv !rx5J(c1&pt4Gɽ!ldbs>JIeNOCLǚUk|X0c5vpWC(t6 YRWI7|L-#Wխ9RcscjR nox3# ^:'JpŘc!Q˷}jIڶy$ii4o.uksT7g˵ha G#UNQ JJEM;dkE5ݽa(l5eCHDZT"omiCCPICC profilex}KPƿJKiqAC X"TUCHҐ8 נ*"Zs@_qw\5+hm2i~‡A 0)ʖ1-YtꤺO2}m+-saM`|D'WDxĤ2]qe.f|+F- { Ce^pﰟ< ' N tbKGDC pHYs  tIME 3BwIDAT8˭NQg-1!Bt4X $%&vvRkkgBc! qw[vz~)k\+u>SE]mNTFS35C8mvǤul'ST,,fr>BR gV&kǷzZrl̡Y "{o7 Iyn.^&O@hxL翹_%w\IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/file_delete.png000066400000000000000000000002661521174352300305730ustar00rootroot00000000000000PNG  IHDR 2ϽbKGD pHYs  tIME:&*@#CIDATc```p78UgA(>dxlAQ @Dys` (IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/history_completed.svg000066400000000000000000000006521521174352300321010ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/history_in_progress.svg000066400000000000000000000010761521174352300324600ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/history_requests.svg000066400000000000000000000010301521174352300317670ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/info.png000066400000000000000000000006631521174352300272660ustar00rootroot00000000000000PNG  IHDR |lgAMA a cHRMz&u0`:pQ<bKGD̿tIME NCBIDATu!NQob$5 4x\WC/$AW8Be[A7(ͨ m˂eʽRVufZo.<.F>-=x‡Dvlb.6/ m b%)hTvtj:*n{v-%+77%tEXtdate:create2018-02-11T18:24:27+11:00 yj%tEXtdate:modify2018-02-11T18:24:21+11:00IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_history_completed_none.svg000066400000000000000000000006331521174352300343060ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_history_icon_toggle.svg000066400000000000000000000016041521174352300336030ustar00rootroot00000000000000light_history_icon_toggle_selected.svg000066400000000000000000000016231521174352300353750ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/imagesonionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_history_in_progress_none.svg000066400000000000000000000010571521174352300346650ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_history_requests_none.svg000066400000000000000000000010111521174352300341740ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_logo_text.png000066400000000000000000000064061521174352300315270ustar00rootroot00000000000000PNG  IHDR$-`6 pHYs  sRGBgAMA a IDATx]MlSW>qHlja8@J3#^`S?#ᔪ)1i)RR*U4vS]OL;ì.j: k;"I/{^;7~rܰUȴ +BElEE~_*0rrꓫs @a4ppa˲LPZQ1VJOwj|<~`kI#dlB Q* tNfČl,mc%(K\1WW"y5]βu e3 uD5%<žh_M! s60'66x^~evwtktuj9/v?_fFoo/f+xk333hG̋{|~U|aĞ$whHyu@;< ތ2It X@ޛ,_Q gèFX, B9]RAMd溰>r=Z[hQ6@%3~45-vJ1";wcR܁7^hX&gM#vL9| Uz*ָW7ϼ2u mN}unM -L 1wRAc9hˮ wG0a9~, `caMh G |sN˟5Fm ѩ:qlо^ktY/q3wGQjIpNJ$'hfY{]VNP@h$N:I ܺuk;HIq]E[Iboo9ZF  <]}pgsmMߢo^ 9/|Xc-J6ŏc֙<`0  Q~9)m S}f-s1p8(c*l>j[p|6pQ P[XX(pk=~J;nHkyX̍O׽)w"*tpRJS# {M|?xОRCU:NЁwP<6h 1'EIW;+_`n{+&ͩϰ9|ZyX8Mta Iy \ת&RS&cI 7@j7m)e/U;09= &u?5IO_7Cd>&a^:g iHҞ)I B췈 @brbd8:A?6wlQZy 1#/ܩDR@qsK\.+>YPpQln]Box1t!Wws;N\w/F΍/,ʷBbl8d3.*;`2*"͜hF?2*_SBn\^Ivz8HmB4K~@H7iq@"ߴ#߈,L.-M%9f~䧥rȳ 9f+qR<f'jt;vBӶM#@b9?Mʮ(}Vʅ}T*D-f7o6y<ڱ(}Wⷿ"8 OE57DF[hړsST`HQ@ϽTw)ү% 'tp.Ap>y>?9:bU&MH,5{Tʕ6(M 87slP//8 {6EݡJ @V~%6[T-UX^BP@B%|]]1&\ Ĝv EXYيQJh3;8Ki 0qah ٌJeܣ5z2(g͇.gd  @?4{+IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_logo_text_bg.png000066400000000000000000000366421521174352300322040ustar00rootroot00000000000000PNG  IHDRBAN zTXtRaw profile type exifxڭi+ )|n \"|5oR"@fB7EgyٵģibzϩQ>)T~޳q^_0|3Lğ kܹp7?u>>?.>Ϡ_?A00_-O95댻:฽[%?I3,W8,?1oݻkw:gS3{@' }*mmtɚ -|Kl{) ܬhY5 h̷u?um-[yrY2em{#us`Ɗ92xe}7X? yAK5K[Ź2NR{>?"-,&WH=W=Qș8N1V^j+Y\fwlujR d՚?MrȤJ{Dː)*ko]zG٨ }1u)1iZBa]ǣSU͸1q1̋Wo.}tu[jKV_cͥvuSuɇT:gy%nwy7>ZF-P ;n|Gc1E: J >fiJ %-P`;߰_Hp+ ' toP*W5FFLSQ6ݲT3cj!9֪w5ebvxΔOi{W%"Ge\@F`yGvtSz66i( bmH s+~ۆ$]Kb9ai?Cö`@ 6\FE$,V jlDM#f3S/_Q{uw9>O"M'TqWV./ηПZ#E 2;s]_5s3+xlȁȐ2/Ռ>ODdRL`Cs`m= 9h /v)^_,%|Y.H_6l }첶{(]]V*\N"=jK)QV` L}Gj3ƺaXQ^kGw,WId-5j_iuֽqo cA8[VՈ J:A@&lUX{RX+Wۗ:@y\E]s2Ba\uFCahțz$`qp4*D8.M,a~Dl_H07\J5~Db[r+OULTzFnx$ƲluOʙڻPw.a2H.IزKĹ!9\OQ|k[̕W0&(}/1!*+ 9C&u5% b[e E p7386@# pF[@CiXv,^9mlҚo.RaKJkg8%%\bW : R1-S&5_9W^Bk7w4jDm }#bgiT(Rw@b'!Nyҋsum2! >jN p2 &o2H<LNDZ]r=E2xY"Mb' 4Ko%ymǴf;. 1o9- . pC^w,M9yA9~u釾%TIG>(߱0==2&~@Kv嘵L@iXTyވl; i3 ;Fq ,NAo*D V;`C-]/gTKX %)wD'O 䉽\t;A@7vҁŬC79f)L(xJ`fMA( sApiSzk{+F-GVjr G 5!:-@%Me⋗g)NqmxFec͗ 9k#dLOB($  tha06C]hf6lذ1Rz) ]Ib" >y&(l@lo 6NFxFH$rk1U9B̖tx ^ 7o;iÆχ^~135h_;Nv ?u,h%D6l7FN阝6NL$p9GRՎQJ.?BCZa 6礜#4Ѡ-@ qf&wKBO&t7흵aK>EEf>@)5y%v:Cg 6FF"99"ED_%}J#M<"jO74t{mذqԌpn\$#9UcbZsPp`,$L- CC흶aFT8B RR4~IL 1@jFPPYsa/]i쭶a`TDT*PP"vLEA(vhIZO?Js:Aˤ`0=lYWτ~T[A[G#o6l؈^~` 3ş0i䤶䤱DaBޞ޼w^}g}8H ¯$Vt[nÆ!aι(qqU q6\۫z8 fv,M#%v19tiæZV;~'Oҳr' B݆ 2 /kO8-^8ۛq%~7/;%3+3O2߿iwݿ{ẃ|kܴ{6l8#ӝӓU/DOnMySGkiəYs/#,:e A{mذQ"8b0*֗8s%.Z(=3+sFRuu[2[^sC~~> B,zQ_]]m/QbHJJJQ.{>FbW`8 \}W,bAL?Lغy#7^xcyY1.xS'=nǻesssQTTd;֯_`#Θ1 3I$1󊪪*bP^^"233֮]ӳDaGMj=p֑5ALW8q8#Dh9uAәhMD &OWxb]};1>8CcD$>#Xi)̜ @3;meeeR`s y̜~n7D !|fc)e`N""~g$$3wαcj焀ޥ[|`Ff2ff8VO߷\rK~-Xc qc^P fv "iDt*tcd>!{<:fAO@ 0~xdff@b/8+fF&$>q8z \WW7@S f(hhq"i @<Nf~mG/323&G8lh훤4"NsOjFjMf>)zqͽ;='|O|jE^n7i0CgH;Rn9|!ހcJx?M5x</ æ.b3d7qD;y_^;~(0#;ɝ.CЧ]6mgd YƆ-/|xx`~]ܵeӻ c `6oKKKiZݣ$Ar0fx>q8 BMRJf~r"PlΓ={0ގ}a޽>mmmO2ޏ=:~< "YYYuOQQv)',*"z#Vr,~+c{LF)db6F*Cӗ-۹ӹr.o@ڪ{V]%|v-rGQ8_rgo6.ND)xRc +`5Bk׮ t!^RRҨimB&rLi,"Ġ)DP@D3f2~fڱcG4>;N}̙+ȍ861#tm0)W>~+j.ilcƍ93G~?ĜtWplE0M-sB`{P )%jkkQVV֫$|"|҉'֮[v555' )iڸtVxϫ<˟x0pA.#Gak(Xb#1c \bHHH84fưh "tß~oƜ4,p\~c?{3=c;Z1ynuڇUK(iЪoa;mLmm-|>_/GS!]TlpBńDSUUfl[2e1s:x=> 3wJ);AC@DQBnfYvg4Gi}>_3wH)u"zl̝6m===p$$LN"|.+ДZ`s%r"==}'ępݚi:jj^|PJ;O1DBD*.RA[JYWWz=@\7ivR9iϷ2֖1c"JQr$7n\qzt]o n'&0>%86IB{]w_w^p8ݨbTިT 6ˆ2Hqi`LJ i0 JαD{*++QQQGّ՚:VϼN]^𧲲:C1Ӊh#h!*MӖy<6?Z,bs 2]0ACJDLDgy0ْRcXӴ=ϫD-,E:?:u"p1"tEA;hY׻JP,Ą۷ @#A&=כED_0LG`;49Gc+|>1s ,ΠiFaNDjeB/ѵJ~x\of/p7`(--"%0QP'ԾAӴ^EF9(nF& ,=4a*M_oc~"m0"%%[[g{gN?fPn"R$[s"^u߾}qM*v? 0 D8۽ODtzoxKQ)XXq/8{]")aT8`D)Ns.gC7{궶6}#BFpNeE6!D13'K]Ӊh>hvOYYY :[?SJKK{Rd%Ddja OuRpDb+Y x%%%=_8sL$$$8&_8@ X@Sp8^(++닲vت.ܫJk ֧D4Wt)~xNDW]ӴggΜ779@$X4hM((*q3\Xdgw+/]p:,ݠ*t/~{H1D䌗ӈz71#RJ%BJ%9`dÌS*; !s%a JX,!: b#'=VDt: Ea8BV !彾spF [#cR\|^ZP ڜNߢixZe?&+++L*2(i !HٲXx<% 2/ҍ;·pg1Ő(L# }"x}r)~"JdڕdWad%~VMDp%~5T':3%p\Yl\xko ŅSȑ5j t7|/xaP(W A'"r<]̈fkF ["؋DTaUJ6J)ۙyof> jy\Sdzc"A8\h5\_rG)3K+y. O`dFijN0Z=\`G'C6m4!d ~arR4OEEzҦ&LMGtI79 XQbRbT7Rے 47kGMH`ԉBX "Zo޽{p8vQ=)ʹG`]P^^PL' |ZӴ}@M DԠF9Fd教 jii9X\\KJHDYlšRjHD5c륔:`{^^ާ (l.54"ѣۊGFvv6Z[[EQ~NDwR61s3U1k*_2"j ꖖ; ʎgڒTRcguuu[ZZZND+e1Q88jԨv=@*lii (**کzD4ڲWnf滝N0R~hmiiAII ҈vuək:Rڻwo[FFF33̫d4hu(4a9 +c: b ŽކǪ Gʊ}2=_8QF]g=PNHZ~{2VԩS$` -bgG_O^&Lp? > ^7a+(EwiW%M}r)xIaRU=GDId%!.kIII^UJUSSs ̼R> AfF&Gct 23!m`ihh0)z_!'\oqyCboZ?:̧5f D5kur5#Ȥ/3sѸq6Gxnјa |oOUxӋ$;F19ݬ9k֭[ffs6GJҲ qF0sהʤSrLKx J555LD;¤̡ZL(&Nfr(`="ve>"n"Jfdf6Q̜2qHӼ 9OQ`K,{dJꪪ7nI&9gYP?3?#*577C9Pޱ ,NeO9RWn#HY o]/\hՔ&> MenU$XtYCV!X7 {¤ "K sa!?R*/].Wg""-++sa(U"fg2T1] 1ؙnxROPyB;^P?~e+:Ӓ"]vܪ& TELj!2!!B>m2llӟ?`.q7%[i{T?Z= #X_e#?y4]^pGz |oOV/u)q0AVxMh~ ^mxbѠxVdME+ z|6Q+i1,/e!ěBlLOGC!NaRՈX/m۶MFii)y8x4N !-#RMuI)A /G-a2#Oνܲxqْed0LDV\Zx_P3)^]1tia:F9Pb`ԩ-)))-D ` Y0FVdzD(U^^'%0®&9cH a("Z4̋~ûvvV߷zVgPݫ4^"ɍ;}t"'A{w̑c~آz+>pVFt =#EcY˓未g%F#LŔQBXOD(Ϫ9nQӴ0Zޢ$F`/B|vmn74M-q'/i/!VZ L2 KO>\PGhlդ7#Tvu7U '!,-)놣"ð̓_MM {<B0B{`?yIeee&FP~|tV߮1-|ʄ`Ě|XhMsнJmV?x !10ڗFq=<"Kw筃_yi86 թM0c'!q*rP󠅘!`+W<3'E~sf$A-iiiu0j3&+#ܩ8趿h}=DRJ=w^ym>om!u +: Z}8~NJJZϴN$n{Kuu5y (h_D FY%rJKKc/Pasضb`i#F֕IDAT]ѶKn (\q,u&$2nzkJhUi'!"[[[;n @! Ωuust]{7?xsZީyGhg^$8BdB"m8_R0ҸRM`3,Tj tǐcrr2cqT`d+iA O83sV˘HUg7èxH@[۫"2ρ> @^NN_`# ew,K۲H+(*%]'羡Ta?( aW՟_?{UKն3 1;]$S|1KXjvy)3w f $EBW>MᱴR0z"  "҈hJ؅@IIPZZ k֬zT\aF0v0֐D-Y"z S"x0_ IŅz%_wd8  dm-?W:]N7 ʙ3wU?}/dIL+.U_uɀQ^1%$8"rXUWY~"5o_NNnRR] aT1 3KD'#LP/2e `Uϳ\x!_]xUtr  lI*G=;n7n9s摌̼[7h|>22|'9η3WfحiA ElOGw?o}͜6SӴCHPiNv$7x[Si؛vZ̷(dV9yuD-++Bq+>"#n"Coo/|>Nz@i0W< N4[iQTTzJ%N\.WKczϋ꺮+ ?XIII7y!XΚ8ڛ'^itM~QVV6DUߊ*C'MzL8e⚼y!4MK8e⌅s?]xC]C?6 `WkOzVz3fW\.BD)'~ڜz81Wgz,D*`5o^f w###8\f*rP2v@7l˅ST $G*;J4ֆVL<Ny4iaD63gN6455 }ky3CD/((VL A1Nk-v>͚C=sLs\0ƕ vonnFkk+0e Arʈ0{]nuq$¨ax|>_r?3w+s(0~#W֜[1qF> Gz3zwuww(((0g !nww؁:xm0@nBxZ3̧war``n~סPlE(/lN@Ignf7o6/׻F_x<4`pIB3W]1siOX^C|@D/Y&]R(jyn.eSfU<G2Š[0Tz0sZ˹8R ur ~¨D)넎W001\,YbH]׻wL ݚk/|4:MjLKW1adգ^>?%n+[ӤEk82t de2^vWnƎήqSXrKo9?`e{}Dm2k׮E{{{3?_=Т=š)|AJ1H-i4P PzH)3azTc1*3/"yǔ z*:V?pXG(0 J{iG:o1КݻBZfJXY3enc%PDZoz0_UU̼SJcf^#2fkoJ|CJ;}) U0>(>x5Ƕ't]]њ$(kao8T$~pFFO-u}n;Iq6b*`x<}rk?T3cUXߋPzI9J,%}"@J٩oٲ%y{W?5 wnyߍ44Uj7/^6lAqI%$u9Kԓ~t8w}<3:ss˄n2@}M5|/{d0HLߤ}%io 6d0?m&X\]8p<^=}S .¾I&U$%'MLL \3moI~>ݸfgg;'Ҟ6l؈V8+PPd {(ݑ D+ zϽNGsh]RI'v ,oy]3XqzyT6f@t:WW;nÆE2t;Zrv'q8b$u0w{mذ CDʠ =EKF ]5&ll{mذ1|ũ;p#$-|+_ֽb6lDh"Se3u>Q=ǷP"o  w;lÆMК\#Oo3}K6lqFFLrNqhժxh F+'u`i6lcЊi @)`\0jCQ $YZaK6l8|NslB0BLѬW<3*46l"S *by0zNRsO3fV0nWt 6N@Fq(K)1\D tep:fy f̵}6lIDIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_mode_chat.png000066400000000000000000000531141521174352300314440ustar00rootroot00000000000000PNG  IHDR,,y}uzTXtRaw profile type exifxڭgv]9c=x3foRRiUu%S"u͹8a Q].z#8/wOD'|Zz|q' }=IuB)~_v}3r;_R{~΍`X]<)$zcL)"{d_}[-v~~= o1z<݋Я+ ??O_bw{fDq+'^ezo|5~nkչMЍl. #D}Cf;l㉍1nrzjqnl\f{-}xC-Xr}{|늪o^EBiy}_$6ܹ^+>;).,&$2kH%[-d*EB)т&JrzgkcQRM($+BܩYRɮRK+2kZk¨R˭ZmSϽ[}9H@Xu47cN>trɻ'sŕV^eV_cMˮǞ-o՚n R:SO;3/vͷzw1ksW֔^~f[q 8)9 PQ9=9̏HSHBQr,(cd0 ߹̛+_[9?9}ey|^ԅO`ا8_hl׻f.&]?R9d'e1Zwb2~Nmrwtzuzw=syw*KPb{cc3z؆$p{0]U(UYF[w >*;~.j#\2Jlrz"5Y.kj{>x_}Bk pw>g?'J-;E`f+LW vs oJwO< oe "t[:Nȩ`y}[9׏/{RسōW3҂;kd^<%ِiBp Ú3rT7i}7tO΄EN%(w a^ Ee)sZԦڛu;IzJ ,} cnɻ4ӥ &'<Z$JooB%N+W{i=/t F.[<HP<, 0< ]w),w0VhfŰJ/: ⹧+Te-"uhvM*[Gsr0\Ymvj#Sh4ȲX\ٕ+T*rE]I崫G53^ҡ5xҙRYt&[\Qy;.`&b_P6%])?k% ~#z8$ue1^\z# V[Qq"L(0 pOY:-@NqlX-hэpmj۩$ y\@rhJRh| հFHMqԢqBi)V3!*2wfDٙxN`FjzHcB`=T TiYѹ _oI,j'{heZVC@uHVc6죜{LO,ޝpM|@{'cFm`n#kwAw6w< ʱq9} 7a5r>BQN0jruy.Źi:␉QF %o9ي?IRp/BiT"#Rͣ:I[liUh@>jDƀ*!@v\|j~z"U/\JUQ2@_G4#̦Wi,bce?`~K,V% 0;Źh~0)J6G: .PKS-&d8egmLt:{VTK1jkMAې:hA 6f4-a*kbp:Cp)[4KpGEk 1CMѥ"pM!"ɕF r'E(ZJ{8rN7pJcyIwAzҎ܆xnAznm%S_Phå#FpRL*iSMlWDH'y$b-]?H#02\sFsV(EGG=A=3܆xVH$ >ށ7sU픉8܁\HӃL"(HȡJ8˖e*dЂ'`z)߉_DTDTؔL12<'C`<  ^\nBHݗҟ(HR:> 2FEpu]6Zg hKn%ѮcT0TP$QK/]T˭uP畀FGnz켉RCPB.2/Qr hy%!qu'хf(Z}" `En YçIn )8ɀG*]:{DzDG`!@̕h{L,{4uw:UXqIxVq%攲iqV7JVZk.ƣM\^YH҉@~O Z|+d.6BN!;TfLB*R&:9 yDvqCW rUK $h8ū$k`ﲃ{ TL4@44;ڌ&&նe6ĥagx&uI]q}. B\Fy- AѪ1 X!Ap 6G۝siH1Y9HI)5n{f̊]&f-07Ղ"1HD"\6ym:юs;,mJҌv8JO-O$^ìHC*@ c}#u:)o0ބd;QD3(Q^bJ;/Җ2G6hCdITAQ,B%dȏ' J*]VZ 1)4@L~ )f~Mi(0(-;F:V Pw h6p*ϑ7{-/16i"zAq';4NTȟ`s&$@9|Vc@ d2  <5wuhп삁,E^K"@^<[} ?Ww(Md[ ~`o-0 ddȠ%x1,tS57="Id6q"FDҐ {;fĜͨ1BtL`伩QB7aע.Ms)dN|F>z1@ИjUދ1hnŎk# ?&nt͒h/nܚU~ D}Ax)HXQĤY%2ԙt Wcnz<4!( -Q wQqK̡AjidpsמGFjB0AѮK=kh,Ov+Q/iU[EN\EҾ U>MywoD"S 3ʿm~PP^]#+c#,W35kڭ&|œFGch..¢׫#IQ(CV40>Z6jd M( @A:AEdvv5ƌ|ogY/4m_=#2N By>1 WEbNcuYm0H5DJ1;FU`m{^-SEU@=a:TPB錐yN)zX;8?РDim[R*BVv$F2;h$>~R j D/퀮 2T*$23R|k|ꦦZ&C#!5?>dGj?K~__F vdG:F&q?Sӑ04ӣ%?ZeӸi-)p ]&e In/w( ã<xٕipftޯo #h4 .nkdxԆjXtV ejf4`Eq A}A<*wAݘQоlƤHz D%aFy6kR"o s=nh)s:OrTgI Н `M$z6dG=^]+Uê9xQxԍ=:Lt)@DfA&As^0vECm;DPނ\(6(Ѥݢ .h)^LL^H0tG M QU ظn1Ѫh稠KT +e% Xwl)/X1hƎeD N(SR:qC7`C@V[waZӈ ~>7H`.@m=u] M֤Jm;f 4XxTo N瀀΀0L-&66Lha*|De=WL-EbtxT.Σ@čb'Me*BW@ۛ`Qtu M!fB@T=>;=?丁eT] uBmN>SH7 ;+C$)+&MhT   oyO6#.8FZJGlq1 Gl)S_LD :!= ļj0C%; (a SV[-mHh1&4%ymz!"UG{3 6Uaͮ"ϱC|{ӌiŌvy!TP:r5U]' z$sJ  k#_> cS̝:т15]N2#06/(`Ld~PՕ: ީ1RW657YFPߠN}SN(JW42Mϥcbձ9jH$iL^mEdM,"nr#&tf^C fBSznUH(Zګ(מQv<Ώh?鸯a [t>6s2 $2qv8 դIgÁxihӍE I31b(l,OJ ;d~o ɛ80wt**Xџ]d(έ}GCZ =tu@Db]w\,Yirudչ&Z0z}d rt`(*_StOxwڌ/~YWg!HP9dm4ai'Pw=Ԧ+*JCˡS7MI l8 !=g)R7_y!rxd:AvJ> v{5TdtD6 "y3aL)<ȮCX&dsrkiEHRY9~QQ,0p=N::t?s5Z*f޴d9#PF,6_SG/' nhDGbbm|D(ʴv +A` $$!M-5Dm'<cRPL[^ |tT`]ti"sL{Y;Pq]A_,G]Ish=PA&*XD55:;:oWeK:QoI"0U-=QdDӱpja"}6E#6bA #SG/4&:P'PbZ?u^4 Gz4ԣfr˞B=T.B蔆"[F"t2b\;Qe`"7XWs R**k!w84OkĮF Y?ͥt,:jRIpЮ ((gVځ=p~24%deI*ݺ{ *kCYh301'@TIӹNܘԱCr+OQ 1PգB(ոvF:fG!|z^sϸ#ԧT=PsvhnK7-GGs =OQAteVQhR.WYf6Z*bHj|P/uVNyd@a! _!U7<2J !M"ͯY0h[^uKsoAw?p!FY,QsbKGD pHYs  tIME'T IDATx{t[u}ŋAP$+CCCDnL0I'񬤦ʏ6+lnۤ"ֵg:'j2JW[AMꤙ4"D,޳ o-. xqq9                           P4 F˲QJE9 pg.O2I"J2sm544DA(Dbb%"b) "J0sq(b"Xa0^dq fN(zN` )"j U9' :*@s^I"Qw9/,AM'r p(:*%H+3w"3.U0sa΋` B UW}?R%%CaZdǹ-TTKY.3"X##ZD((kD,aYW%T@(%*m` kD%-Q2 = ` BB@0KU(&lhh(` kE"JEuuu` P1zۋ=jfhhh?2U D벢t:>>>^T+%TX %HEKBBŪKZbUÔab ` "VBňP08N8,AJ(Jzޘ["XBUM]葖(OZpc gpp0LPa$ `DVVgUFFF` k0r ;"Xchhd!s5::ڲRODDĥ%*ix^Pq FG%*"y@BBaM`x922*!P 0PPi E9{lcookyQ- ,4gPKp˲:8ӧ#:#N:Z\LK I,x,*CZCÜܳPᘴB P\{^WB\r"bZ>0 6LF X]] ,a~˷ڸ\5E< ` ` OePN`LZA.,%ia.Z먄BY188^K/>ڢֹs–e=Sw̙#.}d"oHEy`fK_-ijO>U5ߧyg3{-[N(SEPa )%5EX2`۶4&G8 eO~Pik)$ö-W` &GD! PQf`z|]²CUn ۬Ҫ557*j֔X8~}v[ײ c)yR<iWz$(&&_? }W4kaBlz&\[Wxy2^4QL8$R(kF5n547-X^ zu>kں̚d+OH. HHMMmSjѱ 'R_yE {tt,-s_0'd?S\[< ]x444$eHUUH8jhQwXBdf /]O.,ZMm !8aۣ0 ߷i y=9px/.7?yg3>wsXAbk9!iK_M?i)JGKQ)IX/^_5 d׋$bέ Ė|Ó'^iG_IEd2U'V=l?Bx temkƶwԾ1|#i|#i|j84¡([?G+QNe;7^~c^(bU91&c .9R!fC0be?4_NxаNc{}xZ~w57H)f:O|h,_hV,X<}1Q>zw3OST_H)u5ad4 enu5GwZѠtb=p$kjO|g>! _!ynE!>7z4>:p0>{7{KrJ}3cԾ ONe4zw$ߏH_I)`$eKмYĪm\k0_*mLW|Ka?o?4hz|器t8NS{MBBnV5YxO>I⋝:uXKs,uw¡P | ㄉLѷ .h閮STʌ`25"'"k5撪1axc8sQLLA Bgp>||_|~* T2TE+X@R'?5#11W=Κxwpwp׶P㇉2(+$"1r sB¾++K$⩦=0ʯ\u+tlf_!,[9˲`6Tzg6`)hJ)x<#W m;wHxY Ϙ,0ٳg]YcYVǺ&UJ2eƼpyN}gٟ煗.`߇[ V,X_y>9WE><_ OvS<3c+Z[__hYV{z[I{wؑ*k>BYM8}y<|5s*o;ocKÿz]* _} %W8=a(ׄA|s_/Q4+`Ks(o qՑ4y iٴ8qT]eА"Dy]ha-yJ/gn}7c} sg1s4YN nVYQc[-銭 ka\z9|)z'RU\ъC|>}JXuTZ<ܑgNU(V88Uδw=55{couTi# @FW),*?A1$_#P6 㜸; 4Rvw?񚈗X@ ]RJVIǓuu]c{؊w?+ċ={f\]iK0ùE,fPJ֫ԡ pV֝D"$BK>XO}px=IQWWw M)-= \Cam{Y^ׯ%iP'Zs+]xbĤV}x<000,˶ qjpW-A%&;kxXZr0 }F(C( 1r,R\whe~#`92Xz*3}Vh EExq.EY]0Ne!VK.mBMx``HYV"OB(366vlǎs΅mn\N(::<< U'}>_xc';v|`hyI.찲ϔ}dޕ:ZM7K(: Pbzc+d_e2⎣c>ԥDQfhǯ4gB[YvȘVbU0-VEY;PX"҄B΢uL)g梉U+}gdžQuX ``Ok-U0P(PTGEYπޖYeRY8E$۽ӒE:ʳZKLqG3v%Ԏ Wx-BT{?EsoS[յT N/'oZА&YꪒJ`d a m Q7A۱V_\2TmKntPWWwpxx8̏_9qQU x z8 *ų*.} BDzKyz5VBRUI+-:}ֵAJ ,.y]EuPhRSswUJhu+P799ژ-xLoY\ ĤoW`XԔ*У ^իu%H0s[gǕR=e-bRûyUW[ǝ/]95c[=&`tt4 ۙ9 `5gN8S"Ures5!tyM xE(bI "J2 Ǔjl㒩] U̘ⲄiæiF9LD-GoI $RI˲aenlZ>s-pyij+t\e'zeCA(R%4>*rk_=& | |tA]k," Hw(:7#;go~[n'"X5dr>i3*2Aӥo@I  Uk FLCuWbyף9τPV.AgϞueӧ#UEFvp__Qi3aXO.ˮ*ԥ "X?/ G"LN,kڱ82"1p2WʄaH3+gו18Όn,`RZbG{:Vpt1ʀi^,RaG) .-T3F9ĦMolx7.%PlE73)(e@aB)ߓPsʆnODQwoW]K6 U*muɔUPI jrV:Q|nV),` /Ĉ.Fɪ 0MrkDs& 3 SnKo" šm}-[vJA˕pu|ǎ[k eieb?"Z+e$cs_O$)'0 H$&%WnڠW}زȯkP."-cZ6@Z7`DI/3=y2~U/XTGqUc= + y(?j kXų $@t3*' jW IZ bdx7Z:u;D/֚볯T0x=ɽ\v8{:fz14`Yx7``-R88)"~1-3D-FdY}:N06]pX|~4WXa[?f6(Y¬]WJSu㋈ZdQ,\Q=D4%pCe~AqжXaVn؀O~I'!+btHē3[".-FR ?YWvGJJ'`Uq;7un Hq jLPfKn=bcS8sg Y܎*9aJ,D`BwdI$yYVXZ{U;Z\ KmRai,r+SUސD<ERTl*۹J)}K\8NqLr b_M9X 噹QA)5++[{ 1H~ɂg+$U:wѺɢ/sg}q7+A s,`e6X aA2VT|wg{3="RfY* Āxe.tjCω3X8*VIY Z]pеm۶Sb?3d~KvYÔfнz7XQEa*1'kٰ0/#P:x'qY#U\]GV]a;倕RGyײυ%[~ 7!l|3LXEM.YrE+盛o;@0ϱqR&BIȉQ*h.2ӭht骠sknq>yw:pAԲ R77:Vӄ<(_}nc,QA֭MpmlqZڀfM,#O.F0 Lg8a\ ^[>X+8{{Z۸)vMb+Yj׭0\.,ܽOmߗel-8=e:cKٽpP - )},YjNssqٟ*殻^zC"[k.BR̃gTwܹ'LÙsȌʿ aWhLE'FWtށ@÷vg8IxgsyQ\q8.֏ёs.75:uL4h{x)`D,NUaiш\pVܬo@WyE0}swe<jsh̏%Zhۊ{L/wfDhr2uybc›o Wmap,u</ LmvN.lz:ibphPo;?ި'G!P81h hcnce50!=93+XSښ||carbcs{>~gZ&it2)`y<2Νo4 %HF'Yݡ+"q@hX3B|xRۤ V,ֶw?"R+chtqV[@T BnwV) 2u[ !'(n9VT> HnKpp!Cߍ-먖1R L5wsHiK%F[bz7+G0-kAx}h`xU -7I호-a1v띇Dlbq(e&P7@8saC`)7F<-=GYrVJ0h161zֆ u /14&&]Z)sYSj-fy8NI>g"=$ 3#Զhmі!I ɽǻyD_|;aЕ=o>ωϿM|n_(_X0xwpS_AyO"'!?ϝz繳sDy*͟/sܥ?ݝG侽?b,oܝ9]sSsS2 %ޗrI_Dswלgnu߾$⛟7Q0,*D-mzUGzӇ߯uNI ׌3 EN?9t5_aG D0i`b$=sd/]Y0E\;1.$-J|:#W"R˙ClBz]wɿBP(+DXɡB&SI5s1s¨^B%\J^C5\K| @Xjjkw.9u۝#z~GyQG}>34,6+,U̪&vi]vmCpI'riE՟~?G}{\5>X|O'I1#b>:"^+f")䉚K rtWGfR9D(t?Dm(HU9lkWXltɼdnqb.9KuUlouᶉnGk18ps,ns3Rd$g/|v`N3^%ĸqM۝f`kpNk#v#u Iͭ9 FzZ p2%ž>;zū Gƴ\1K܂% zZM۳۵vivHֶ#0;w;e2s)JRDy{H tzUZ; tݗhb<{U-Ql.k,"Œɵ-%Vim%O+bXn-GbLYc)œȔAʕ1ްiVױ͘Bңmůrvf](3EaSPyL!;)9w'`Y恹}!ZN.xlk2-vjRt.s0I. [僱z`7oz>md(ٛ"Zoӵɴ\ u\*#uȲuB ll&?94wP'W-F_ڮ%'UK|e-pY>cna{&B^VZ@ɵ[޷1jHLe"^mQ$NLEh18Ͻ,Q>rC2BQ οnTK]l)%yϥps4d Wh`a+K] LxN'7>#221S2ê$b O(F:eSi=vyUF$ݭ/:< ^W#Jp̺@2dJt AH5!Lt,0[n |X]b TϿ5Nb 4uo)G1M~J{dz'-̬%0'E Rٵ ^ 9ABJԞbwn!`P#-[iaH3Lmzêf2;Y6S7,qo@vI7P4v?NC3IPR-"/, ︅%GA*йaTwDstuLo0|cq W;d8+-]ƏEŵV{Q y/ȯV.$`)u=Sݶ,@ HKB%N#dPyx-Y"Nl!ёlhvd(z8AW??.f!c`m}Ač' p0._RCe˒Hxb$L@q6Ӡl146&l$m.Kh >ez"C&thD.!gm)G)B<(9xďỎ5S~l!/C7r+V ۂ\zbjg2B%PdE]} >ܣz;C# 261]&w=a::& SOiwy 9"SH0@k!D6/uG WB"r^HL)C  $*]7NGoe8 Zyb93Y@މlϽBbk:,6AGؑ8bƀ pfg(a> I 4T&8G0 z2.`$MU0vx τIyO4%<ҨaPڑ`C,L4=RE[b1ͪoI]I,+ȉ wL:n_˛$~(RP),vahBTg E<} H>Mh`&&C= +̬g$ThpsH(-ÓB^D1ȷ`Zye}#NT a 聨vGA|x$*)!U 3g`]|.$CPz(YAnKAG| '$'+;>Pȳ:SRG)>E7.KxʱϬUJe,J q'D@fBfx Y'f<ҶX ³= Ow0{##ip rh08ppUv.nIaxR{ců`!l%qHE d :jg$|cV̾kNR= ӑ"P)(D)*; 79+Li Oc^1 6H`i;QBT W(O01/*ug`<\{@?lzHmW55%2/Qk7w3y` Hlar!eG':"{۽9dJrdKA^$i(d aS"1-r98J9R߰Rvɀ;w!y8 AC8 姵S78bv׉>qB`@&m{*h@[Fl1]ŴAMT3 'dZA#- |m]Zځ iΠmBu[C g[Ddau8 <`6& DwI)IeS|l `IĜ6uåz!w}6!Sr1 c :?5B$yq)PF2Pe+F3=!)h53f.5!^Mhb<.c d6ȉL՚fI >֑Tıj )7$ؙ-JXj=Br}uk5Iؙ$`ͨAU1CI~ٶZ8WT !(by-(l*yfQc+IQkM]>bhj ɾOʓىN)t@'BG4LFkBr!n BCAqhQ)&{$rEnDqM /Jk!֤a!`۫>wXޡ0 DF, '1S팋0`:u錫 cl}sYN0BBED)sƇÚHeg]NEcGdy;CDc )Ƣ%!/ 6[4J}ۛWHB _s>ݓPsKE* \*9':F DA:GlZg!an%; % V*xpqc3ؙ߫$ KZ ib@| w<߱Z3p'q[ {y|~@M LQac+(J$D:CI "pH{ۓzfl6ٸ\o7WȮ+ G[1cXW ".n^{%M[mmmf;8\72Q,DmOuHY(*\@yVjI^cqZ?m-XϷxcUN7-|mɉk`Ib%T`uf,^-:GS!ܢB'7oB0⡪ȱC_b"gk5K7>!,|y$\񆰮B,5hynu a?zT1 jT§ .=)KRGRTI@kŵjIxF`yT|dPocTn&N^~11{NM,㵼, ̑cSZrrshk/>Z]SֈW&>ۑH=KroD_A qH` ]=Mj-y YO6=-.sRڍZA]jKvgXo=tK|{Drkhk":Mh`L-h5um A`5X] DTV/ 8LSK7׋ߋ2xd\Tīk*/qj:MQϠp`~18ݚQښMq˒|]'SApP2h>MX:(8]$WLeh]{YSݲ*^]`J?}v@ߴH_C82N]j--!ַnV4iLvS`KQdם߮+@*5H%BlL[+kAodc*0|&J"..Ck< b>Eu[+-)N- wC||V-,7(Wn9Xd2`2X^Wg1&~60 89krI8zA x&k[Q~P0CNKi66ZL)p_r"jwu "m͂L *Lw5PPD8іQxD9;;gV 3 uQXdW-<>ɤ!R1fTeZ$%[Al@ --¯m"9'HCQOg43մ,7tV%юu~ҥ]T6SC 1+BhM`Ѯ1#ݥ4u36J+BF%CeZ2{pHc['j>95/9ianqz=8P6 %BA?qT-˼eVO!Ut׎SH@׷\RƛbH;TL[Kuhw `@0{'/EadrC겴q#Qr?lb@BN`!ۛlq@^qs)2HjD_ b<L-䄕ȧ?\z^BeBNMk'0,QQ;,"v1:;է) ${C2(ƐzDHO&QYS_ 9б2#\h&ma"ZaltYZ.$iYjLaL℣I@EᎹ)⎴9:PbE\ZM-VG(Qhr$X җd\ (Ɛ(aB[Z-FC=䢢4e<&cƁնo #NZɶЧủՒD^qC⋱=J4/7 ,G:>5.P l\2GMbOqb/N"s.:b O1@}ɢdxV6a,ٓ^YL85g3!`+gRg@[H2w*]g3VNJKM~)j#֐7D'=_Oa>Gծ{4Ǻdzpd0Q~BCXTEo3ƷC8@V=\9]O;oGz*D3붋=8R(/m6L1Mn=Әy0ֈ @c>r;IPJ“ 4&EԝZTD¢̼;j}zonI *SnM&ك=fQF%V$jȗ=xOtm!iki^S]zݷmYXlVè eUOʪ|{cp{ՙ#C:Eb"ݫL#)`}j7c6gEHZɺ)#f̡k 83DrBwYPGϟJq_k6*IEjD#1^۱qiV7f`mq=meiǯv[;-6DI O[M 3gUn'~Ս5#n vc{}^1hP9hjSPx⹻z"@a#l|s,hC[cy+ۇ25/JahΫA]7^YRjY廰ƟVʴr}["UL0IDG#cJPFPA-z8Z-ggN?p'auOz+zW5%A ƴ90Fu:ldI(a96o]ߺz_m:ibKGD pHYs  tIME''/IDATxy|\ՕWT% %c#&&`2!i0| &|:df@Ci: C 4 ĒWUx&֪zJBURI.|#}^g'Rѣ9X!`/. NDvE"S($ #"󁫁ˀ9@:4OvGQC株~ p fSG~P(dF=H$,U]$"\X`P nqQpQo_fP{>[e49 n8sP!͛ rcc>h4zjII@$Z`Q4m=NwpT/  X7^A |̶᨟ H$%_K<ȓ{/G$R2yVDD"OS;Y'Q5OeюQW(Ci%hl:7U}93Νi&Cza D+[,kX5'D$-N•>(/tWq%K4sL5---9ݶmNeAx<>%3xo.hUVV%Z3X|>֯YOs`ڶ͙睉˗1sa1@`,"o57|TWו6YT;g8|{`UL01f4_1ι-mUx8ЅKd -{mu7]`1 +"3}Oviw^_sŔj}\q8}dNGh؂Bu-[*C)b['}\)8-oQX1L#Glvq , [cs ZێrɌIL`2xlڹlʢ^by<`w͘sHwld\Ik&ZDG_QQ&Q}___{'ELDLa؊Z{ԦsȪrc7e+`膙glϬ}=K.vb7<T*8(]WсwgKs}^σV=]J&ao>r2ӷ~6K7Id*'~NͧW}v}[$6N"pmX"*s_0;n"\rR_IUn0T3lGi꟬bb Qཱྀg.Yx|A8w=TVyee=1}=rI >6Z3#{?_1QDOVeVOy4U QBp^厎$u9۶|aA0ݔˡmPDD7e܀{n:]SݸWx%o,e,|w1<:K?{ҩi&}Dž~S?wArO~؀֎,y?}>DPӏW\sDC2>aW^d`݂4qHK$9P4z[c'BD/&CYKܙ L~Z)[ĽHs:7;ܧzEO9rĶm5`Q1C[[tc nea6~n29q{յw3W)K)wb9H|xvq,D">PC55uYMKl1!Kv> <Ӌe"-zU9?۶O 8fХ V,YZZ;\w)~mhXim vk@bdJu$nO&gϞcp Q%$P:PfK,0a"+zme!n9|~ ~(W-]s{5]NVF黖eT':@,<(p-Kj$յ* \5Ƈ|bDJ;TVVVn(̕D:|}EV8p_Njj.B\R֨,"eH_3ceYVi!g0$[=gPh: ̙3UyEcplֲUQ5>Ewq tX/&b1Ϯ8nojjeY8("z* |2&kk..2h٤Zbۃܩ1t$[}|(RJ$}Y4|+oϏs ~<,31G! y鍫]-9~R<+l.|Ww$怪 U|2/I&nwc$ͺ/^֥ yޮHQw?Xh>jnDxgP"(S$j谥wtVa g~uW;tܔ|-M~Gմ*|mȌQXN0[=yiߗUP=v">u>ǿi&_cccG \c{w\j<1p)G-3͛7oΜ9Ǥ6.X]N/V~#lY@?q券(i,\<ڰa L=e?0q??3*wD?j+ Yuz/7l!lUP4Ι3I n< VVV˗g~f^x']/?7gԕ[O/]LS##ׯr em@ i̼05u,KwN/L2'&j3v6ض_aObbh?. yu t9kbczU^ *3Mݽ;pБJO~QtRRUWD[sskk/pA .p՛)A9iWjk""U=ƾ'N}^3OxnnUU[,+T}ʂ ܲԅ~ή\d|P~+wUy8j-»B"4+}rtn2F8X^N{N;\NM)ѧ@DيkW` 3DR^({キysyGmƃZ%F(Y!аh Y3@T"f #dKFPjՏ6&Ť{ }uVq|$$O`А9 *uajl-[.Ӳ"LLmx닦WW_| (1`I]K8 ^a:p*0ϲظqcEŜX,6nD Tj0>;X]% hȽ70U]}>?6+|~g3kHDkbKPúWщښ7NR`A]~e\|Ge3Ʋ /l},I0wMnRTDu݃Ot Z澬R2]K 5DzlD̟_gEƘ =k-m/\Ϛ5sjnJU|<)9Wa s ]!ӀZnZ|u)|cvPWw럄P|̉ʤ o5*t\X|]bDKD+r(hJ FtP1lp}3_wi~0Z"|VLVs0׏Q0JX5^]"_mSٝZ>ᬆBY7F}Wf:N(= qq5i@:q[3uzjԩܘiwWϽ}BϚ5JD@)rSY9hQ2ymE;5Ιe]5PX|@!]V}rkrzc|9{ײ8n[j4| y$۰N=yGi)jm݃ldwR/UDEy78z#c•R+bVi(\48}7ĎkvzG- +KXׇO]~@ὕK$:Үexo:pZ=Ѩn#9 W^ ͽ['\tl**~}F>),Xw̩Q2!ae*׺țy3Dn Ci܈ \B.x%+KsIipz]O\/ut3s l@=0uwZR}&x ROCviLEf1* I3t)omk5]oH)t+ uQw]VZơ4$.YR"KuŬloO~q ]~Sb2j<$7W\krd]N ZUS ՂDTGA#8鈴3uB6E& [3;XKoG$ԍ^2JڦXFZcR^4#-芠@r4O{A/kB%["* Am"Z* ˷H„7:g%MIѲH"t Hv@`176qċefM 5a}8L >IEךDGeI"8H݃ ,#dQX`y *]IN\`NE]-3_*3et?m` NY?0R@l锴Ci Eyrj28nt=hD0g_)"L~*pvlhr'Lb5Tfe tn9a'FݻY:4jO\ޜDv.þ̙T 뛊))XZ sW5Jֺ)ćjih(Vq!?PYnax:(6'3k|XOMHaA ~{]Nr6Cu)Dn-4>ayoh8D^ Fs ̋j=ɃRhȉVt މYQ8HmiL)ZXxz%GB}Y ~mR$B 0#kI ! C# SA,%mA FJ@"5 `I|RP{IQL SUyj~ M#e(fJ?qPmCLpc&h!+´|=g :hIh )6*oaLm!?t,+LA].lmG?"K&fwY3NBI>2/h n O0@&8~辒%g Ȑؖ8V\ZaJe"!`o$PKtnN[|a"Rk"fBB Is1xY*E0 !&GdEqҩ8 KIX >玌d&lUOpU@&>Nb]7j$y\}'K q'89~H8vB jr_t^ $}`AunDH;x*Oe.*$S_B]kJw|.7ns}3FQDjWCԼz+}Vji.6 p 6+ѐ١FTۂ|k\@~$%qCMX\]8t]$D@f* @v $f ђn e;H%"5e8VL0QfBM2 YTFC݈ o$B Q> ʘD, gK%kȑ57YWHUZშ/u..4 Q5AR&xl(| |)DuT:-AH-[OR \#> \HAOIFkG1A]r@mda$O S?$D?D]!1"M,ZK&1=Qm<@Uw0 6Adk2Rq 9 eU^in=PG@nq:+DLms6 "X(59&VC4)0 zou:MDV82[jN UTU4^'ʄ3OOD,$#s6:Er<èN+JC+ar#n;j. x /O8E2hBび]/UJ& O?ހBIv&4>m 8 {^4<# d/*/St"$j ԼPETy_SOKqL}OPdY_H*nAX8.vGQ!uV7Ɗ2X^x,@…7VQhT:DnkRNl~D;Hx7BYT,%Hq+Yvr2 jEFl(걱/  G N"ćJh+<` $!#4$u%ge^<ď(ָg](qBL?~Py*9v !l-(DazV(V{SoDA]cP1 StPRhP6ӡJJ5tXŏRX|1@>kNՉ;PL_[a %lNQf*9%A2ݐۅŢ/VAi]̵#=UӇ>#ӧs"B; F4DʚJPl xM1^Оl婩f#ȳ Iηt5ˇP#L};$x_Oʛ&,U`'Ki-6k1J@sXT!uJ>p; 6TemsB n˻G˴ A9b{Pʽ,41&ΡMߵFD)HE=FeP4@!pFu,zx7GUsΝ\h#at2P옎S*jS*BV$_Y&QE¥xC}C]&jXlSTjao!8@-;*%d9#bڡǓo^ei6 >`=F"|Rۗk|Y,m^sX6`>Q :}!q}"G!`BWNy4Y\@W7-wQJ;/-S4:è:&`VM=J`TYX3+&Y3938y0 8M]J>BAPR3e 8][BӍb3,:K+RCh:JJ%ŃQܗC㕮Aot{aar{3f7NO4/4Z0|Ttj$0T<-E(bmMp!fTKznEat{I&qH5I.Z/Lq-TS~WïqsX. Fqkhu734˴ u!Q謂@<>k ߦd24Eo]S#aoҊC%e?Hr2b'힑l_kJ!OHX9_7CʶLhqFUvï![&AG 5T频iHz?PCMfs58[(XP4m9r4ܥ=HTG7uitqeĐwEh4J\AtrJon7 -1H`%Rpn%@ 0O 5G9< I<1dikL: "$E([{d']AKT4(}"7 %9(N'hE:q|aZ3FqË^>}qtߪ q3'k0?P 63#4.aʣ{E 62Q-lCB; @&!ư|*6z]:F G#Pu/΃7g9JT 뮒B|{бC0EAc_D@(iJ ֐]>P7*yU :iґ=樈XV&Ԏ*yH n+iΠiӞ |;Q|)&5d$HBkҁR #šI XY6~H.JMf^mޣGED30[0MuVxAp[&1G6x0&u_n9FCԸx ϻ; ZUOqI}\`T2FhHnY(!BԀT4Ā-44aB]kz;}*Qƙ'?uxRhHkgRidc6" qf;o' K$J5T@JqFܑ^(^K֎\ԃ:#t!k;Q >H޴限v10: QO y!$4ipu(2ITɰ)WUT,ZinGw"EGۛ! cWvYҞ,#i(ɽ*=-|;mF_QHZcDHMj|{ 2ns6dMWxʋJLVno@61B</_ñ{ڞ3]<NADm劻?1%mD3wѳ x^'DYک>Dk>9h(ݭA=52VcӴL`;0P{kH+z=@[z&'.96j@i=80,z:,ZAva vwK)8IH%zsuDp":gdL0=W;p4A`86i q}}ZĤ'NzQtgRR&U0񯡲bz跊P=e9Grre‚x 3hM!jh,M}I5=J_iI/YRyD5CmLUGq_B0W4Uҳ_M5iȖI#,Aod]o7U=eyX 8@Hp Pe=X %~13jޣN#crͽg mX\CȠ[KDŽ'*G ?>sh]]c4~p-⸨3焧~(2\D^,[Os=q'ZQSl=|/1 _ bKGD pHYs  tIME*7nIDATxy\e?罷֮JB6",1H! . *sTh (DI D%@vkg%TWw}鮻} uVq]w0  3 L޳1%"c;9[wcVi[˽t@8@D?P&"U\. a#pƀ !zycc3q8S>|p^@"r*/UC[NqY66S"rL'70kƍ`\a^ZH$^hڴFa8Djh=m}Qaeh MB0:(Ms~;ʵ\[UPGcà8 Gifj|?ACrs r7B_M2לWDpKڦA04a8$QX-^."Argh KƉ8Z#4}r%:&Rgx00Fq vYaA#NƢc9tq<5}O?clX(6 &֫='*"A0<84|?DE\RPGK'w$<-{c:rTt]VJ%ukL__X~ TzL&boNT k@wY8rORVU L{ m>[ V2.9,y//( Pճ\]Tc l c N;3Qpju;FN2Ag}z^oHNU# qT` |6}p&)X0{0<4q*KMk}IR¹Ҷph3.`DʗF>[u'q#2vZsoe5m//)6]0eʜ/,]:/_\jK!2۶m^NN=P(H$3D"FI;anUjo8}L 2tTޏF7,x7q,{aw<a\9վ0O6"FaWgDT~بwGaA, Mӹj>rǸ!.dҗ7cv/n°!W|lƑVLh?D2:*t\qO*;^z9%8N߲th2u:a ^TPUKmh 33"N1/Hp/qȣo* A-r7qyܑk-ͪ)@_C߀Xv?QZz M}]#9i2j]_]@Y( b[g4l߃MYXO?"rŁU%>ʚqiSu]ya,=tn.1Ѱg @l75 8`]ب@TPǠS8)(vD`xku|pJ76nfs߳/1Dt\cS} OB۝^.Si7|^,],ӧJ; +Tt />ҁSv귟}HC|msu)A7cҥ)s!lS)BG>i.^iDʟgaۚ:ΗnL2:DeihᰣK]q.[{n0tPVmh`K.#N:긔3t} 6fX6v1\jt^|l}}}c<܋Xο˟U%_3oc>EG;vcqRyrtey}K<=W2_TS[~ d{jtFlh.q͢eZ<$f 9*7VYغ 11x# '"7F"x.u:6Du+"_ TB´MDd26ө6ըۯګBcl7pk>ݲD7l>&-iJC:RUm3[ZJ,\.w)a "R:s`utVl&},)L0GD cQfi ?GYItYTE}"wĈL)Ay\,Zי6sW%Kn&/4*8) -&F 6uu QbSRO1ͶSu9}^{ya h*KHHM8<(hĥhVIW^0qDTurE+\_f0]t#}:P ͢bg} U:Ft1# hq8l c`?`uFҁ-7 X,e-C e: 4Y8hd}߶t!0<{?WD[} 6cC6>|l6&~x[DVV0̜h0kEX&Ψ.ghgSQI3YMrlOtcȴ7lH Z' v݄\V1>JZ^sT;~5MGogUǎ&KV{"2ϊȉȵT=V3Aj# ebƘQ&DB7 ."c F FDq#ژc8(ިG62:nq|Zua]qXb M5u֨jw 6!ƉFnqq$oOM9>d:'E仵V[+Ri#`A kڞ҈HqyVug^&vSZߔF#}q=NoGiL~k*>^6QjSlQܖmƶEՠxN] װ߄CNhW@hD :-m7I mAK☘8bVrlA e`S`0o:%vj֥ǵHX`\S}y'{J` 3n?h©HVE S"l뽩UN,'ziԨQ{@.8Ex.),^{as6Kd9 c8#p{;|OEjrܙ=eҙgv"l#!|Wf8 l6'AUf-22,s2lb/>%sIoY-NA.3¬]wN=Gu V':\Eꁂ_'Z[נYʊtӰW&J`¶0'W>Gcc"{]/OߨӦ݄rq̿gvp]Wɬ;>oEJ) fڸ\Ikh %R/H*SL[e=||LoQ 88H$*5DU_At(ry(_nYI!ˑ^U3o^"[#r{uv;P,ctqM 'kqX"bk}b8/p_⾔} oƈDŏV _M;Wsۏj]bm@صjJBm.uW1OW 6 \n՝嬐 lZ=Z}`GWRzV_v61_FIҮ^D5ܑL&s5M-gKGל`0$Vz}m}DE=t_*yW"T*ի~ %f+_o_?$:{Qbg5}.Q瘽 h!xč>]=JGDfk}I>{ۋu#BU.:{ѵȚRcņ-5RƠD低w[|Px/kv,+J] U 2L1՜SL?{m?C5-|o$`uPtܻIf9VugaHn׺I4oRP(˹f86Dn F3{)kpӪp(~y*ʣ_暟9_fA:^\___~=ק_?Ufa=fP/1maRs3׽ .u0F Atdm@Og}rn]S&tk6{`u~fSu߉ZY6И@Wq[[_@8gjm= =m| > gZf׸X?Z|ߣ\.yrV@|_[ZdKM\΄w\zGMI1EN+!|cŦYBCYg_C"$^E~=_b, m$5]eZ,'LehY=f.e'9?9߹ԝb CcPLOL"MMhjjĆ`D~w_ꎗw][S3xS3$O!j!Wx^PnVKc,;hnQXV3}@Bn/MM#Ů{o&9e]l%aVҫ[-o˽Zj/+66З&ϝ־#`(֭{m)gTUvk>}Pl*O4y&\xkƳ.gO3aM+{gߏČ$Q(1FTc)Єlԭ,[-h[Sϵ?4ZUѴ7c\Lf"d*z rueh+o1HO&T'oX].WA}3#&U͉ФAsҩw̸}NT|UW^[%Kh͜aҤY3e؊Gm$h qxh[cq}#T*][@h%Thc1ՠ#pWl>7Br8ֆrn8_6)bRNG>i *;M"f5(vIU:U4J3(ڀ E5C^}$*\Hḃ~UJx;`#0XyKˣg]p;- ҤYc%/%ޣڧY>y. :∋ŭ,1Tb`:E]UF] CZXT~W TݽGʱcώ;ӷ9N& @( ZE$T}%\ !U &@'K߯kIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_mode_new_tab_share.png000066400000000000000000000316231521174352300333270ustar00rootroot00000000000000PNG  IHDRd7#&zTXtRaw profile type exifxڭWv$e1ԅZ5~ī&3Ipq\J/{qGy~ }ݕ}#Rw0{7Lzru{?]~nߦ?w߹m'ƤCϘ2;|9v +_C|^PG~G{w|f7r!R}'忷xq$h+nLqM6'˅"Ѿ!F+,㉕1.rZnR#7%^?s{ '1p'FtCP0I}$82\EB^|߷__Jl"ܘsiWmuruo@x1Ȁ/!Y(kıU &BrZԳL h2B",TIMOdlO͍,;3+VYQRJ)FM5WjjkcO@ҫ>zc8fuXVYuqMﲫm=N8N9ϸM7_ng־Yk2g-|w]5^-Ĕ32s Ur[9*sʙHւ)9;(cd0톟4o(o_e)u?2町o?dm(%H]t6.8m6IoMyt2֍iz#|˗֚Ν7)~+, c{w@&Q$k_ !~&NwI3-le[R|k@uz:JH5?F9.0u`M1.]so/ڬ|[K>@Q2m#gC5;I} yg.ukI]9cS'џ\R[NxQm"ݽRG4|e-~= (3]1 ;"(Ve 6U|@4a4Xj{2 7=I`iWRA#8lHi3jljEE͏&il0J iFܡ'#L:=E)x48Kjaw] mֆ;3YZ\GrDjj 6hxQ1#50p >)xTY@:C=*w_BTiWvf ~B1.֠n5vdQ7Jz{Jo;2[US(z Bz5SxWvt3TJ[X2 9Q4:fi?ɮ~ey٦g"+}& Sجn )| WZfݾ31T[=A-YN]BrȊ<]w< = p llnΏ=VDz(Wsn>+ *z;y =6+zaJilhܞpW;oBEp=o}SV{NG T̘-X{0r"sTa$5~(I ^$د+7« B"FmJX0Xh~/i8h+W IcĠ%=0{gPqApUFg{w57ХxhF2pbX OK<4}l(~sy JpzWa0N/Fi2YB9sK&1=P@_*2z6/T>$@y^Z28WTݥ]fZ{D4m~ tn;,V.G52/s? Nۓ=f:͕ GbEDc˥K`=ЭUfiݨ"7ՂaZ*Ch6V oԝ3 @c)a \7v?} m 4)g?[Zy@ѪV1&˧mz Dwz L0 VLJ Yǿ1"@ woH( 2BlywlM~Le]Tv 3ԟ ~P?:+?~\˜_#$W7h] ,-DPQܨh( (ꔡB/>5S*t 1[.4p*@5_zkJ:W,0 i(;@ϪAquIvFh̲߯4(:}WY;uށ BÏb\+ HYHǬe`VA$L4;`GW~s2X\.#ՁBudًeG JLE!F^ a6oֱ2EJJ)@SMrrZ/g^!)`cHLpφG#'0~T|~(W-YKG@|8ZWcz;5@gPWWr5oj[@ϋ-B ZnX] /#`1Yb-Q䓀RFI D`/3ڎF&,Ո[!GtMrG8n$ɽCۧ }4Z}S K]G]OmayWKTeY?bݿ ;cxc̜~StHwt^#6 " Ai%DE8x/r{ hj~ڀV+?Q\bv(rhQ5h`FƧxZ$ޫvH,DΩ]zq՚4 7HC$ OG{9|0 ;Z%RZI) إiC#D %D =Ÿ%Z @nhzaR)D}ōj!\fWt; d8NDbGvyI,Џ4Ĵ|dk_u&G#"|Ou_o#Wfh;YݿAW@f$XY'FA +r}jUDv ;ijukUQNA'&7ekyZeu$aQL5y:څH&(ʜѽ8 `) (uDEJvQC8H-<.hHݞuۤ%гWܚQ[aQٱ^A@5+Vq`su0&F a#%;xRdFj3;MJ >mJ0 y/=2ҿ^44~Uxa}HrF?ǯ^L?jis[2&fn˷tۮ@]TzPT8i M9پ$)h+uXjc?娳Cn^Mkăˎ;S:g"taswKkۈfwAG)}FbfFb.)%)#Aa3;i ݨ" ImO Yɏ;>Fric _GXLǰJm&^(HW!Ƶ`KaZM?g2L_11:靂!yv(R}hlVv8U flS]D(5O #D;:T~)r/F<$HqRk]3=Ѭ>^s lϮo("mX 74<,WgS-#گhLtKE^P!U*z1a/U(DɔK^`֛j`Pk9Zb+b@g!rG粜- TTg7=Dd>sס@U؟d"x%VT}k*mME-'.]NJna'Nb՞Aޙ(땺\rFGAUFikNc:9D fJgHH,jL ITNp`ШH#&i0."&pHg9pVuޭ^+Riu@ y%bٚUt$O`y^kh6:}TtoW'Q:"m f7Ujbà % FܕI:Sj t$\+אLs6&:ߖ[1K;/ .iԘe *L0Ygr$ѐO93#(o+3R%'l0\c@Tzrl-?Yǜ6-r:JO#uGZʤi(B  oxiu[?NglpƷ[e+nf^w8Xo4l"j*t1hb`re0_'>Nc Pb4apw0FLwM]`?~x @Y-l AiITN 3P`%q::UZ? qAZ,Z CTp jQԉ֌}fԥxi4{^P 滣?-a ܍n@iYG#bJQ0G4: DAU K#kGr؋@ W&7k(M8J:cЭj71z-Ǡ#]xDwGD~"h뢵6ښi[7N H؇- z pFď )>RaZ!VayQդvЖqw + RMDL{dNzy_z֧Ev2 KcNy.!/h3 JI'{zyydIhfB"t̃&(^|@@6i tFJH5ڳ*ιΙ&=)Z}i/_EERX,l^uœдFB2+'Oj`ݏsOTSYbKGD pHYs  tIME+!ZIDATxyt\՝?^-l/ml*1biI8$i8N&3$! ݙ03sғ8li:`-`$co-T{7Tٖm* ~U. %**1\ZU"2GUczT:`"xb"H(}r~Y;zzz:>`0X=P:AXlc]]8 HAU5i>ym^YYxx{mni Cmmm3T5""oD.kX,]oUK?D";6\% ߙLt:]G(MYkߨGڎy?)#? +"!෣mwi|? %p^URD>:bB`)8%ΑgS4ŭD"|h %b]lF#FYY4qpQǓNd2%pORh41v? SY|2,qO)0h ppmAK)-BZPXܼ+;1T=_U(`ʼnD*qQZ544l.{! ulQ*K-Bb:1zŐsE%p ZРqSʭJPUO8\3nӗ(p^ z@Veۆ ;ǩ"*:Z۞6opsȨY{|oyWtƠ:VAz|& }'71vgssK磽& 'kZw{]`[[{p"K +ΣۊՅ6V 7:`j;lƩLLPռٖ/pS,hXxvųxwǒNI$jM]׀iҺ)=E䃼5h;f͞3ΫڶU;{hH&9#F~MT:H:0F ~+졻5ĿZ?}Hi=[[˫gU-@?\ս4UӋnEu??Ԕk;@ .>29Ke(Hw*be}hXӰM qf#X, -Ƙ1ƭrZ{>o&q5DyX3dR#yytjL!Y}"KU˂s&Q*ۻz|KozkjYSpYkUU;z9v&X  [[[Ue]֗bDd:_s*o[-5(Ee =/%qK;a&9 oѩ%K|RU H pQ$UelŊ@*p#U`"u9;iY "v…ۍo|;Sf5Ჺ E' Gty?HHΡ "EہK WbcϞw.G>ᔇ#"`~/폮3Ƙa~_|1oդ{|C7AGd# <;'E(}'L\[+ɜ.57U]<#8]e[WOų;㳥4=_ 8-t8N0 p 1v8G9(IL NIdygEuAU By+颉ArIο36#o5rTɗ ;drLH,>P82zEܷ s*dL&8XkO3e}ϫqTUUV -"brq(cڃgl_M@ Z%K!xbNC')?yp 8X\g:d|پP62̘T#HdXМ-lx4ɻB: &XkHa 7K~y+eeeE+Db%F?F@έՑﮥRpcW?dNB,֙J---..6v {Ѯw8@w b(UuI:T2"#;xBP9U:ஃtwvWZqk1L#{3Ç8JQă#,оC<۲0{yo^5*u݉PDވD"yaO =29 .V:XJZe__Ʀ`#y [ӑa܌1f$sWf6wm+mD /vOxgmk̪EfML W|:38Z-X1#Fhyȡ74bctT*5q.ui>SR6Z6M[ٿc?HT^v|7j EbU]D3O1\q_4ni6৅s,vF>%7*m߹uĎ]؟?|G&Tc<-N9zGe34S|p8̉Fe$IME =OW,w+oUSV_|C-S+Zq}}}v,SPpXUWD=$SK{w1`x8aFZ{|s{>uxkS4u3"'=i'=mQ}<CU?" dGOd&W N,v#w^=n ̞=[TuKCC%p fw2Woƭurm _}P@z2ޠ$V +o 1U%p Idʀ;$Steoy}x$g.`xĖZk$pȹ߽3` ;}<Õ HTU{E*5,nCG6}ڴs-+ Rvd᪑mO)YW-/p83ïb%9hDʒš"q^sG@'Ϻo0n0,)Jqzq}}8H\U~G7ưJZ㌻ qR/S@8}:fwՅP]]͌3pn\H!0&jy$[G(JӶev4 ݑй!\&D`3'Z{X%p=I^x^KSf_=d"޵{ie _ȗK4)DR8F;VYV=ϯ`ڕYґTOfѕGsSx=x/Mt?x6X*R5c[[[]8éhܶέCx>?;'M8jBEęmV}lϙ~bA'W]>0o\%XLUD4g x6w5Yz L>w2T5?[jv{|ts YcEYnᕬ|xgUHfi)/+innc"b"&2*8ítM q dRBxv g! se.{`SM)b1hPd4@zrJ( CAx{֝`tu1,} $DGUEуTT?66ֆܿ/~L:BDf!<D2YsfЏb[h_Ύciae 9FG+s`RչƘvx]]ݻ"2WUUD\%8%8rTQUA,iuMD2!"y wޢhUr5M#8F1yKXp Diɇ>)(Q^9G2I=|?-fLJ&Su&T> )M(,wMڶzE_F" MCmm;K8:qcd/ҭFI}k``2cxȂ[g@#;d1tv t5E%pܱ\GmΆ^^1y"ex|G \4JK8p7OLQ$1r@ Yk syb!p!}S"Hi TDTV=y!Wik[xoI' v\6+DD0haO0 s2q,'J8I8!=;J+Aoz<1ô4uۯQk>:׏=96Othg Z(M霪q:gH ߲,;< a, ՜Ul\*] 5w'}zU=n2.FS9]?uPrsK{=7$;/' 'ѬpXcwněn 5p>R7J'!<:"ܧ pO*E6^qC۵mN;rWVWI 0X[[O?*ī蟵5@͈yD:'ƙ Uo' ppwVY8K8V  Wu2kXS'{XnP:OD ("vwkd/!kP3Xc!- ] ;VwbkF}fE˱l9"ګ!s <Ο\)P8g>8V CV>Z7o0m^}kA8y2`p3oLJ{Δ]_ 0XK3X} 1T8 hr*I"ƛr}(;>6m߿ǙT|@"z ; Ex{sEfܷ~~}B%F!g?Gvow{ku#"U{Q='Ot~K\}rȽoHan8 )xb5EtY='I?jݶFnY3ǯ ;10X~ܧk{U!(>ULCo"!c>?+)F!fk˞<e{=!ޙ#ˡ_c!F~3WO2r;Kn iQsc@ tnd54r%rϣXI%RjFj5\K^GZnZon@XW[} n:zp1f6̳:s,gWYuqۦw'J餓O9ϸڵnn+kKΚ2qoCIVXLWeʙo!)g8M#Y YA#鄘o5o.9#sN{g}ؓ ublpڈm:0woIo%=ӵj C5pRqˡ\ kß"vdJ綖+oU*m&_6rsu0ap;|2)>C*1my@w^CR0{͓SX. 3CǨ`Ѩ6YYXD|: BĀ j+,y+]7#p!8[pȞFҳ:t<һB__y/ ":c3P{tVGI{p33lI@:ͅ詂 ޷n)sK7#h YsRXؑVkѼMR+1Yt9H#X(w4*/SqB$a$&i~S3~:zsu g}r "CُslG=_Ì \`'@7L'VV6~XfzJ>mwC "%%`>,L*FR/} v'{.1 ' hyCbm(݈@,'~QkUvICG9T)mf}=X(@hѱЮdG7Rq+݊ ; c,n2, BމRGM<$I덁#?YV+Y|M iGJ 1"t4H wͅJ0}PYw^/$CBr30,' kƅ-$t$6ȕ$BtShKC?F\+׋m$*gXx HfefG>WF2( m!9nRzvt}$O}|-NGlq h•Ba| fR¦Uayh ћMm =R,P|4-Js>Bzܱ 0fړ D3lZϕv{)~褠]qGs&h嶫C,Ւ/hW9ڮPѥrhd0ORK~$n`Gj!i$/G )WLVӅ̏rdv+A֫'{1n>mh1B2 J\ޘZ#~oڈI{\ɂ0Ϧ,|4R.6i"i cEEFQYnAWt.%/9g]0}+ \ _{99" rTgٽP[ũv%jq뉍<":ӳͣx>WxxJ{@ŞHFQm?=CmWFRX'* uo+U@UԟK;?U!_ӓgNYJp"Y(or(3Z HmUaݫw!F]&lګN݌ڭzM3EI#Y _ZeBETKTyGQ@pq{HȂT0q@.NYi꾹V-Sn2:nm`Ĝd 0H ymՍח")mEq'bC\r}8")1ĴI[CD:BԣZ=*]9>n.B3zԃ*ϲѕЂ鹙dg-z.- !W,ݢc؝ q rJ2ȴ%5=3#GFp'JϡXwFcm^Z`N>'HؔE:t 8b8$ΡFpo{M\`v\v=/_-8*J.YNqxAAcڬ:2~4= R"B O;vʰ1`hL'ߎ+U\W?!ݷ1_Wǃ T 2H0O1$u*}g *YAu<㷣 AքCU7r!}֣oLE?F^qq>,Lg{d0Ks ы4ɲ<;l=L4,=:'NT#k ' bȅ ])Xr{!H#PZW/mEqXρl2cKeЊɒxJQƃMC3-cfP/khCȦĞi !(W 8!O61Lv l> Nz=~}G\g%RxDԳ&Kbգ^@b }G_ ypMiFkFkim5k:~9$%ABR=ڗǤ((۸nʳAyQ@uѷTD%'VԕPvbKGD pHYs  tIME+aǖIDATxy|Uյǿ;drIdEdU XtlSkC+Oϧu8""5ETPQ 2; {gkڂ4ـ86'KgUDsss+A\1f~ K~e# |UUB1H9꼆a(D)۶? BqH4ODf&PQn/`0xKo: <'"w-?m:U]6$29"rn'va VmmD:Id "2/Ͻ@D )jTJ}}%1ݻw=R،Lqt7qtb02MmD.MH_e6Kc HD3O4.A F|؃Y`B9$v~rzsϛV{ȝ1@E=itɲ,5MsC:1IvLi$Q,P>K2-w3fbAn>/{J2.l%Y#%@`qAb0|%۶Q4=UpArLYܱ9cGuL5Ӣ%vء i60t?ng#M7Ih7Xe'VwEFV^8K Q0,˞i6=Z N~bFKC@fDQyg¸5& ]OG})5].4Gi!j <ɽN/' *srr%ҡxdX5F8;AD>d,v[ 봄&Md'ۜ %D,EAPE?t<ІTDFRSMD"#r6Rta== K~A%4W{%0#wivQ٘^WTTD1N(pv,["<ێ@Dz"dI}B ==юVP^T{jNZ0n [2%n鵩v#^s`O$p[m0 zXsO.*esC0[5OUvfLʤ[iٲQ%yd2N)-#$:W "}j࿀8Վ&R BgZ&6d /^grQIlXaK~lQ25ץJdDv_JzЏb^9K}^Iv,Uyd*b N=cߏmjmWv+"U|jcÀ; Py=k=o3ODR[UVAUQ'S[!ŅMں+ʉ5OVgH 2mv+" >✱ |>e>R2=&_&7>hF62ekkbij"fq2= Oד `5aY7 l]քI̳c9Cz Wj40oem؀8dx^>ВVZ![<6UVot اdh#i*X3 >X۶!-I$al%橧9{vWn^qφKƌ)9UQLmBM x7ډSsnI$ 㸱~,^Lsr8[_}2iR˫h|!\5q9ERQSƝUU[vȏlw8/06u[" 8b}[X X%}Wٶ'{iw?2G4[Eyl[Y~Chp|Zוּ'KnM$a+WQ]bض,T> |OV54ՎLmZ~VwL\fvV'\z1e M8)>]skɘsz[)۲pV%qg}F zNo 5T%eˠ^Ch<•4ETF <$SKO'[2yn!~ZʛOMn932["rRTO@P$jTնmߨ]wE%=0sssx/ZrDNNqL) @NcTeM#ŁDmDb9p1rWŦ!N*%utx6 Cg޴gϞ $j1:!m$NDzGU'E XH϶ѣAf~JNDZӤ`܄N;m<N;9.:"T7H_`F_Ô\STTqth, V9J!0==.FaxHF~m80ݟ2eN螲}4Ơi6SR0yj:p9mFT=ĸvb t+\ eY՘eY9X,n |d9pb%RȦm%TOmqJiömz4 \"F$mH!ָLu00n),hDjᜑFiQ*oՉv=%ҁmhhH/" G߉#"DjyLu# U֤]6ݻ3Ϡх\"U-ihhH2c=xDJt m[7DW y#[8O֧u{JUeK"?M$+T8XiEEŷ D 8Fu3۫klkZn S{hqVa#Jp糳/ˤIzqNf0 { qW<~+]{v"ّ5>߸`ТXyハYRTS>ޘ?{gĀzWcۿ9`qaRۅ'ˏm$5S$Y=P,@1pܘ1fL'6P VVVlC~ bϡzNœQ[kfW{Do;@m۶[Iw3%=v^ PVV(++6&LI_rH&MTܾ00@FKexBp҄;"0._aS1cߢjs*σ]:wgd0nV1;sgB1l eYlŃKp޶m'rz =jЀW!h\q_{tJ9(7'{xA'3[?/qߦ)7;䊳@U4V_e-6,0̃FS6'',[s@^/ 8(^=z |8՟@')]y]VrSµk_?k#u# Vl-oȜa) #fD:>4~?@G#=E6G^%R Dے;;E\:@y76 2G#vLWD}@-H^2Vz|YueCUYXURR*+7!fUIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_mode_receive.png000066400000000000000000000560761521174352300321610ustar00rootroot00000000000000PNG  IHDR,,y}uzTXtRaw profile type exifxڽi)^xNCRP5V(&w3xUSJ.J/+M_]u/"ƫ}k\ϿP뮮'}ŏyu#]HߦwJ0vE/F3ZCތP~!y^(zon׷ݻ۽3 *kR?An>(T˼Ә"lN~ =D}C ;py+,≕9еf5^2~պmg,f\?s{ ''cfoUX1dʜS$$ܯՍX#13_e/O=uBij3 F|C XC Fd wpܘӢwjx9~.-$"[Jj R~jjȖ9\s=b%\JE5Ts-V{ZjV[ka^]o1xփo>1ƌfyYg}E*;n۴.vC)t)vZvͷzwWV㬅)c}kq 8) PQ9-9HSHBVrvP`:!~Wa\NR˜SsJW?Q%H]z8m6IOopl 2 =/:Z&rlP*m3Z';B#)OPt:7]vo'ξK\Lr@HʇoռWP RX/^?oby1wAju~wthc}osǛgl^{-`9eo&ךyi;[{ˈ;ȅ~fJ^9/]<#0EA7[?k ~|>&AvͳjV.P1̐f_F-lyn#CPJR0e0N:F@^V\6ϤNi+|a%zLP.;BĿNC h:#WPMcǍ;ޫfZ 1q6(bW@8@4 Kxmr]6T7H$6'H2]qjb--RB};flx}yoqtEӐ2)e3s\J R|xt\> XW^qm/5d~8RL}zAKduu~I%FR:l#OzYI*BU+XTAkjPɵ'6iATZmaZ52)J۷Kn {xbtHitBT%;Ǚ\<kk*iNHAB#cG'CMPNGúReGHdr}2R\%&L۶Te. &N*\?:MBع͐ }{cV''SA}eb0aeOZfDh]njk!mU3n%k/ 5z>*Vexr҅GuF6X9 .=D.YMS=I+=L(7dLNu \X-20u 0zч3anǃ;e|ϫ~(/ 람>%nCZ2$Ĥ, 4ZrV;Ȓ5֌"!mΈ405:a"KEfU "P" Oo:[\`8+̱*l_-8PE K;e@ lOmtPmؗ+@/X'+kL tsEa̧^I7cq6̳:9*9hQSC`tA&z~U)?y FKxd7uKI0Q_RF7YG!py /ޘ(2 TkW -,%4h Bw.N HO,<1gv&6*-$v[ z0D[* Bv06;C%Sw0o1?`n||)ʕ?@.{&~+ȡ+OUпp:D. ~g lQ냯AJa5[]J3=rBU߇J.S$lM$lR`/T^YE JATbH$iz= b#&WGmۈP=*iy- puY"IG C󐁩r#f)m2ky-576hhB(!Zn1&"U${_1L,S;A=8(*<@if8x"' 32b籠&E.XZ}Cy&@`_""z1zX^l$wVԑ6=PĠHD"utHHvy/#"JQeF9o.&5OUQc7^^T΍u" ͨiK䂷ɵ, ->8P `0x jn V]#W]D颛-6Ne8]Gu!QYOn#.":*c>@{E9\P]{Y(n}/)_S" N^ɕ=@L7*l\ 2Έ`ІeCU`51H`jY~:Jlq4h%)-HuUl(@%7 819 }*W|.~ײVr/L `E(J V @D6HQ"Vx)}ijX7yBh=\رX] Zgާ l> j +ayN_AɎ w =L PkRCJ 0 #Mcf^{tcҷ%cE`$Y}L}Q_h-Q>ϫ\`2GhQ{bi$$!<|NzfN;BH6ͬآ#s@晷׬!dG4md0(68eK.9.9fgM1jK3)y-9,ta_`,%"7Z  Gb;KxE ?dƒc[J'񛦥^#@f84QXc+>8=*cE.%C=lt)[)poHD_˗Ԑ""j+tX,&̽5[Coc{PBB~C:(S<"u4@|rH[?[T pQTCD0RVp@8S,>TF^$W+9{ MS0[lXL'T-0Fb$b ,=Th0 uVMqCSdJQ&׸iC?`X!h%3m-l"| [#y` v9cHC?pP>oY`8dt[ZM4\9M}9]-\@ND$CD7$CFpaI2J⏙r~k.;- w.GWKBA#9`\hw{)]Ӵ@ )84ǼeuZ\=Ijr5h Wn2MdO<98 U(7bz'"Y r"rͧ` : E ݇ю!FT:s" 94*q@fҌkI*BDVT35ƃmT`D(e0Ї8`-5a99"Tf*L`}VT@ W<сOȓQ }Bv!_0 ] a|QZя9rc̐$Ӊ~qJgbi-}DӖHe _kM΄ 'b~CiM;#B9`(oYܜC8D{jUkI "'2K@@*8 8_U!PFqI ,T-BaTU,XHК%,0G+VJg0ܰ..۲ "tM c 9o6Jɷ* h⛥Y8"Dr_1nhȏ }< EB$.(N4{bK ~(pSXESU8y@B`bG #6 'b}k'+1=5"v8%otcΝr"ɰW޾K-v0xZj=R ZƇZ:x\@\  .F\:r`!"ฤxApvPDhoA03Yu b~)NOP|q`42];ǑzP)_8O ( u 0n7VZ[L@dq36O 0 sAźxf97#|2 @`F$'`FF(ڧQu:4x|HެLknusua; 6?@w'FF fZG=@[`O[uR$hɝ+hl@hq 1Ŵ 'ǘIZ_p"W,٘P2[rQYI  ȂbA 4s*)fHt.#,[>6xZ udvT]tVC]HelҊ-IѶD@U' ZGim݁%кΒ ֜uj(˜mDQߊLϒB=<\¿͈渥}2NۺNWh.E?,gȠ7Î"ġu4Ʌ [wcfD@&E%dLrDDJ}E(tZJe M>RAEm 1EpTbE'iA@'^(?:p={V]\UA |&a~ 1:vʚ#&ת=NK bNp*e7؊ l(D2Fɒe=kw6u8v0AWZoݡZbE' eIT?}A!o ̣ͬc!Qo<#{*BNșo`S $Zkj&dF"xRmwbL 䙣LfD'JIaQ;'bZ5L )v{DI-5J ГT\Bi1N3uOŀ肊Rf!*CyR]GHA.NAFVu>…*&CR z-,VZmd_a5:vTIh_?p8GCFtM4pU$' \!¹EHJtSa0#O ryi1.FXSK*Jj$B. MKSl*7$l6+M9\uS( .Iaa[R?9 ǩ *p]7r.*B<0F%K'#41Vx]}tl咴jkHd 3[θq S]hAշo IbFW2-^Z;&u 3k7-{n=hHϥuimLSj]~0^ɭ Q:2Upz!I/Lp80A+ov_ 1AԀrUVZKOq)EmVBL^koXmNvQ ~r$ZF!;+_qȝP7=tg36S[D_{f HL5뺂,2֤hGOu=ǡ+YhZ|JXoZlW<ɖg;W@2SхԂK\ZL|U`vl %C;nNJ,f99QHG@l`Ӻ\R({m-JɗKe5 &v|_݆obC{ꔃTFVxuv]mSw4b?Q:NkŇߢ(ێ"nKBƇO=`ƴYuFf?;ZcxtDe@:Շɾ8^{YqM˚C~OҦIy+%IS?q[hyuOFSeZx`1Rf~ T6q<^0;3Q7;$a4"P8H U7dje@KDKnHgPd%|Bj ^h"ƹke9C6(T ԹAj Cr7`K0s5y"+TƟ%QoGgJH)iVƝSoHü.- N%@)³dP`=mg:[ZKAcZou$TBalm:{ yg탫.V0vrߎ>p&(,rϢ3<>Ƭu$mSn_B .X%Am[<%"C6R5E#Iz*ӐǙY z@`Ykhd }P /o%dΡ=.,kA3+(W(U틅 .)! SD>3U$J2*w 1*Q$ov3}$Rk=G-Ӥ ch%ho+7::Z@.h0FVZcYҩ!ߡe(5uemA%Ѯ_k_֦H]/^x:>wVU#p+Xᰨs0Smi!^j]j|Vr[jO2etHg8(U?G.{[氪 ]O$$6jJW@zj̱wbma &FTP]b>ڥU,aR'Ym0س QZNj[sסк$K)争F6}\yn*KnuhbU*ֵ0ubt':H` "bmGohCgWKrmwubMuىH` ŠzxaeUձ2 9ԶnUKu"ȶ2)f^w6\< U_TŒ;gwm5J! dr9\޽i@EV#ZY\ϦݶɡRj•&1f@WXօBqOhW,c #ˡPrNvt_6rf>{jʑ S~),as![ۃ^J-Nb|fVO |G>te#0f1f 8HG56Qa,BV,ElBl6%XJD[IkD,~kf ¾Wx?S0'&?zϢ38˗͇\륮0-I)(0]AX+vIbN(̈́)&͠)Jz{Ԩ1CSTiO4>zס$k/vңg<\O,# daAp% BHp®ax@iII2QMuC۳Бl`o`UZn&Xzu|C.݈RTжcLhc#$[b`;hpCL*lRajݓ P%|(q~u1ƿU}L\8'\P0&u駿yz!!xrQQfvf@ J nfs 8LD!0 ^0f";xh3sc# Qj觮pՂ s7)SPc CSw]NlT*TJ#UJL&$`.U'(I@ /eU)K;gU̽뼷ٵkvK-W^ǻMI[pXGlBr/?r/Njn`3BLQ@<Ě](K^ L\+ixK$  (+G>Or黭#>z*rƘM&6#\DZ4~QE77f ӷ+-v͔س>_Ԇ_f`e2c|mM3|7T,gѣ-xo{z18m }2pGby<[E5XGNTBMgG1,BeA ZtwߥK?9<jSRLi&ST{^*TpkFT߱{Q)b:`2]n\nGMVTs=td&G:=T3P@Pk=d` eϮC hP燿x't~'Br!J`e#* yurzzzʸ=K8"hptסsDp<Ӧ9FG}P֭[*MRDC(S D7ӡT:\׽XBh"Js)zKDE3m%{! =(u Xӳl3'VI"#"XLn}:Ŷ9}aq8#@mJRLKhvZi{:tbSGĞ]w 'yD͈U\Q"hht Eʛe>I6Ucu.KKvnP%s](_H4(GbYb-I|c:zw0(BpN8d7|>?"%p!q#q:NDe-y,bH-=r`j=AQCr"XB8a|y;HԂmww\ħ3_5,$n AD m/>{Boc~;8_#Rgl1&q=0H%& R71 7F 2–"%4>X姅>[5#SWV&Xa1=)͜V Teo}-} <ji,"J2wuM0Jݿ{ }_tXW+RJ=;]ѡY E" ([,V'HA(Mtiu{F`#*u# Hć{p?6/sL6[rβ`QK`"1pttס`*EUn^N9—=;/ʕ"!aG#>oQ&Ya&`@RP 0D {3^W|'W4^Vv,4<u8bZ,({=7jβe- iEG?20ye*e K hLھ}`^ Jk4S2?o Yׯ)k)_0L˗@C [벘9)!PgbZ pYTkY%Lm&@0(hԘðf<CbEpjhݿO_y;sTM$˗8`ڿ+o~$H?qYZa[0T7ρݙ6ípX8M im  2+[Dӌ_|~ڲb;m]&DshauͺL6sf6.?o}'NSjN)-E0@l e Uvf@9T>Gǔ6#{ڦFA۶0f3Du'#V:A8ξLQ['ژ4bBVعz}z۶-ƘH ![T*jO`E>yUe齧57Oxyzs[el6{AFNE=w"d):dÚqYU{sD62alJx[7ycRT׽:m}X2j^EĂr5ol"a4{q(X|٦j?2%at7_6>(,|>8h#rIO{kch7 (sSnfGm{Ϻ 'OvWQ)s9UDdǑњc"2[:@oE_-^VVy xr^|2~f]Zs1p 7JvP#t.!mXR^XVez˯饏jx盗G+ oѝ@ 󿮂ŌZSi9,?Gl=YHò"dY6l. Ұ@ӟ_~)jMewZwj^$*nbY"EO"Ro3/g^*We8[|y֭[wZbf2ro2u$)UsBw+>nAo֚!f=t:)`5WH1 5]k6엞yȮ&rg^X:շǏ7d g]ˤg']ۚHReҶ)R(x+PTi%cZ?x X, ¹}}XEyj>z'44<wbfTkePHdgb^=+"_!`7X`Req5i| }tm HJ %VsEjQ XR]%PkBrPkU7.`>֎c}&+A.XIzՊa>'ջ)DM"V,<Kj׋QkZU2MVh77ݼnkË*Z?QգISJ*;{TZv26 !t똃&?1tS5le`ܹDAYxiTR R+^PZS/]bS35{!w V=FA30Sv"j3O/[]S~|g+Ro<ɨ67U1/l T+_y9õϕ\c[<@;FĉAh:)mꩇzT 7ӂBK ry(0RJZ[ڂHYۤ*KÀ3FǜAX`g.V| )J#X-&/rZVb:% [K[t=Yz_#rukU6#\,=|ϧ/To6tH8x+se]5O;IQɫ:g0zDГRJ`(1-ڊ:}fa-k0͘ﮈh'l6{&˝d2rܨ0:h%gbaǚ ={6맷X8:"DO7Xh"xز䅵mЂIH$tgiDi%HHL6?@rͩ -[Fr@fi Ң/UuZ=(nJV7MUFt@~gPis&Z+d21c3~5m\nhuBp9ҺLU^ԑ:a`Ī ,j@oʇ>}ELJ}9ixAÌ1K  WIMw&*$1'a8풙z֋t|&zq#l6&'HW٘P=Q? -Z5#r52C WZAcfekpLɖta=]xܬ#flL L$s0.pQ<= 8"aہ+2Еz󪅝}ZFzrz5w?iiun^êAqv}]*XL)pߍ㝙*kԓn5 D+W]^/?YúyƧnS͂sEiM6zrl\:)4*r_?UoBEƇdw`Պg2UOm6Z4fH.Hc26x, D&mK (X}?`JѼʢ  QLf0 5X ԕx6$&1;.RC_g8= N_|egqb}&/ pU£:T2rWmɣ~y)/عs| aAݕLobra^&+g}RmCńI٦c~\#lfxWa'9NWygq[`D{]*Y';k&קg2clL6MJ$xL;HL&:0Qq[K=;_zJ=#(LLaBd( #c;wqxj mZ˲cfSTвƘ0E1Zuhf>=67/3`kfG[jnͲܒӖ!\0ȲCc@VQD>Kq"VeQq%5aC;O%иkZ!]\gK巍mވ0x^Cq /=xj-Ru˪'ǘWuݩz7`Eϝz "_Q:c[5{ 2QDmyBܷ<5<o1ա}7Y1",5fRfrwzJ}&5 &Pʟ)oRzNϢa̦֯ pձJU:Ŀੱa2g wu:&nz~"# ձO<yß*۪+1t~bg4^դT% hj/L{.}X:Pi)Rvu^tz6Cu]V< t8m;nGVPX|*pSTyUx ]t *@~ej~S,@VoYմ8mXL-_O:靮2occifXO?Y(afLn O)K $+KjEݬl?~th,nRY4]`׃W(Lk=rCܤ4"4L:qsKm$|Jbܥʡ0Nn҆O<4&z7FIaxkOsxǯ /sS'׫DXF\JUDewyˆ,[sV<^83=~t\':!])>QEWQqX LiޝoRnnyu<`EҔ|M7sEzJAX$j\3dڂ֚'|/_}<1-buӣs'B<}O-ET+:pJ"X3y4<s?!bŞFua@'Z:*fГ+'h*~/_Tߕc ޯm-0Oe^XlB -S*@5UM53jG} tɇNXX\/zĎ`թggbAvZ2zM-e[E-"`>{= Qtߝ|?]UL,Ύ[P׾ט `tJ6|H(l^\w'+g:Xh-ec;IN?#E=nYRj))FǙzn04Z1OHk ڲUmMS'{yt/krIH(l6VD$U<Kw߾9w婒oߙ5 `N'A~CUqX ˼ZƘyJZtT/OL?ΪX?P!6hwc,ABBP#s"ffҘ`v6\:ť:`}3矹H$ zuS3NVTϕE!byt7 %fݕ_; : żwOOK\b%-rOJdP-¸Cb3DO>!%eϞ%RcS[-p/?X&'O&xޔuf8E%iL)uP,AXGRٿ踥2쾈 I"rz \B*'7;4Ǚ)"XcF8G ^D][_z)+:pf~Ura 1&\)jQ-Pc}Xq/1N^) Vܷ~O6#+&d#vʥgtס;~~>q BMH4:PViaZ>"5bqXj84P`ZM(ͥό>^8= oX3ovܿ~Y Q$=w(/LٍĿT^);Hd[wk ͳۡyC*ʊ}U0Y i\vᰳ]{:@ W[n~sCQrd5]\;vfD?!j;K*٤831t=Qjkd(@c5&m`K0Db3'(;c&My$,mZ7q/& S}=Kxf`[h3HԾDb fEu{F B@A0Bs8`Q'B[R "ZSzͯlbUƂ 4q@SUA!9+$9ɬҖUNqjaZ0" CaCPPs:4'>$#YHUDIHZ<԰ò z|w(]) mJ` 0P$L<$3.]YQ$ c!VcþA9r +a }*" yv__?nizC* ZJ;nD^`f6Bqַׅ1 }} 7zאN]_LAXM0u؄Tŋ<36N ڵ9ن0<&(m5%3l`4z{<8N -5lˆ-("ZkcʤQrV_THHK›MX^_5"/3]yU-ܧ7A_4T5n^Q|x,`/bIeML,-H47lH+OBdH懡:o8,Q0g4mv\k8mީ]XVveUO͉yfS]|xwJ<@Ie ,wj-X ΃a(!d،"P4J]Iã@޸BHB!Ɇ N*xN'r=!lDA8v,n&a3Ԫ APEDJ&;4$<,+'T4j ``$z =0Q- UM$-^y̭s!~J(ڹz;qùy^%}Nh91^F?acb8_ aC̢ E3u; \&bkjZ"$s'(Nm3$g ۭWvw8NFؿ1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh=?3m IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_mode_share.png000066400000000000000000000224701521174352300316300ustar00rootroot00000000000000PNG  IHDR,L v pHYs  sRGBgAMA a$IDATx{p[uŇ$P%m,cweY"@ӸYۄFIrggSM2I<)ǝ!3Svw!7TTqjD%rl:d%qŇ(iI@O q.p3s~qw~'a={񮟶d2ٷs΋燆|B} n߾}`dFGGgggBXKK˱~6iA3~M:!1? Â0nkT.u-FpEa,X SLijX1ݼw0pWr}|;>^`&/1@)bUtJML o`be@i ꛕJ°`1LM6 Ѐa\pIєq5(V{ȣ BWn&L:q5S27s CqJȸ J[0h­,099 LaXW!hGp  O.f Xn&:q$W`<F kkk,%di1;Sa1Z &(:$Â8 <ƹpJ8 +gc{z~U]=,ԔX[CbL&imF ^%ƶP_u:0 dQ7jr=) c[02 ,OaF '&&) c[xQBalGX%V@{cc#n8MӺhx`\ GXmUm&s΋ t0,Xm ڋE40ᔐ (X{q5a1y/^al/ţC7<*d44np04Jh[ab, EW(X11#HSN ˢiZU_Ja1 Fa2`1~`T ` 0ʠKe R&,Xx0`b,<:=,ƒu`Nӏ= ;vjB0l!2MsNz <+CEqln@MH :R9~|}> Lp1@ؿf tE O4Ȩ<`PZ-;[ޚ;fx'~'9ӂf›'\ӂ"US*E!M}ʕwƀq%YytO&6emh>;nBˮp2nB|x4[Z= OC"૩~WR;[ۅbe<:p dU)Q\%Xw1: ǢU>_ uA/ek'^t\cX]QA0-L3lȗMlBݯ'Tt<0amlmÂ}.^w.S:k9bE/ FL05!!$PYH> `|y;Q:tD@OHJ7)Mf?{hC=7L[n}Y.5k($wl p&= +#J_ְuk8P냁x`obB[8r5<ԃN"v'<'K}p Ivm۶MIFǛUH+/ u`%h5A1CMbE`|qfff (тEUT"Vk`f٭u㺼!$ 0--ȯ?Zx 7 k+0 *$Xm7NR%1-lvZx6|9-3ןٖ@= ~T + 6?7`Li]zP*P 2] :Q$f *@"iŲ #Cx{K3)aAoCJc,G3A|n>D!'_*R&KXO0 h\Q``Q΍ uu˯ PxCCV , kGPf@U"X,k1 (c e!PmW.nOfı0/(jz9iwXa v"5 757ԭPaӅ* YERvSp0UE+ s (]b^TP)OG&Kx\Kߡ^7yXɤj+)#{#dlkj {XTݾszx⚱ejȫ`¡D]r~,vcGLKֺ 2"yE$n"X׺ +pYΝ;-ӤϞ|/X]Bcѧ>6err ^>=k_{ɖM̀~S(X''N sBLmN(GohQʝ\l׭[[F)Z`]kyLK9i4/.oʱn-P__q||F[ ^ota܄R2V֦Iš ش Z7Uһ6kOm$$}g;~q H&E3imbmbK]i +G #'>8E5DޫEm، mo[+b46_TчۦKé}:ƛ_78UVD+DfffLB% (ZG )*0s(}Aߌ_]X4-~agp5XLYEW_c{$vm%^ E{jj-SN|8p'AفX4˸FNJXN lJMMMABW]]]*mdU8l1!zxR (Ixzq%7xje,$@]Z9s-U8}_o뤨eݘ-oVҢ,4h^8գW.b/~~|GKLh`)]X)~eAWT$ qR`jN@:c/(NjR__vbrr+PBقmY:zp{󱩔1 -erk5R*xJi&(+_=E,v0kr? VH%!ՉwzpVJŠX.vNRp\J y @i4ⳣY7x<#Ӽ(^Ĩq%@SVEN'KyVň(nS $pGgCkpJXJ Yh1(JSsJU 9R,@f= Iw8;LtLx)[);̺q`]I@;SY @iDx<|&N2ĄʼntWPCz~:bA"+\`#'?殊kP*.' Tw ^?' S-t7N<7v_ lii9qgιD=E3%\iT _|.{BpUadj!W?]u`BӮ,*eJ@&L# c^YLŊp)vFhEa fxxxKSB4YG R Z)aȇ3J,ێJQBvPTE% (XPEaYW=K/^pD-Ht=J }|RT^*܈TN5%v,x53øG peŸ:b82%A(ű}}Kf6&t (V}xs,#VΩFR6^5FvdhhGZ[[#`1aI1d-n(VQ \8bbWr V+a`$r4uK⇿V\RW,X%c8WG&n,>#5<BvxfP 9MA[, c#Γ.rav[o8 ȃ ?>q Xvg]Ċp];Suuu<9Sw]@]mWG߫E+5 W>O~]Ggrp{' ^l##,ii@*NVe?TehhQ:0B4}Sa1 'Wonoq;Zs7ܶyмanߙgRVlS3TŊB.p,X ជY1U}*˚r}_21 㮻\Ѡi@&7,#GYƽ`2Oa׎}P\%X)F7>h7ٚpdHKpUzpj+G8?3^!E$woc82}LǴFGQcu7KtuXnDj#F.&Ccv=` >7,L"mWJ'Q4QlR{ΝG-]\&:f33y/0][vtX H<WH&'n.ՌZrY?65__j?}~C:pR$tߣ{'M7݊##[\ R §#e905rbExk|րJfiy\Gaq`ݘ/XR055ޒebS`LŠjj.Ψ5蕞L9ݸ3)PM"DPvLE@3;$Q«(PPI1 ][jz4I␀4coNAUIS}\aMW~˓K;fq(} @!FPifcq9-4JqSVmT-*,y}fHnX7wBG`J8:ԱߏŒy^3!`Lٳ8 Z}&՗-VS7d[[w1x8G 4‹ުޘ\Սsia22jvd2cpXϻ*DXygB!B@ a5c8,Kx X},S+MqU+ ^Aܲi-~TҼ # SbE H$0ju̙6M}nu(KPsMPM?y|7m&ڲ7{<7#s܂ s ׮]iF5brWח[{Wo.ػqܶ](ɉ)e*XxXcソdߝm ]?dć׀Qv2ıs )n 7߹njVZzs;g-xm'Re%|d)!h`ca|x(Vm:8\׷?r}ŵW1uG^r-&LsYTԍ8( 8W0qFxWEx09\]wR5C1<apȷW.?q|3^S]pTp(.úg^.oe"]]\-XZJ&n/++\J>SqNFq5_垂b N~ww,,V•E~EEFxۏó#ϟ#u1 VʳoLJ"WO yo(/.N\'X$(3wt`Q MnƛV~N\%X]`6dğ `Bb%8wq%,*ʼnWV|> nxwp⪲?Cj*U[Ͻ05b^;0 ő{1144 5)vFj9ۗ< LiPOv2ؓd70L֕w,GE;Fx'O<+ۿD@V;w깄$.&YUP(fn]S_ſHEaO|扢Eg1 ט7z3T ìk"* w%-Lz: ٯbVUV#mh)U-|w3nMX W^r2whP T&:Jz{sE*rjX ,+X T\k3 c?X ,X ,al 0a0mZO79_z 坷mWbJ-P__7epܿ|">hlZI`SSS{~;bXMaN G! )A!g&00˲:T!ed\d0 ž)VPK\"F9Ba9=~ ۶"j[b$ yQf-X{ľڠBx|MD?(`p0ꔠDBr03ɡϿxpT!@wEx3R9)AeBaJ,G |S/5޿T_eR,aLafzZ[+SGỪ[TpJ0Y EYtN;y?3@ĉLP^FF]Q!&p PhT/Lb O,NGڜ*6=H0S9/xsqz7?w0uWt GB^O<Ufh(?^vJ>s'w%Vi/-‹=!/k;E-5(>bF\CDUIr?'t9rgǭ4]eG-IlFGԥh6JX3?]if*yRs^!S:E yyVBӺS=/+ZºرmtPtBin}g,dz/iN7TόwM<Rjs2Jj'ؿr(^(>:ӂ(Z419 3RuW4]輟O!jS LSR)UP;`K8acvE)V"yE"9'^v]]joHJ2%"o%'Ss+@kv!ZaY0=a~mT4Eށ#iqU[f͝|/sF& P`e¹;zJݫUkU*>/+Xhw=9['hb'26 ƄsWc$T_|O/ J.k@wM? t/{@kJEܮٯ'ii!9sjLM] -)\z cK1եtU9jkg Wgv"ɋ5≧͐/p1ej@F(J?{NTE+ŊWR`3ۯ#Z%AF( EX.z:GP,=Oyq䪻1" 8bhF%@N_"3H"DOIGQ`L%* 2iJ ,;&T-f+"]9-+YHF|*IG+ϑ4c!t:JO0J Z=KLyf#`S(29teR7ej.>p3`o@cx,11Un_ZhZs4 mk %%55WHOfd~Z}9IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_mode_website.png000066400000000000000000000206451521174352300321720ustar00rootroot00000000000000PNG  IHDR,M pHYs  sRGBgAMA a!:IDATx l\u̐kŖcyd~ĖȬnK%M 4.6(id p].ШEn,MI+IFNZ|Icfs.g!9oޙ$h(RFa ?p<3 ~$3doo40B0!1yZliQ`Vbp8܃+'1ǁYє\8N҇6~`Vb$/+?*>)!%:`SVꔏ氰BtUkZ,,F;0:>X Z=z$a4}VeZ \tgeWVjpJh&H$үk' b&su SCzXX`rV@ABPh Q] 8s4(M6u9 ,,FiL<Bw ,,Fub0$m4(?/M`a1277d;C!(]]]6h Q;1%`a1ʂчv[WT( FA\7(eK2 u:]( ,MJ޽ }68gE-;ZVeW5]wÛ>lFqštÿ6Ǻ=(aCLm`aacwu WXT%  P8iʊB?f入S( t~Ja1Yve`}8xt Ep m`a喭)=)KjJ1 CgeAQh3ְ@'XXbZ^Ea+q(Ar4M4EDaM*]Q G\- $t;d,kBw#Rb2۾`jf$E?f)}rYŻA3B4n{bGpΖS]*{6c[e)D޳>p,!~|2 6YqA(ҩV&$m~?w#)0퀓(QStM֎'ٻ}==@һ+`. :j2R:I '!Kߢ(, DuQJ'|X80X/>+d ⡴PZq83gZPV1dŋP^B ׹Mchxa8TX$Y'L&sTp_(+BtyVV;Yp^%ȥLUSwyUkdDav;ˁEfGr sXlWa Үz̈́kYݴ-&V7R#a P=YV !(vUumZ>xM`d45+Sv]geesU V 'SfCzVdpM,/ds#(dLYVaa#tT8vCa>¢U:tuu (I*$aalh Dz#Q/[qjtUJq(5dž%G}>F3֝EȾUϙWCz%}tav`D6 ƥKtvB䭷 r=b;#4ܑ-pRmt.$sUf$έP7 ʌCtU ګ N6L{*rr%rp+B B8,.XX>CiJ+{awV[:Q` i'ӯ H#L6HVԈJIq%dZF%dVnMaU /TsssOF /we{;8mm$7X\rB33޾ sj }^>!'v`g>V5{L$}`aH+Ca#P3">v"(I*|bĕ{SX3NmK_yE82(R'{E4˅0U@ (•\RFqSCc0Fk{s WwtP J%0%>zPZi~: Ub<+v>q5\W14txі3Oރ[AtU|Qΰ_VYԌL.ωk)hBC{ aъL{{{0E/_^|&æOA[:{6'y3QUhqyS8leuxd@?L I{Ls #*ؿ?h+ aMUǮ3LUxWWu+jY9QLkWnՊE6L'ګ >4Fa)Cǝ Sn>J~vX{A$ް!wV@ L _ @9>5R|x FZU;m)¼ S azn)Z۹s`>%@WGőo ,)1_S u_-0Zh__ۻKRK}pp;7nRB{ެ.\,yt-|-gP7W$Cf+aB\YGQʤп-_}C xY_M/jQZ_1tY^1,j,r y|}0MyΫk&OҲ* [G UmP]Eפq^]0ɪ?/].,dn~?̶Yٿ򀢫R(]փWo.7>_5r5 c\\NVh!ko_rxXR!A}[ú:,yxmW>A٬xs 7$MRPhT_S|U]j rGJ, TZFO*11h/!B}/^A0A+,jˋt #oۮPHǿ;htS{[՝,RN&<,F{W_UUDOL3_›R?~ =P  CXpD9b$PϺn ]핿{b"dn+wS+JaCMgRoZtZ V 7o**$XX Sqs3W^BDL]ՌA0UJ\5"/;ou$g^p;SUlf,,W\t|`J76Q~rWU_Pq䌲cb:ڑaQי7tWh[myC5+aa1@q u.jQ >gww|E_;cg#H^@- (š-%V߄=_OJl ASXX !yiJ7{W~xO.; _YSn Rxm/?sfױ>ce"$Eu5ؠ15a< @~x, Rwx;:ܫ. i= a<[jh)*BrH+t]gZ8%dD!$?8w-Őrp0"1ߏGvKljs 40%mN) gى驩ަ]:7 CiYwA~Pde5:V~(b eE?QJVog^0+ HƅkX6 %G(L"58~\q`By S(Ĉk~o%I?laLȪPÈpPnt1ˇZE<+ybH\X:&2LܪSR8 ^ڼy6pU%zD ֌FO | (SjUqG6N gYd(Mnz`9*,&Qi$-iBqVue.6oH 3j"A5-ת 1{ fVfp8< , U2ESp[`a5Z@Vr-4v}z ̓@=hi`10ֱ q` Fe2h̪fVcI"Fāqٹs`_#V" $-1 uȸ@nPxP 堟 4']Y$ h} h 44涨a[6,`mИQd kXX `ii)[p!Є m¦ #aqPd6m !U?;߁B)Phe0,@> M]>Φ$*)@7$VX)! 1P4\:8<|:!lyt#8p41`jU, Bh cI*!m=MpS0)s(umq`a1LYổ9!,G(FX1_Y3h쌎wř=S;֯xF#ߵ\%T~ +Kჾf,pb^B^wH)yV|gay lP0σ+[HZGYeU 0Q D6>G; AD"&Ҁ/VO4*FVCIcly Z|ga5LM fA :,Aaq_F4'배.Sez֮X>G 8!VsDL; `%!lm$rPQdVp(QTqk`QX{VmיҪaj3URowV(SsTۓY8a|= P ]ZTdGB ,˚IV\d_FJcwV#RJ4U!b wV͢-ރNvՂiI(*YX-$w~$09׊@q)4=0V; 'Z`]":*$4kV;w/$6 KUZYX>V)ʧ"guJr$c#I6Պ,,K1WBќu$(}PQ=qB4?o?_+J䔐a@'clv:XOa DDZ?ދ>I)!S´~K .D)c!ir_#,qPfXGL#FqNo=zeN>[8I`4_=Iqoy"yQe )QVy]z"e$8X|؅f൷߃3o\`$u|vߴ= H*Er*uMߋ u?#-(/›c0>#xWWhԩ(SkROb.nbBcOtuO iK#1Nu4,]_}GX "wljy59i}\ `Jl)aiVF:wmo7`8_,~]TXK KG:B ,0T aZ8%"Othʩ;4om['F"Gaii cϜ9 gxL1eY@Jz/ /.dvղB޽|M7mo^xSV6z{Λw~5tR1Gwx ς?E0 1몆Hgt[BWo:(Bf'N^0 2 7/Y)L}4Bna~i.vkӦx$9>[sFgvؚ ԫ<+v<:R }QJ{y 0-[F5bHjK%_u5>0-$qWG0'򓢿5(q?bQ),k7-Je (-O&z 4oӇ' ݺu}bjk>i*.m1m~fp0M&!3tjĻma᪡}ml.O`a1LvF'םAZ,,i"T*X\HXN=](P$-P/`c;Eфgⴤĕ:0;f0MEV'&Ϟjh& І0\W 6R\-%2L1Md*YagAON3ߟM=N PJ8@PiÀ\R/RC-GyʿE0VC)IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_persistent_enabled.svg000066400000000000000000000006221521174352300334020ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_server_stopped.svg000066400000000000000000000012321521174352300325720ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_settings.png000066400000000000000000000022051521174352300313540ustar00rootroot00000000000000PNG  IHDR zTXtRaw profile type exifxQ( 9I`Us=`{jgab*B EEbHjKW*pEu]wiC .cۿ®x;w߁2Gf4@—c"~5}Zs2F]H"ّ3"uPOvF|]/ݭbvy"ļFNvK'j^C|ncku5e(^RV ->RPKMV@P̎x\!Gn,ӘBҝc+&C1#)S4f#>3gI|r0F$}/+_f-"4@",9rh Եh͒S֜yFUK̭Xu݋EpiBRJ"tE Z>HÏrsS|g9k& ۿfy+vHܭ{/ڐBD#j*j .T>(DmMx޹d<3KTB{‰HlHlHvsǑv3FqZl1 +fd=xkҁU$F$2a>qA$ZTSTտatl-EntXּI0t5BvxčR،\ykU̘XvւJ/TtFp!n?Ē:W8,s7IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/light_tor_settings.png000066400000000000000000000027371521174352300322520ustar00rootroot00000000000000PNG  IHDR zTXtRaw profile type exifxY 9E$q0KUntLJRm ,dƷ3|A%sHjKG*pqL1"k,C$帴zWm in! !C~ʩci][OwXǰÓrCEy$=gcBH]c zJ5 %)wg0t\n7Xy21svsOWSF峢deR.ms[AXc[bd SIc5xadnd.ƅ,Ni5lRK, ߱9- { Ce^pﰟ< ' N tbKGDC pHYs  tIME 3$- ;IDAT8˭1JAOi!HXEoM,hbiN4.B T۵;A{V&vŇ xą%o !k{Ejv|a2j=F'{`~K .[uv^,]1S#n _62==|&82-a[ Sߡ<^H%IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/logo.png000066400000000000000000000073601521174352300272740ustar00rootroot00000000000000PNG  IHDRPPbKGD pHYs  tIME2}IDATx{PTW? Vz'hGjifAktcƬaqG1h԰e&T1qtEBJF@2ը`"+t4зowGYs9{ Љb3ېd)t`0 X+8<7 7*Imx̶1<@|{,v&B'LC6$Yʏ70!$K: %Yrģ1g3ۚP |=G﯀Zi`Lj]B2\*xVkL4Q8v?t+)D}нe$K ;MmfX=84ʍȲ,4ʍ8x|>_,\K⢁Ml x4*~,,X[ J#cb),]~[˽{/:ύ+7U}ڪZjԢ7uQk?Jt7Q`dOAo3'3cQӻ\uwطz =bTV $Dt ,۔@>9x <|'?IL^̊10ƒ>zdIr _ղlAoj_o#!1S#_(i9K40j'})x>AX~`9*vux 7bhcN*nqDZЊ.;]zLgaC!Ȁ48F>=K{'Y%#69!DbVYňFtɈ/&癜HIr[|p2&ftٔ#cb ҰOGcĀ*tl;REv:G͏Tr {ЮJU%Yz]`5Yt=s;,ݻ о.]N;cnJ2ggj~ύnpe5p˾V1w9\?h-ol!/7Q#%zme:Z[Ft6/ zAM" qSpnZdYfޥXlnpT{XIYov5ݯ7A5"ÍjƼ2W7ʔ4ErSQZ1eEQnd龥yBv,b֛BKܥ=tOˢR^^2gO  \(e3 AijZE B^z:{,˧/ofmDE,]6tp5"_F:}C3i恍XܚzLj^ `K@ZMv(9%9  lY%n;|r) W_>uAx@tc;b7:"kq|RS5("uC*8PɋBn}&&,iy MXu!u uqBh0(:XDܨ(>RvD;PU}Ksr>󵙭mG|5Q'ryf./eu2()/ +U!)52wx6u[-LMRy9紫jUL&&pb |^_D4({ż_*Yyf=Fɱ6R%Iʙ+=x6]v]ᢿO8o.Bn7F^Q/Bbf{Q!k-rM$[OAQ5v*>EPQT@3vZlWGjUnU"w":j(ÞFrɉfQh|[o 0`/t)/`4hG|kjbŘn)[nEoG$Yjs&JIjcJ4LUt3m $S$0)TRr*Uj߬( ovh(( +-^7U5Sl^"+6lE g?M.^rֲBuTtSpݱ-[xAQAi^)3̠XbEX 3̠4T xE,-?̞K'sI 40ȱ\q \6-gI*cFe|͠*^__Nh+ԉ(Hמ1 0OMl@SՍ ygD,=F)1*I@~u '0.{ r+@{.6d<5XPg*ɒ1Wg=; a?ZK%IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/logo_grayscale.png000066400000000000000000000043221521174352300313210ustar00rootroot00000000000000PNG  IHDRPP$:&bKGD̿ pHYs  tIME3$IcIDAThݛlUg?ܶBik\Ǐ% $KK:VMt2-cġ&%E "+7b86?յvHkbLof {sϽ=?ր}~y{52"O%f y#\C.u;%-SpF`qPvgR jy4w .ٞ.泈iCK>9 A.=5AQMdƨYD?  8/E  "H%SA"HH\FVgj|.g` # A2O7#q ^VesV4"NvP";YneSIdr~r/D,N?ǯUȯ EgocIY9i Yq<*M:DQr֓2eO̿ SKd>֬ JR<sJpmZhF!DڏPsEZ[ o13'{ 6O 7ЩXLX4=&xU8a"DCLX^޵FyZ9:] 3MnK!E̦fϊ4FI1,"h&7FLG6pl!O5 ,vjK4WHmy=|hP,`?a,]T J RnBOܻ+,983Y45,Z%]]"lolqP|m>zWk;pn(tud?|Zy: oU.ZTs3<~Mt&t>a}{=ÒǾu\12sў>uK\D~*kwVϮg]hVa'yG;SS:\7}ٝlffV*ܐsbg҃Qv:O'8> xUa x5(ͬ}.8@r7XdAn{"scB.PǨ[q&>9v)x݂@(gidGixCeϷhԼ2:L.1E %U YH.I1h)骞`KJD$oq;6L UHj')]OuS<^\F]P%}9w Mo1qK~jd-ɤ~<3Lgƨu MSZ nL=i5H9eE5ĸ9=jd V;Kdpb Oʄ2odmhRELZYMt;TȥSCBʹ(1ub*f Q%4~Cܻ{Q2?N'kq<〣J#7 V)>O6t  ϮDt6i\<٣z m2O2m_?6H|IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/logo_transparent.png000066400000000000000000000072341521174352300317150ustar00rootroot00000000000000PNG  IHDRPPbKGD pHYs  tIME >a)IDATxktSWvJ-bi#T1j{ƌx`HIڒXq'0i^oXL̤@&@)]0 ~PgXd&b-`ccIbk郗={g#G(e`k@45oJvQAx} % 0^k\Kh1Zh=)^4pUK,E3``쒻h1ZҁT/ HvWos(z]B%0!%Nb$% _KiD&x?^=fcuZZWa.^/n#}DGhQ~MK=-FK? ח)i HCBˆLC)p~:NlWmj9<.۰]؁Hv\^mI;+gPt:Um9[߫g+r#aud>[ <x>yg1'GZq Z+P|S _>1evhijᵤ׸>,2g.*b0/W <\BeJK0kGT4 q.R2S8RwԬԇ^fr))Pz ɖ&[>B^U`,Er/ PzxIvrkT涺h;w`iz$&/.Xg3"UQ &J{16 Pv}(69J(AiAiIM#M;G#("|dh7 jDˈK{= 0i[2m]ޜLڭbsl/N?C?*VvzNx)X*K+MΥ, VUyAGsW~-H57]kv+:zA_X3tuS~ 硁(2.JUuF^?,ۻZs9ox*yT?!x^E /b^\syA*_e⌉~ͪ'@ 4%0"A齃EK.x^I&ElPKw/%sٞrqz]սc&r+*KKc oz>s|%o" NrUƙ=bvXfN}M=RqX+!FF u;q9 ;rw+ q;·>XQ ~x6TEQпb?lس h"4 EWnPT#?Q:xya?h1_ȄEQ?;zV5"nWviA)fo_Quhbl ]f9#D%fс"d.Q4@-ub:S|s2p;zd_@u:_KP\e^ڄh.0x\=N ӦQQXAͭ@N T֥[L6!h_3y~kdN=k%I°V[)BŻ3o˼.dV迊x=96ހ6J463 (Xz `MT5dɠ`Wjohodч~0ӝ5Q To?γb\wQ=HZw5Vn֛ @Kc /~A`Q休CuE5Qlil4[;Ic-d pݫk'M>9_W1\%HiGTf֒YU]Jxx^7$KettdOXwtL]WFM°JtqEUeU47bh`59T[i?pv.GP޲<._rh5Yqܭ۸0}'%A9wm sN.{edYDl/.thY# b R"Kz=^[SY97*op]b0|pN~QϏ00tr;`a}<`]|&)5#uG+Rt(]*/٥鬎R$Jҵ9k 3әe pkx;<[VYoF*aZ}s1DŽHeT( B0:i.]īfy j'ir{6sg ૣ_OR ']R!}USWal3朒>V/sU+mYe-o{h("2V/'[:k&`x+Inr*aSM s;c/?7xb*NV:*NVxb5no_]C{xksձg%?AYZ5p-T 4iQrEY)9^´(/U޵S4j4Կ?MՒʩ+)Uc*`ԕdfSkU 7Ve j G?` >F+jB^(g̶pluZzs=0wdN# SBۛc#ヸ##'A?ju\$IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/mode_chat.svg000066400000000000000000000327721521174352300302770ustar00rootroot00000000000000 onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/mode_receive.svg000066400000000000000000001035701521174352300307750ustar00rootroot00000000000000 onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/mode_share.svg000066400000000000000000000567701521174352300304660ustar00rootroot00000000000000 onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/mode_website.svg000066400000000000000000000324131521174352300310120ustar00rootroot00000000000000 onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/open_folder.svg000066400000000000000000000014431521174352300306370ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/open_message.png000066400000000000000000000124331521174352300307760ustar00rootroot00000000000000PNG  IHDR Vu\zTXtRaw profile type exifxm s!16!ޠ|ugvWڪƏL~.SVRKYp+7t|9״>~8!A+ǣs5N4􍐟B>'!> ?Nz /hǶRnaݎ\ck?#̛,Yp@$ Z$& O )|WG?A1:S0~8N4.o& =4v傐sSV& Vm/@b(*1L4Ѥmo;uycC*\+wY(4٤Q}nurLHwO挔'ZHB,y\ucmYṶ#A &*[#B gH@`)$Jc6"AY2@@<%g8ak| d@SUlˎj*UkV䢥+q5˦V̭Zs=yV GZZkk0ڠܰaBk+Uײk][GܵnS 2pN2lm!V6|[H)3OeYgQ:+_F5IDa%Aqh019`TW /5 b 7btC[E. 'shP|Ea捽ŏڗ ^B/K%z ?B*LMiCCPICC profilex}=H@_ӊTD,(":Yq*BZu0 4$).kŪ "%/)=B4+0hm&bQ1^_0щ^YƜ$r|׻j}ѭf,DYf6mp'tAG+qι,̐L\+MF Dn`bKGD pHYs  tIME w1 IDAT(Ͻϱak$=*r/s/E#hQ(trf%aIvv'; G?xǘ{o% '_4c d\QurM^'UFQrmܟE`!&+6 ;rIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/receive_icon_toggle.png000066400000000000000000000005741521174352300323270ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME  C2h IDAT8ˍJC1.]\A:APqvTNA|Ndq*hׂ(!Mc=S/PQT5p[ޏsn Ot Z"% $U-0TPR]0pzpg6D|3~as6}n2GB]`x.6t ]~kfiSsN$׃i*4t aZV_h8L w/G@IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/receive_icon_toggle_selected.png000066400000000000000000000007241521174352300341740ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME  ]-aIDAT8ˍ1O@^kaBO qshΎ&b/`(hH "#wiA!]w. ͎)E4:#[ɲ4@GN1PKm]f۰|뛀1ِUfV YYڃOxM/b+2d4K{kVyCP‚@9#! )Q W^,<*ٿ+ {+H- E(sOo'rgc^g]Ja:>m<4')9|0 u*Flþdiz)quc۬hoByG9/Ў/j{i%IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/receive_icon_transparent.png000066400000000000000000000041321521174352300334010ustar00rootroot00000000000000PNG  IHDRPPbKGDN N< pHYs  tIME 섨IDATx[l;xYLJcb0͐P@0nHT#dPzJ,jCIB( 9/Q&Qq>8ai6i agzgv_̹;|;s=(ER@X  ;[8Q5[u l@1 \TM*R T;thv* | |jꥂHWo!(pMHJ-UA3kz,"?5ce?^p몦v@ER6𱪩rID^$d''HJ+O^ w +xN),$i[~gl zf`D3SZ}Z(un9Qg_zfOb-aSyΉb,x Nu-u4u6QRZ2HÕhc_r8~#.`IT۩{R4RgktYNv-bgP::=+YZb=V: ぁX,f=6>a lq%ؤC`+<@E:0VJ:XR,*Ki2*(dX`4w5 죽 >+fJpU<~]{gtvu[:o=y۵ZՎYu'Q6ܐzvϡC4-jP!)oعJKufRw+ABZ7^^ |%w7dtVEQc9yD@F٬͑ ;GGW֑i~yUKPLsixff!")_b1gdOVzH$e/icژF Soin~(:fо\5L ge2~sxePmGAF1hE|9Bp}Ю~\+ rm5tbvfQ.>I;G-c'?8˿~D'\A*VUCFT֮YWF}o TAggGN^Q?7're ?v051k}޿:E<M,imcƸei6p&.QEF#gWLGd4@?#hB 5e+:D'/ֺYzj;iWp^XwǛ K e4/P+S鷴MOMPFq.uEF#471k_ Thʅ"ER~Oo q|4r%:3)USXl'Qsݍ QTc'u3Zĕ&MlM|ZDa5ӊKofw |>MNHDF#| z;wrdVqU$I_>yaIw&swGrDUM}19]xKS]/vH^r55qE ֘KI P?L.oۚl#g=>eGL9JulJNn-˖IJx=\'?<v_OwLڥd_Oގ9/ s<Wrqc>w_|&>>jt3P䦍i{` >7\o㇩Ӫcޗ)dAFHJ:c @]o'5Xlꊤ{v̌vd3i=@͔$K?Kf0zy0 }r)62Z0Ź UM=K"#@sT|x q[xdXŔ)zIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/server_started.svg000066400000000000000000000012511521174352300313740ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/server_working.svg000066400000000000000000000012511521174352300314060ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/share_icon_toggle.png000066400000000000000000000006051521174352300320020ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME  @IDAT8ˍ!KDA<8$jP.Qbb6Yȥ‰&ôfEAX5x@ݝowg #U]}gfo)_QSzIA- xx 8y9 PS^extC^Gp̀CO_:v`,3;/_c 1` &2ٔgT9vk|h^ԩecUy|+>}{p |GjR| MfIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/share_icon_toggle_selected.png000066400000000000000000000007311521174352300336520ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME  hVfIDAT8˕RJQ=wF*PD 1whqWhSgPg | ,B :3Lͽ|!AZXNCH%J8GŠ79"'y ހRPo3Fe[70*R%12j,{R'j' k} a}i[ĝtsnaC`i$tҬ97 ŜrBe1'X~u:v;Y|a{KCY;٠ 停Q@>Q Mwp@4،:{o }~39  IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/images/share_icon_transparent.png000066400000000000000000000040601521174352300330610ustar00rootroot00000000000000PNG  IHDRPPbKGDN N< pHYs  tIME I]IDATx_lS?6qHREd,iJ Ԍ@UZhmD%&LyXSU"NajJ5P :uWmdCRJQBЊ+Q-BkqĎ=uWǿs%*?PVkU(ՂT`}&) ,R`# nQƀ80"ePIV *]%Ѫc Ȫ<[0%جeN$pQVAGڷ= (pve"v C*w9v^ K3@ʗD6o' ^L(Wm()|U^V(R%hF I*?y)l2V}YfyLz9]1h_vS-j Э< :UϽ?G]K[_7*7 PsUeuBxVf]wa ~&ro5'Y+O˵o:77GsE(/lgkwؕˎPGVx.PwHkc[[fSwz>5j%?e"z_(Bͪ21u u.+|@cscGB_P5j} ➜j9)*Ur]%=eBc6 \4>Hn+M4>h5+_[z_Z}p7g7[P 5lUJ2 `t:x'p @]*J&DMVv9Ej֭ K7V[5>Әl&g9!N׉lugZ]W#hjǛ3% tL5ctxb2<5dx[W-V1 <F#rvEգUnd`@sѕϪGص7&Mb~5?9] rtf̠.zc5؟NȮ23tvwwn-.| $67 /k^*^bRt#.|6:K"r+!fV #fxiFF>={L7`0q;nѡQN9mvfڹswv\bY}r [`y;;HrKI8do{pM8D ,V'<*93{A)Hb)JRM /q3FG!#F$Ν-0?tSwM cvT})al셧GFLO_rx)ȔI ^z'xkh$Y4eO,-x1 V"ʌ2K?Ncu\qI=ɪ<|S/.. ˪Aҩ)aHr$v3^ĕ&OMuc͌KK44_[9ٻ=np |ovo%t[<|hk+?8%%~)?Q ϝeU~5u6&Uʚ_l1JJKhhi|;cthBR,rg^h2Rm] rHF|e[<_TA>xh2ݵ)ډ|SYl2`e0oi9C<<<ӝLwd@P"+֣Fk_\r]%>|OxwG3=]17/_/XG: ̝Ovw>{1",|3ݻw$XsZe˖% V>M8p`J{[wN?oC~tTV!ĦMkg? JBAZ-U!!saa߿߶h'5vߪAR&ӛ/| Jh"C? gS Cv{\lb>򑏌o޼ymo{۟훔goܬ/?'#wHAm۶ΧPݩj@3:W.\Zx\ Ch$x׻58nWFmo.!F4BZp+o*066Ig_w /"Ce-~W-[|Z#<"!EwȀR"q;I2 Eq.ΨUyo}ϙ3g$x5!܇?kk>5 |W/:uԒÇ}h7-j.܁ sssc.Dx]Ї> RucӦM>ydruoi%AQoVȣ>:1d~s@4oyZEyH"};{H se؜Ξ᭐^zɨ2w9믿~mPݳw}aBYtVHxk#ZFnܸɼPHFb:WoE`>fLZ):c:"[61LYy󖎚l^w? ׽N"Y^ta_e\kI5 66C"tj0wdd/-I@jQ6D۷K ]!cf<߾ }mlx.L|`M_Q"+_A3l\#|bpM6݁*ڷ"DxWk^󚑲ة_.aS+ALviѼ!»2BǙ2\ASf333uW.?6 "}Br]r͎+BTJH>j i"1ͻ20E.2$h5"}4?Z!Zu]mIjDxÔ^%sa $b2WZȬ3gΈ |H]{P:/JdDxK.\UJ aFZm.yQIy~h>5D0222fzzZDPm֙!lJ/H`B9Dx{Ǭ+Dm)U[nUN %kd*apIl-[`6Nf2fz#v VCRG:Y)(Y-oy˴|a嬄҈jݬ/;rRHA]nF%CZh%zRwq88qBʻ$"=عs1%B$y^VWB9Dx{@ύ*6mAӢyK"[%%cbbBr}"+ E7N$4CW2 <"%t:J ؁Jܜ%!=~rSBt>]ʻ$b J b6G4"`GOU 9sFH,) #"%f0TG)5033#\P[yA|H Ѽ큝9RRE!=zY+GtH4nRE}MLːͶhO`}"DGG4o&&&VDk$\=?yK`}@?o#TUyDxKhzUyl.4AppllL4oIDxKpWO Y0DփI0 UVByDx{*s{" QPJU=<"%@TV{n%CRE%TOךW Y ԃ,-"=J>l.o  P![6ׇ#[o[**o(X%>0l>`5 3iG?T<"%c}-oBcRj@Gue}^a-h^aD{9%CW"osyDx{ #j#"= 2?:H3: t޽+>V}=VyN֛z'jXu=~u.u?f kVޢ??#W]uQx^Pw~"uIhfugWZPHf~?Oi 8Ͷn9=V f.^ }>~Sǩn !/~7BV@{m?C_ЭkMي g&'' ,?C͛7??|d\Lm«wLo6w}Ԃ{_u%4漢AHf|auOnCp-s뭷g>:p-kw&.O,w}KW5tw`5:iQ]ȏ\vΝ;vϜ?~e]]xපƽ4D[t|%)I駟~D3>V{<~GT x^Zp7\q7޸yϞ=_TPiZ U#2?jvպ{Ï}c3j$Wo6߿fIt5|-e ϋ4 Xݸqq"ʷFhw˛NMM a O|GE#_ ?W9*0ڿٵk_Q A,^y\ؿs)?g Xy.g?mE~J}I}ĤB+/ō"Kuq s,5Ϣy=͋,wpKzH[{L(T*&yis^UCd> CQU\]3_~1|Z6]Z) S'~ܸRU2QG{0ҧ].\5ܢo&''ǫV&s|ܤu0)v$@m=.=Vc=>tI"[ʄԉO*,W>/=tWO޼[׾IE[Uϕ/ʦPٷo USU1=Y@*/wF.,&2W,6 >ÿoqϠ9ݲ^mVB.ֺ U@"+$=tXNOOC;U?eb.rj_Yl?y_UGOҺ2.~0>_s5tXtabnU^оJI6=lR48:ʋ|=^HQ@nWF׎;VԓB*׾ҷ/>65Ax݂ :z{s "z۲S 1oڴ.Qh_yvOEty= +3324j ,3N7u"KT}l Y!n_{ FPC>8d\i]"U%оz@aZr *]<N2e]vNԾ Ɋ6a6O3+#0[xB66i$ܐZEzL/ A+dTW`6W5w5@4h2nҾ} /|]M/}eA +µ"Ѽl!кXٳgGѾ} /Es,b|TITO?EߢhÇ߉}477w޷/M`H0h]bվ(X4Vm *|nnҰh]bƍq%/-]#}چla TК.5 `허R N-4 tڸ;n]}M7Zz=F$mDh^RXIJ6]{ Iن|W.b*Kt'] -YlˈJ jp6= qQ(X>ejA5.~ XPi]Njtp.6<(?oSCW~Q`ha );޷>cUՐ#p5-hêu mf}-y){4>=zүL hޡF0󌥀ƨk{)5ַ/Ek!v^q!'hDgDr#M)QA ~U!۶m[SK߿;r[uʶ>-Z *k6)EREHKSo s9?~x9Qfs!$/Wo+D Slp,8J&[E)̌0?T܍7EX`|煿j q{ѿ%#x/~1}3‹ (K陋T_`6m$+3dfgg"BR: #$\u7-r^1Ljw]ƌQFE2 Lets=C5/vMMyw]gh^ TpތKf;h*Bdz@}+Z.|/OOBrᅦAj0=ZZw^fO>O!ˁ-2;I~o">٧Dt*b9J#CyK/eVZ̪uV3\fB"ǎˌkeQ;Ua]6qg<ȵe(ݐN}'g:uyƃ5==i^.TqO6G:jSSSEBZ6Xmܓ2&C^>{ԳZa^ Tw'[7Nc %% !FB-pp@b=FHOzӷBhE]>,m۶<Qh#ybZV\ƖcHh[#9,(8)s4 \R:gU-xtb2CGtR<`i Dm2s|vvV P\H Xu~~[1n^mݺzo|Q_y|]hiHDx=366fˎ; erMlK|)erq\m|Ů#ZF.i9]ϟU?я?/[Xf6zLaTn#}Wv̜Ŵ-Wbc5=y8ma.HcVP"ʂh3L_|Q>CAMypDHjWJbr'2 efF{PXևh,6l%9ygCCXM~l&,yA_υE sRT*Yh=C,W$-:(԰7~9?ԏa?xO|_>ާSr7GAg5$LjF-sTfD%zt2B={ΒVT֩F]zo3M\QE]Ƞhѷ9N:Ja+Xru3J~WT"33@ 4$`u/ao7P>[WowǎRUBBu P7g7N2t(%-9:'#V9pNt-kٯ~jlY)v]F% P?-}ҥߥ‘A?>v..;=IMoTM3taȇkukX"!k; -ErCcmW]f~ѣGcie*\@B]{ﺝ%jLܻwoHH/м;wTBWpS=HDWHy|'N(!& `Ke"?@ ->$]b1}CHG![ۃ#ySPh؊Ȉm=w_6 h +^zɸy$J 0u=nijA!H;FԇD21[qkAXQ9CQK *01zH)Ȭޏ B!))$LM6b6gaj"4ۃB*!Gc6;&,W]9P' ,cYh_4o۳EF$I1TC`+7%ڷFE\Hi-WB-l߾] )@ܭcf"ZɓJH (5f`alkycXk' g$ 4u&+nϛ4fBw\J L)aY\NVI@˝H;"*җ7O*A42R²B :Ths1Eݸqc/Cb0H%zd94oFxϝ;a5h8.׼*J(~A""IVB)l V-Å+-`Ѽjm\\RE)hD FtJ9hzN)4enxH+I?U_Pmۦ;`#r')ِLd.RPh5JqFydv y$Bu@Kʃ2(EPAdK9J1@F{G-`MFص"6С.:uJ )$yCfrb6gA,..vH5C+]#Xw"6#2^V謡P_o8q"ٷrmyYu"f_*d䒶&lݺ5ӥ1";:he: %gQ]αESmFy6u@rI2_n6,'/y/\ %YM t DNREY**YƉK" Y=@󊻖fn8 L@+e;jB` ,h^(6giہI@H TOȦJ:iԄ ̃Zb Tk`:i@pI/yV ,iZ L$[ i^;vP;n1_RP.Z~h֭[U JlA-SMIx]8%Z@ڈn"9 `_l.ڂ3f TQ/6ǰ’ LXs9 !p֥g!FV~\MRŶ(D$}9h^a5@[0sVQtܹ/mlN5"?b6|ֱ9-[aѼ1>#fsh^-2gʐnh 1|~+74/[ `OI1S)hl 4/B 4/䓄63NP\1hD#uqbbBmP_|ŸdI X}KY3`6C>IB1H+xH ld1cDd0~͐OLa(?G=a..fs e"+l_799)@?eOHt ¢䯐B#+H]C#:h^b10B4G{yh:"!`:_)8|^1 `E in[Z `5TQ(E+=[HQJ0aet=03-m LeQC75EZ|b Qmƅ0)q nTI3 1WB)ҐՇLCk_*"v"Aa[=CrqpJ.7 q%N 2Ie?%Phb:4 s! #ߚVbjl!Rضl34V .%vPBJ DjU(+(MWNMhBL7yf3 .$UzS )HOJ^SJI,( 63fst YB#ؕK#6)p#dN/a5 .\q#C+ayHb=(dLY`6ϼ^TP#3ԃhbNHҼBZ=*ADCfۋWF:iɓ'WꆧDrdWSvG~餑eF-#--+˿H/vTqT],Լ|U(Ѽ~yQĒa8!*Ld1_RlҐ AmDDIhT.WXM@b2 Q9 Aو !.)30`_ 0##!l6 XY͛I#3iY @,y<Vh\rm5+6!,4/ꠤ XI'LL!WBE&t]/:6ml!-81A,x<#‪eW]-,6$/^h@cK;J0P'f_\M ȣNbvGREy'&&,EY… s_ÚY$W@07Y`aÆ(U N 1E|fh1P<NV*mޑhs}yؐƦ𱃀U&ڌ B*ew)6@Š 1dH/0琐& "H=H9e|ޖ=ٔ@*k yb;iHu2Pl !{aW!!YmP[V"ضZ\H9%A!&nD=H+fKDԩS*@,w)$#f_0 ʂY5! /,e*h\7`%lhMZ. hJ-Fx MREB݈+ֳ*_5+R./+UN.CK*E,?R7 9s8>?܁'OP}}T蝋U\sndzga{%Q0&[OfhEvt”օzyH#pݏhYP/UH%/}W˶o{kPߦ~uբC<2 :<:w5rQGXߣߠ{fQr4>gGl;#4Re+Հ%Һ8N@n%]l6$lD#nڅB~3wѪAzV2 3m3]l( ORi7{nCyVQUYu5TAH /]ow!&~i3qK==7=Vfwr3~WڭlNmsxϼ-u9 n\D{ _6g*SzXv\3T֟I9 K7_#ּM7hY6p@& s.5ssvwԜ Ʌ@tHA (yL>f2b$wDs`Wnfd7,"avL h?{WXls|fbU(^hh xzn7}мkr >w7Eɟ_X uc.^j_Kρv =Pϝn58P~ ڐYQwR=h6m ~:ZM[a(Fr%S\Yp/PRvQQ!PgׯtM lײ{ ֔ yb5@ ɀkRz1EZhgQh{gtMUz WF˓WBo츶_?wUx ]]G$huQ䠛+Q+iB;]Kp31S2n͙۽rxu" ӐURBfTz^*EyM=/4P xulưznwsCP= +z7b\2p~Wdzh^~Ss wR#N^$-jhpMinwi" F ߊ\=g Ɨ78+H.D m]pK!*HK+)4$Q ̟pƃ zg$.=@,K\Ƚ16]\ӚWާ+H475 %$)F(IJ]5B9i&362 鎏' !yk^ݸ'`2ƽb{qNydz KKk=]S)r:ڼ7hVNVURU<Яtu"m./t  tqxLͺK(d,/h#D3ӑqq4XD?wtocYFz?}^ͣG*⮻< VԺì}g7~+񬪘 V8򱽴2s]ڎd]:Ѧ7kQQFRwdQэ%vn~Ec_ٍ7^z)sw'Nb:{ 9VdI&ߣyN @ {̜ȍ񍍉j>̫g>o}Tz܄Ը0w.gn{o{LUē?_t2l~HM<7FE~p|Hj]zF*'? W2mԳZTxlݶm[R [7M~d ȭ'N 9x];n`iObu#s gyU%3&o.LygByV>zڪ!LO\s9~2ӏ-jZzA [1qrbvBGgDEdrjiy)XqOyD7Fp M@-48st8HR7*:M$BҋJ*ifkX,ηZ޸_8T2*/kmK,1r/VVjAVAg>MdEtultR^wlllTKiY9pUlNF%ѰebwPubN[kK /Gujuh>Ѓt=O_ÍZΝki6s:Y)&u##6bNZCnb͑_|h.LWEV -V L꒮rSt?'{4og1y1X޺%)&''=#^h́6ƖG";eI[ѩdjwq|.ڬth!<\xݎ}>{ wRps]Rþ͆>}̛b@BBTقZQ`wѥ T\ DBףwKO@"30fsRq]f~}v&U!ބw||<sQ H3$kr9\TX&pP4CeR5l}>2Sdƕ6B؞ED0;(( ĥ] ~M˚7ݜ5Z钗*ҀZ0 lpaT6m>Ϟmx#Vٯ0|iE?#@i{5Bx塟9YCU4Gx;iYP*^PⶎB#T22>Ot}RNxUseQq|;nؘ˃8-)YXW|nF͠%ENM#ψ9GZb+#bM@k#(Hd~'J2>'ͩ[wuhTÎ*bf4d(!em>rlLG]*Rv~2CTQ؉j'-z'߷734"6wsL#-id$y*7`y^+3miΔXzv)Ve^i-~=IlMyAo,Umz4 T !*s1j8wǶQ"P9}GE)"BN3ڌk(V[8fHbmR56lؠ_߰%y>Ԋe-X:Y͓XC|%!:i$# q{ #ҼEgR+5+q6Ix}]A2WB$q{VKQ@%GoM~;K:Pd:aW@{dsPy TQr\WW+o{W\s&zCU>c9M7AMja6v.Ex`ΟYth`ʒ~ťB}@(oEi~VA,wk"] B$!2&>F1S$Qln-O|qoZxINhC7`/W wM@CǛԒN9(6;f419g˃eqo«7o/uO_~r*5U]!Ƙ͋y;Rp~waUO2vbOsQD8u1ѤsIƳ?5#K7Y+#lדoQ#9uҀvgHpM8͙7f#Ys,HB,Q6ҋ&H: s,HM(5"3,V t1NhϋQEz^&]b&]4Y>!xY&sw#=d|Z㙻`@q;ZSYv(UD8ba >)?h{DV;}c'k*3$)$Ri׍F`7N&L䟕 q*$\Qi,sgF&aO{ੲlG唩As_0Qi+ӷ ^6};*h*Ji&jDJ",m;|a=xC{:#{x߾FxruOr%g5L86wU={lZa f.+ SX-CQ#f~gƐDcJ{ +g6/,,$7m\J󆮩MfYT ؙN%77 j|k0Ƚ7}jM\Τ۝wQcKī|yu(Lz-_nƶp7Nh}QE$e1K12ws\6PY_y4`|\"uh@"lƫ +OkNS4U &Iip3ʑ/9ӭ^5 O~+2{QPf%U氕 i͜*-c}}ax^Z% [yM{]{H}$ γgWeoh>z)]NOn0K)zGiS\oKo45qQf357?11__dFepV2bi;d t̲Jc\%B]̦нj i#>_Фyvބȉh4:mu 2UZ4fjk/#qm*ׇ4pNK;RN IO䤕ӘXuԸh3o3݁IH(_{$Zf bq-d ˸oGWؐgT*|}S6>U{$sUgi)WКeZUwQjQt?"s\ G>^ 3Uv{?&tHV,BoT|U~(mlT4&pGqD3J9 l8 Z,Y Q@H k {rF̤#`0j j{Tn'StOk>ӱV=n#=5TZ"[W]ySFمig7Zvw `0~SvK ʡj+ci(\(2!(7׭ucEeY)Bj^鴓p%{+ ~p}zL5nw[x笳T֝q" "״LgKЋB>PbkL4$ӹ {=[ nϿژomn>/88HREQ8T]ߢiA WJ7J}?e6w4#@DQȚ̬Q]!^(LhriÎcgTa l)^xї+*%Ϗ:nҼŤhuh@-yk'c"jl\*P|a8 Gt:̓q]Y33%%GfdTA3zUFϙ&{!<.5,.w,mF2]u#2"Uc؏q.ЎPu"i-@DL 7?_™>z ݟg3ZДܬ*iiڷEU![ {'h!9zfMS~Y׵fseFzX-h3= (=χ!8: *VEj=P%֨4][Wn_ޅ,l`SgjVRͳEo\_x~=7Y8qb*:G|YLޅ(wa#| J@;)Bݖ@[S2o5/{ed̀-?*`joZ?9`BI _&[{t[8[G){kHaָ5Vq_|} kV+/BP[g7AƧUj~klh'V b1ry**J/6HBS(~-M_*:oײ";QJqBπϢڧP7 " 1Uzody\g0s_t)$k ,BfS_ 6&l^jB?=~&<{~KZ mvb~oslر߻p s>+J(8FA#<66+Ǐo5jT}~;Orcƌ!|,GA4J(JAi(!+(h:+Єm۪=vF<h$X0>tht4`ѣGwy 42аw‹8ں!^{oqVB %PB JC0&MjN{4 0Fœ9sO;)<:0Б%Jqp؂===Ӊ0e<[|I аOCwxݬJ(0 z ypg?Y`bF0pЇ&06B~|͍֭ z~PB %0B4{0~1---Mȩ|ނ ݙ-F,o'5 C?P|- h<޽gyfo۷Ǝ%KJ(JQP h ̚5k;q V3¥a0>:! wކǡ?|gOʕ+KJ(}Sj9s&zك;zz`="KC 3fj־bC\ /¹uXS s!?"ۄ{BBCQa-x~(= %PB }wu׍t_555az065k}z xc@ =f 7PF_9)-4 _CY~+xyU %PB ;l?~2 cw+,6f% p"@˔)SZo2ŀ`T@Ͽvڴi qgo=]}Ex#nWZv(_W=` ?~LJ(<<їM0a-aRK5;`3 яg&Ouھm۶3O: MY I^˗=i])_|qԩSEyW㓱 5#PD!Nᗴht @˧Aݝ z^J(J 鯃lgzCaP&qmK<JB\E-eY`#) ֔w{PdMa0g%PB %4<1c&|)'OҫPz_քkFњ> E]4uȋ( zv"hexwgvBhyw<|qΝ.{{RVB %0B:::>uhʀ@ӻmmmA?0<ر Y *`r-㠃0nܸJ]@^0OFsyP~8fE78}#oւJ(aa,و$VUh_^ ?vUndŋtQG W F^>jкCywR qm ]]!+J}I0 B .6U q߀ԃ<@ mIhj<E{iA-P gX}k FA- - BS`ܸcǎޕPB iWv`4\'ND:֯_͛7X=Y A4iR]X.WEǻϮ4f̘ 5&o]2ϟ~ !XZ"S > Fng q@YՋ,bh^kJ(@n 4M{uEm?~|ŁRkkk -#uCb<;̎?;!S@{NZcL^yK6P 90ṣ$\pAǔ)S~<[=#+/. | 8ATx>ǿqi hzBltrqV>)8uHi,PЛ:F0 pw8tww;{Hpt/ f8YESx n`Q8EC# S` 7t?G.g#Qk~i@9\L=0"Fvg=YG>cJBËh-WíUJ( ˳C4%V1mwY %o2dɒQ-(߿;Tknnk`l Η_~yO<6 #'h0d-{P=g›|k_wKqz*%轿 4C{rӦMj(shbő;MƓFB\Fܚ9~QP{(G~CFر*vAB % 8*GO=Թ---S`9q6 Ωu&謶 Mf͛w-h NgtY􀧣|g 4k֬?f/¬O?,%G@FI6d&Qxm,6Ea&!Q[qC^j>RB'|4D %4̙3|V<dLI"Mfݻcǎ?*h$/ EW^yO0%=H=7W0,"zmOH7ГP~,bع;$t𴚋_˸1QGo1iR  ,F$ÁMއT2!'5 %=طo_E}.x .Zː:d`GBk@Smmmm]`p={gϞ8ԐF^~=7=F|g,0XzÁn>}ze"'ҩk@3k@Zzoh4 M J})S|8+~od6nC=T]MI`\8o x0P&nQJҖ]۷o?O>a҃ W.^xf' |Gdt&TЬ0tHX^Ac=Jԭ::`pz ӹ)1r jvdQ12&?ڵk FznE`Fİ1pk=eB5MysX g^|qc4 Vŧi 4s J(!կ~N:Z[hry$zS-8[@}>ν h8zN8ݽ{) ?su#jx~߭я~t ;L0 e˖=i ׿YMܗQ_A{8 :u#>ބx e(u tp`=2)Iv.PXlJ7!Šx1 wwwW ա}(wB0da={k܃7q<\5J1<54U=p#Xϯ3v~_;{0եYn$izC/N5 (P"&[ ^>!@Te陷m۶kJ&gϞk{ (LȐ@@ɿ2%P-#N̲ QC.=S` B<ib i%G= d_elj'X9}9`4XGWzcɧ \`ZC5!|2 KpI8ݦ60dp?#Q3 |C`P!;vE)֖Xh*@aSLY G?qaJOykxPg)]|,}JyM|h4Fm3}hݮJ(aN5^z :c(b A/k]pS,Omf% GoD@RD~yutIO[5gNpZ42?fYV|g*h#"N*0t }2d>|d68E-|K!hޕpHKKWxvC[^4K$pOѦc2|%&Àt=M=4X#z\Ȉ=sWi"r 2 D%w#Ego'޳pO;~:+'zGkaX 'O+]ɚDÀ1%8-kW9 !?&̚9p}]pz4Z5ӂQU&ҫP YСUxQ6?Fe0DqW\Jt3nXHag("F?K)a_9Nz7A#I\\NR­ y(k$QL[d!_< 7 +Ad$^W?ywQG"c<7pJB3*W_}Z;wя~8["1GNogrƫCYp}%UCB `ԩ;sgϞ]9c|  ݻ׵V+Q{nh'p"y4 (Ft.0D^.<&yE5˼y_~V 1QK.=Fx@pPt5k#l4 %~%)zpK'f=@G2k5R BioEh*7TVd]׀ĕѹ~^^C}>O5BeʔW^ye3M|xPA}4|rqLL͂ `TM8" @;lp͛wAi[n3( ߛPR9?g@5Sy#[z۱c%ӦM{p ` B7A={: FZrJV뀲,5a18 ՊOk?,u=-cv?Qڵkի3L>.6v% S@%hMc4 <_^v&\vVB*# >23P]pGoۭ0o[]/#S!,n '11}ׄ8&Z~t1EAQ\ṗ]0>}_²8`x$TbQޣxԙt$Lrwr\Cr(x9꺄RNp@=V|c J8h(lܸ}}694N=eַڡi __ϝ0a: 4$EjQ<!|(1+FC!*+zP8 PFpiӖ555]VV9 0kۻV\9$$`Vhu <[S{'~uco~s+wAd 8?yoXѼdkV]Gߎ=l_B0G:hn$}K.zaP N2L*+R22FV.LMgC P&nvu/}K7|Os#2:@wp/簴.ijO5FC}#fC|UA?l޼yStC\[^zi/PSs)փ)/^lN.\a4et o !Xu׬xouxY@v: 4LIqm{v6Def̘1\׍W]u¹s> ΅q"ue5{?`㰎kv%xQg4ZB+WɿKh\Ebt/ @G<u3Sхp7Fy[o>p -dh(NtO8rVv%e澤vKUOV\ITrBҴiӦgЋ0sL<K. MFFp7_k{wq- ÛpRk kppᅐ;vw] a{Ŋ ЙNvɼ]\`? WmYNQRF]qiq%^ ?{^itɼ rm# XfXS~`u χBmfA N^wuOޅqV?VkTt׀XL0aM ( lG59 a }3rGg8Aa@g'O<L9Ĭ̚/E𭺉#.Ki,#M*tL[L[c)§/xktw]>-* 8ڂ-Zc8yVǤg–ڷ^ɿE#\pI'=3.aw/p?>VMGׁ[ipwG20lOKoh@@WWWx&PPqء͚pI-nosgǩP3;pRx߂Rk2'A5YXg'V⡱^sMJD8jc DLR6IKWZi֡y4BBj p\2,40= I VnNUh 8-ő!8-$wlmK,YS VXG (iK(U9+9@ڎ3f gl=zzzzT(`_F 8}>w?`}JHѰjժ3IkP08jl<⿼f͚$Ђd闦Z[[jpM@1,F VnYOҊ%i2h 8#ءadž'}]G"xo.F! FN.B_hO{'O~t…`cW#-b0P2:4ңW!?..'yxq0_}?Ųc)%͛7wg BQhѶH4F`PĬd b%/̪;+]8,BqbtHJ m n+?+9Ќ:>kرG|BZ,.Z<ׁ'k 0gU3l?{VN١Jȿ! 7tW,_ޖF@o,.׀~ fGԧ/Gi$z/Z 4 YCV[7 ]۷oogm!Ib^ϖb--l˲CLꔴyi 8N\@#},vꩧ h \hoG2ڂ՗uʧ?_nkݲz)>NcRHZJ\oAn;+QN*'_ [X{*헲QC >#g0/= ≯ :;Pv(x!ԄXZ䖀:go891q-^|K,{d~.-Ȏt s8tv`xH)֮h!և># W]uRnu! />2@eOp Ca0q%2 "-Qi_޶mMi\͍}SN]);Ͳ1V7mt&&,Qhe4KE;<.R}2OsMvI8FFFT_wc3K谜4@/pvE#aZ)CC/ǎ3Xf\`! :SQg<:jlEk~)Lc} k%\<*$8_,?+qieoZ@8C!o߾l4 _ `W x&H-`lܻwv_=/߷AJhkkkWJwqtG%,kʕ iqdڻ#$84~[$_}7%

    uVOn:?aQRF{Gkk_FB=yܐb8CV|,_fha/TЩb 'ʲZe6-0Lݻ{=Wd2Hʧ SpvLS,;=H|N_]&0P-BGg'\8m'K#)P<ŋ@ɿƋ)K.my# {O=n,mlmm=:wn[&69կ~u@ xqǕW^y1.'):KHbQGouEa՗4^rʫe8L%twuuPk 5Da0UK,Yti@|AHjCaivfw__éIiON@vڵB~zeޚW{r3T`x[~&.:}>En(bjR )T1KO/u~;9(#!)n-Zhe̛Hse.V:.*xuy9.)r~.J_sN0No *]1Odh(`2c_g x27GOyP;Lc bFTGS4 PbFFR9@kx>|CX[# 7/ê+O+nt8㌪ iz)zp^>OLҢ4ױy QP<l |0y֭"_ҴCZ8YyJɰ^k]Nuxk]`gPB8gM0%o~iàzC﷾Q4V. T:&LXcf5jM(9.][-& &$X4iߋ]Hge⸤&~3L)׷̏bEa+iZ ~=eʔ5ѭ-Ufi/휵KFR.匧ALdpdK/e c۟\`ڦ=_H?=xm[VRX~ b6rA(@Of`\YH.ȭt|&/W+<:^[L1El5($DCO ]oW~ Ðҝ|z /~;BpD ;Se̙.$E ---7ApYLoYj`MXx!d>\x5a;wTj$)Avpq|`;&V /ym^&Bm'WWNq,46|w/ tdbq,ًsOSyo$*YʿNP"tkmƒSs9cƌuxM8r#ַkU/l-Xa0v3Nc5֬.%Ce _ ,-sVr=4@1|bO(К Z`ϹP.T}v `$Ŋ0ʫxx`E\}7ZJAE)7$$oBɅUNhZJ#׬u|.2X{ɴbJ#r;|ML@e|֔Ro TZ\_{rO?>@c &Ve~gqƹ84yݼg@l)23p?xG)wv I%;LpX ,(1SYX1/~=kVWLpZSAc"01M2ʗ/iգ{*^KSF}81ecu*!kh{\|袋fqQSVjZ'NQneHT|⥘\ZOJ,Z` h`ܵ{~<OҖ?t?dXa<#!p*" lh ?SzLx ?vsw^bNp)Vdm$#w-\+6I35Njؔ|dS} 6;*90^0BtkZԂ*k-Kz+`t|f„ 녹ap|VJ?rJb.3gHg!CM8q4_z1Z;˗/N5ȻPI'tңlÙA TecF2Rz-NMpn[VdJ\R@5HZd|_uJUF+?ֿЮhUQG9XHUZROk&$m@{?4_ő8{cV㗲j?n - /Q cKjh'v50˅D hB>Ś"Hs{_+=kSpi&Eqj !6n4p&x@ŭxj(ZǗ)cAaunjpŗYS>r͇PSRkq aWtx\H?eK, M - h$̜9(|e]<]cFM8Z|t%b]3L8(YOZ~=lRh)PX&[tpu 6i_H4FCHq/މ4JXtkpyBKmNI uFCcPVC×敁&7Vh.]Z/iC7'S 0  xIS.]q;Ovs1*XEX\=Ĵ) 1U`XiJ"VNkCM hɿ&q_ Xpi`0-w0?!2Bc-PrI 4j[gI8eq@V|xb1xHd>1ޢ"ҧ(5Kq ܐ0[ /]RN&:Wy3yZIxe6(r!k&Rv$=&Эu ;$VDeZzK\bȼ4,W` z<9J>Tr$9 P[L4FN~S4ߴ<3W]!WSVK XR&Wk3awwwWO %מ7NSBY#`wW{)tD(]Q{}CicLX?Ǎfeq@b?ރtϢ)~0m7o^SCO\Ю'gvGKUt)q!#hh̞/+M4\mSZ^ĐCYI~2#)L=L4]eegBˡ| _տfi82_ã+>+ߘ=oҚbU8 'YgAjڀ0ѠφB>c,yeYBj[cZ42R)-4%)>aJ{ҡS:u_[0D;ǓБ'3+<וzqsM1zq9+b(? CQe2^i_E~7X-%P%T. .HA⺄c. D4&Vb&RI4{+EGƘ=4Ғ{*VHe_4X箻iws=w 9ق.guVCP3"d;MY_M#V[?_k"?YE-gNKt뮻W;!zm(:anbF|ŋ]pH2'דQeتҘV_HE[fig#^GoڊC 8 BX񭶠w1؇O;7,z-0Rj窡2|Q ~K*nP~VgN^ܸ)yXWƒ$m$---7z9|u p'D 6/_>%8h\$򪫮ZE}ю (jdN k5%e1k,P<-$<_Θhd<`ykCDk/a>+Z(2O*Kqtvv9^#:ҵ:-\{dgTk!*Ոh)iJ>\JoVPEϯxi 7꣡Sd  @2 pXx*8{k8K 2.Մ-*ǔUHbZNbt?8-cIci߰y]rZ țR ?^bk4kE0`~;Y4.,S"oü7Ҟ,-|E_K˰^P) JZqcX  g} _\Ҁ] ՘zsQBKapɽM#q!0&P2=skѲ0C )N3% E ՉV!ZBL8$M) CWF2G"l7'/,C555oQ -ʵ:,La( \de>USAGg=|_>kcuJqba wA1:&EG$ ME;Mk.|ћ fVxJbqe)qcNu*Xʒq|j Naf3;KH)>*|C=T=h |w莓C[nk-ƏJ({\őfpZa΢k;R XJÑIIl*Д|A76zQB0vV~SNTw.\iD' R|42=7)8|,VS&-V*RQi1On:<{;v~O;-jPo'(V5ק-ӛi:3Pjȿ&7_K~ɿIҮU8x7$KE'Nu z?xW^$CWGNL3& nKK6A˖{z"B)-V l(,41&zx~." )#[4򠠐є*O+l`G2gt:}SD:r͑+Eo2ueҳU$Vgږ$;kF%Z'nC)`?!_ĭ"'b˿*"nb^$CaϞ=q[ù_aM 㴸2}(?((d0W[JrHn_LC4a1k0.O~2F ZgnDV/:(RWN%cvsīuPjOVPлcgIKO uhF[j^|VЫ5pmB[[hHhF ¤V ?ĩi-BLBhJ#*EO*ʼnѭ1AxRpJ;;f,erɩ3~3 [9MDwB/ hT`I5IPBNʿe~2Ly+E=.Ve)?,QC*ȶaVytE!Y\rlz-믿*D Pcyqx #.q p2ri,MH%kLN*nGF:<_9*s-GkۘvPkY޲f͚0hQF>YR1ݛu~1E-G, C ?2>CKr`ǂRkh..{<4aЯ^l}GW-1N<ĥS0gT~o $m2&k`o) WƷR*ʢ0ޕļ,Ţa߾}+]j|ype [9<9Yw/{3 1R⹈֬S!U5!ju [-UcKAM%cuJGZ'n?֨!SI.\P=1h(,Yd. /bDȷ%Y-pGU)CO 1Wu0kCG3,)Z[JX[ȍ=_d5xˡ^{MYYfo _JByTk-cMRejɠ}xmC)BP]h8PU't* uv\(ӶIқ3fPĉG󕑹Q3׋;1`X8Ǭ,S#diyR\1 Wr)mL el姁dNV񹃐2Bal\/+v> |d~BE=JiKdjGOO?yZ ZKcT =&K<$=˴uX݅R`/iQcFIMC1OD$hyJqZA.3'e@ ,/%!chAhTAժ,gKAQfhtUٚϖKUpWb<6Il)VljSsʷ>>D&3Z}ʿxV\}8+*Fjii1w; "nkk "Xn{1\XR1Z5P2&Sܢ {}eXu!Tc\3>i߸X4Q6Vb@a*?ʹoѣ63G(wV\3-Yx#|t\<-Qip_m@3ڿj'onnOhMA䃧Qj(l߾j$СJuyZ)[w9(7-/KEe$- Ҡ<,[-Z!fa,߄FqU/õ t yy9t9Kd_QfNy#5 6TG=*cɿlk-}ezz(99I:A%!4ڬx#;dt 79s{p|,P8qb3CPnlcc㬐0 aq}&FƐbV p&`j4d>RYɰ: BHֹ1Kg?|em?U[]r( _y9;BM=Y5+ Kɇ0 W/4Nsf^RF5ٲP(:*V{Q,q0ݵr=&Ї>T*tw%=*Zk!.OFឞeһ%,ԔLxjBS|236yp`tߢ c Hr(7ktïRLqjRGiBŷC)[z׾ȿT2k酐"hH"ml('?yy  EӲ9iP|FJSg(8vƕgɴ)YqHa>j5,+%KjJ%#R ,"qZxz)<]h)Dꨀ'p!WP^w(e2Pr(|~Gvc<^ kLA0'tx_;.Sʿ)RƔ2|5JX3\?f!\B'R(\{ ws\?>~3^}Պ!w<VFIbhUU@ a,L mhAk bv]cF G*=q|j?;||.WH7biq> r( u'b50o]:MMwIIfqR<[uc9})6$Y?F|hk*h o,ta" }'V0iҤ~?Sq6-i˔BZViH(s4)VVkT+9h%19.ܑЌ"#TI|,תٳ?|r -PVv{$瞣O?EKD[xEP\+P^\RӧQW6,#HSVECq%:Z(HV^A=)o쩇c6ۖN#\~lR@Y('Y J2OBH:D)Dִk1T&s Hrg2`4V/ˁ:wBS YעKg߾ yMU覲FkBqZ$PlDXe'O _:?+"IS-4d bWL G2eJeO'S,Us3vQ ShE !xXL/ =sw/i:VqOLiRǿ(oֻ,R1ʞg)mYzÿC3P|Qnb42Pˌr * hu*t^,uh2rd Ќ> $],,iuRZ>}_ʿ u!MCѬ͂.WWpH{/= z?Cj?)cy5x9YJ,1|Z|[DX!Zd\R@EDLض< N@N1ȵPhdhC?|F.j G4vjDj+Rr(Mtvz1cWiVPp6f1-EG,>09Ҕ-]E3?U)PT K (:ꨩ24X%7 ,~07L$6$ J _ĐS1'&w-:ny I|(%ˡhqȒ& ;w\IyYo5M*h;њя| Z'cZyd9$ / 7m33eİ0L:Г@_|z/~3Vq2szP7(Iyd 0@7Vfk4Ѧf R ݻ`Vosz_nȅx=:ͽˡ4 2 Hܫ}Ѳ/4޶΢I>k[>j}k(Nv>0`DB^G>0hўeIN0a]o?Y o ]TIe}4C]aꡝMV#^z>}z]TXGJ/F>1I@wbq㝥L,aRBRZ-+`9ZO:UF ҽV1t?Bƪ5,^2 ( Zgsc@k u\%/PZ AZm)ou)ouI0ݩO45<7$%&hmWԥJ.fK ֈB{+'xu }˿{Nb5)6)E@ mS>RD{fy h!Ƭ< UVa&# >+!Șp>= x7A4_nWW@8Z!eF#!|K(ˆ3bXS4!Yb>oH?;sGPhmmnRֶi%/qهG#2ou-Rʸ5A+fu2j x(:!z \~@Ȁky ī| ɥF?vOr~WkCOxz%/E(iWu`XFɿj[P/6޹|XIC8CjYk1w(ʿ۵< |^ݲN^"/UX !Yĭ*)P/"N6V?V*e ,gJ^ֻxww=l 4ẺgnWH;k!'cD^SqĚ5ky(Oܲw^7)|8SiXG~~ _)TGHpM5/7H)Ჳ,꣆whxCNuy<~FVIEeCՅBHE:7LBL'9mZу) p/F &xGaJt_tc8rwO&)yPOdPE;+[ E>NCRY #)ֻC򟪿4]A,)4kic4ƌ,w5Xx{g~p5Z#ZxF]`Zqk;CzFX|g)>bPZZ|R -)gXbxh(RgpY&xFmvO>YѪn#1:wO䜇{K)6K\~3?sW'/u)z,㦶DeR7v_4!ӔjE sZd7‡hp. ^N wo %]oSE?(2@|#eb5z4AR!\E.@+`m;F#!DFƤp#ů|F~Լrm>N ~5 |.?Ye~xg{Y'1AWLg0N1MQjpvZ\y'#%azw1IH㐡'Z1t̑#ٲ7['0ԩl_q?3.)Mp'o[fqUPQR:NQ 4c )gQ(( 0?oq#}~Ac>π|炶A)8Syhd^ց''S}wﮜܨ 5)@'ʭx~EƘf)Р_ #;PƗ[xZrkBmgўZC%14o]U]u3\5{Bh~7i"ia_Wp9炍}{/&HdEy{4^Ro}O#¸p!V{Khqs1'yWғȳ)a.۷oDajݒ΃2|s /#/ {3<"N /˙$h)'-OC0}}?*tEk)[g4B;a~Ahǟ~x≷蚯#;u[z _t` `\zY=Z :tI6t\nݺϿSNg[J@k{,\#ʎYR4KI ky, FJx2\QW+X p'?H::Ut.;XP5w竼qE]:cPR[A ;:Wf=9%M)YBAIz5,Y)L"-:6eM4Uy'Fȯuτ:葞P]nƀ cn4ٓ>+,m P'MAQ~,\|~ʹG<#ZC0âiYx&o1~qC3~8AС>׏)}p7uqH.=pGhiβ9O-&-F 3lꘟ):`*Z^ fIbyfg)}"ϚT"HÁSp ڈ |Yq^x$!Qeˡ*#yyX\U5lȐ!"?pZ&.ƋU7=K/tckk+ ?HRqwEYru(U~VD]StMV7SQ7#9=hO6txjurڛuu<^xrx9Oo'Չxe x }y XA\T,a 'Ȼ=ǜ]3~w_ #~#OA;q:/7rzF B.*.[ݮj8g&ub rڴq҄Fr51{7FZV|MB.JQJ\EV5mIzZZs+3fݼI+M[mZ;wjz뽻srlXA_#F(^hvLs}mU;vJ$hp JX5Vk=Rv{56s#8fz9{cobHc@m.-KQT8\Bq$u+a-Pը6Q\␭!w[%Pխv7( MebMڶ$ahQ ֹieXaEd0jh}<2R!7 (ʐ(m/(8ŐAc!#];b4ʪ195z hud^TdeT󠊮cf:cK-S#!0YDш|vٖt_I&}Oگ <:6 gͧ,Gcd"U41^0H}[(rFſHxq1M.48 ?fgmIx%_HT4E/ z]ICC^C ARjE )h DOU#Ԍ ~F< {v׽vmA+[Po('d%1C=De7\=JO<'M\&ܴ G}rYT/GL: +%?\Œ\v8F̗XjbljSqEɟ[XaXSNvHA_Z:L;4Tl@ Po6TuR,d+Eٶp}\/ffQ!Ou{[ʼnq)BΝ/1vzq~~k1__Z{^44i ])H+3z<W8}r[@?Ja?y,@ON tF8KbKGD pHYs  tIME9X~ IDATxo]}s9OjwGk%E"myS'SAcH1Rt X \1 o h7Eq&@]a$V8@&(f6l: u-\y5K-,9$gs3g."9;w=;~{RJ ٳqʕuN7ob_*+G{yy9EDO ח/_.ǎٳi̙3eqq1.]ԥsIJ)W^gϞM~w\tvX.QED X蚲si[yncyy9}3Ο?/ DD,,,;G>]߸ǧ֫% M.R&umPTmLCJ?_r,,,t`4??_־6~صVUb1"9J핱M;o8w///[nugϞrhA[ޱ.&uMʹ.kv͐IcQWwZs,93maa-<_<ҖS/L?d3p^TOp>yK׶vfrg-o׉//v@#i#zXw4,.z6߮SٜE/#7[.U__[=l-`)/Nںg»\͙eIp^|_'5)WM:پ==5!GD>崼\]tN>̐=ctWGrV%):UʲW?^53if&lԲevlwr̙+էr`_tRu3J/wcu쭎(yg~p~R5[xI+ױ;Gq8;|)#NfʟBf}gaaX]OɏNjM^ {3 p3ď?GDSדJfR{wÿ7/~]JIM@Ć~>;UO||#[N*;]sA/ gn.՟Vߚ~9kޝCwoiQ0.xMMM zXϢ\5@w>oǧsjZȹW;]9;eMۻlq?6zO uFqԩ?.Rv0br\}:]>7@ܯ*Pܩ:ThU?~Z벞snS[rTR򞳧y ?:_sʕd\ x2\tJ)}jfNC\utZ))t}:f;uڔqMԹڔzumvn^U< í9iP޻otaN8w\,--8 dx-,,+WN T51!6sOě3'ڷg:*]WQuν{/u7 6+MĄFiçojyyR"|---刈Szoޞ\o[id׻M vFmμpim eqqQ{)Yi ֭D^UR~;W͞e!Xtں(is]rz~#""v-zv{?fJMN].׫#rS2*W6JQuSc+WQ}N'&\E||OYIÝIGîΜmZ4um]FϷ}q/{<"fÛFe1^}xY_oA`fg֥Kx?\ޘ=Rr|ly&]*5k|2׬6K lWp[ŭ7ʉ~oM{FvPT;*ɹM9?٤|YSQ讷xYʨsˮ= ѷ Q0oevwk2ۍr]H [t\>gΜIqsީƹֻ\ՋpSRLuIQ1^n_׬4Gunٞ~?r5X/UWU(mt]配-~IYϟ@!A+_JtisAI%#3ػ]vM8&E.l7<>nǮk\a]wU.FV.51R>Zw["|3yqqSYXXجo>y4wM0ލ"O J[%$ۥ.m]ۺCp}ŷvzoF ͮ > {:ZwMrzw6.U'~f.úv͜զ>4ss"v"|ύS3;;4뿷ؾz<.)8=Rub1H;{B{=+wc[N=HsQ?x^xte 9LHW(kw|Ԍxxf[3ۃ]u&u83HI]n-J!^}$==HlL{ /tZgϦ@L >)HoϤOoYGI&>׃Isqk0o;Az6M&nNw?XMzDDMO[EqIwoKv眸qkq#g3콍 :w{Μ]KU Q?`U%6Uzaͱs0V3g([/+ib Pcxm4 Vxǖt.pgSC""7(;}'JںT̸@kcdWx uMfΉܭm#vl>ljEǮ!ԩS@F?4O/.5icWi/8`sפa]w9e4{ݿJ˥f+ܦAqu%+9q͝2p`lv?~9ч՚V]n|3{T݃3͂\\dQ@،Z[ZuH&\DnfM{9kuo|`ѽ _l? |]res: ;vGdxÈ.D[OڶLw{ETN-yIu_fIg5|9{@.<^SW׎pߡdޖnFY/Uw~{a|h;q7ZOϚ3gΔ+W~V\kRުbugtf뒻H].}XfYe(po贲xjs]Cmқvjiw`7m\tPOƓ 9̹rJ|rT՝ODR7#F(:zQLekq(@O*y~갮k+iqq'D xٳgTUG`#6G/P/'7޵sk'&9=f=Gѣgu~~D+3;\ݞT;>|4n 8ٽ1T3ݍ-.ץv|,xA;[Ѧ̀PjgUyzpv3<|hb(tzg\_5{>&zQo mNk֛RwU>Y~xEUrѵ;xc1C<7oכ>R:nmbֶOEBV56u{4]_TYFP?E]r'u㭷R"|Μ9S>[evy{;$F ᵍnW85]xk6PRVqZ~JC2(oϖ{չLvmii)bo x%Y/|~99brQ;{bЇǎQD]YІ'rR*ϟ{5/Gy1bw.x~\/zRpa|ټRO 7AF]DLw.]no.ʠۉvuT]koVYVJI_җ˗/'6A}<(k{~>ܭ{U426u]}vO4qj]C>o|֭[ŜO053-T";{l(5c`YNXk5a|T>q\]Ҥ~~#"{s卙Tc?oݺu;{'Ϩ!:"bej<ՋUX&<~tݍqڹ~\zb=C>IS݈Ffgaa_x4sCyɤҕQGQ?^53Uz۷>`͘o9s+jǟJVĨU߹׶{Zn6k0s7.)x?fD0.otSZ?@ƻ~-y[GMEπwƛ a|P.߆S竳gϦX/.QIq㏏8ߘ*M*)ʨ& ],[T"":Oٕ+WʩSR3{t_N|(""]*%GIڹ뚔҃m2:o%HZu{H)6#GD)^͚:JެFz¿负W3S{|;??_,O(>iv>颲OhV}#f]7K2j{82ju89oK^m9~˗/d`K)%}K_ӭ[N/DN+śۋ9d޽[o^e^\kCٴWIq믜w m75ba41x OvoNUM2m]UFA|ԿxYq`_䤅\EDܺu?ߟ'N.8~@cSJ{s?ZSoʯ #Ol0KMQ lj)_8sn܈.-]\3ZdRcOs?0XkaJN35RU W#O.3'K)us|bꗿ|Qދ_p㥔u顆NӓxDDs.%ȁǤmۓI9~ s}4^ ('OOrZDn4!dwv9S]KUX_[YkF ໣ ~hHV':N?u*^k @ {7f yJ2ѱ >s_޳r؟ԐH7nW#6FGRsէN>yz,-]\3<x7OKO:G |`H/|蛮ꩩŪjoWGƵՔÓܹsRc$Ruw[89:+!OR~T\/^5:te… 3)닋xX1/vŋ%x!}~R(%?y9=4pwT򪊵0 pucxfW <66ժw:%O.M:yIDAT%+*zsRF |!믿vKk;-JGa;y绮.r⪑ȁaaa!GD8}˃鈈jcRf=zoxҥ.$s?>1:~!xA|egwO7UˠUݹkRZ܌nH?_x^7MWSxo^/]tALGK]"I9%w\5cp S?ѣ{o?o.,,t`_yawɈ-,,o~%}(J;I}vv)_~kG>];y0 >T93w^rE >#?R -_alaͿ8Wud鹇2uM]@ 5Mꈈ˳ͽOK.P Ot]=#j@o~/llMhyJ6Cx뉳GnҦT4U/O~B9>жCgl4J R?T#TU*]ꗤISsCqmP9|7nrl&͗o ʰW㒷)%x?sywiiIM93_7?ɗfRƵiꗿ|Q@lgtnt%J'yL{-wwz:ԎxT~{6vҦ ugn,--)xCk7Ξ}i-SRbmzٿtY1 /=_f:I^9\3U*ՠkFk7{?AD3Wn5/|zD{mE65[Z^t~nGj҉xs`T^L>?7bzu0Jڵ+mv>atRۏoxӟX 2m޹lFw%U%UՋqllnw%+sʕTG"wެt}qmvpF;9ˇu?qp~kjWj{'템UIUh)픒Zra)/|at<aDFλ{_ԥvzavOy^ ս+r#bgزs9Q_QK ED ں[iJ>t 990 ̂KU]_ ]KQ~k^^TBVx&u/ouA }+_ONI);SFA_RuIYFyn[Rץ&Mܻ=`+=5#?(Y-.ykF;b y3|ȧ^6G޸6uu)". ;uDD^2*Shؤ?5LiS԰M7g|ccmCu`tN5"} W[>OǽюJUvYGȰ=T\!O?՛ĵ񈫍2C~~;ư;0_(vRqGLM%U%6[X^^\_?WMaDGBrn*[e*/+OM{˃AS7i]XںS|7qj8(wm]bj}̙38#JV`BvwmlׄN+(Bz3ܜQݞڸ^> kgͤW\@ '0\5iHsq}_=~"ޜ]ַ6ɽ:q`7y?gWǖhƍYXX8J{_^n9CWOě3e*TQr)xtwo\u! Ojt)]͛qui颚K?}2;BMM77͔jT2>3^?x#?v}M'GSJ#vs33q^qkQz˟sgV{?ҰHu0wMJK~o.Rԕ)G/ ך;}//͹||})E}`]5#---?c7sUf:}G`98Vޙ|6y0?ܷevw9CZXXh"څߏ syc0ϖAv#եrisjv[y.ӣ:QM9P"Xx7"=|8|,..['n)4=ݮĸRVyO@8 W#O;qͫXZZi{~ꍮ=;ܽi7ߘK)8NZ OxmR(7/Z SxZD|sU1yo] @Kϟ8m39LJ2:s:̐/]s1s$ץtαf "^~麎7nW.}PkQ'| j)q-nv} ͅ fߏrƯ/0"Sm؏6fnß.`_RCξ_8s&^{Ջ+F e_h:uU=5վXUjutX3R 9΅ fVW'R/^3"r@ }իMJa'<ғ"Ν;W?|rHzf\]Z-@ aR1녥Dymqqq*_S0QJW>w\m@  Ν;WG|q9f==m@ ,N< fMG.NaiiI)VbW/x{pbx[,=)/ GM6T++W\ZZjE!z G:^J)^_\x͈w.`_R']>thjnzzㇻnw_Zf@ ¹GsF|U(6{R>^MM/r6F !/]V{ǢN@ xOVV6MvFi0rΝs)-Rʑһ]]9vС%#$=v֭u]B)Fш({ī)u]ϳW@wΝ;J) "N``ߺ}5"~ï^6/RU)tDOR"]#ݹsFg`~p {̖RJG%#*ݿt4?)p?24R53>Vv׶w 9>_=4 "~g̐#)v&~G=Sz)g@#R^uM/+uXI`}헍@{䣰=կ.p֭[@&GiǍF ;0*M6zFR `o+S=1O13+`}G!qnjg`){mz'kFW Q/W{Է+Q)s}Ν;r!qkc˨y)#G?$i/ۓffηOg@{tرR/Nُ%/;vlɨ GRʗunȑ# F󻣆`}RsΧG[ȑ#drKn:]U#xn+)Mcǎ]5r9`~4"u8]J9sZJY)V۶;vnc?"+IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/000077500000000000000000000000001521174352300256125ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/af.json000066400000000000000000000476441521174352300271120ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} is nie ’n leesbare lêer nie.", "other_page_loaded": "Adres gelaai", "incorrect_password": "Verkeerde wagwoord", "close_on_autostop_timer": "Gestop omdat outo-stoptydhouer afgeloop het", "closing_automatically": "Gestop omdat die oordrag klaar is", "large_filesize": "Waarskuwing: die stuur van ’n groot lêer kan ure duur", "gui_drag_and_drop": "Sleep-en-los lêers en vouers om te begin deel", "gui_add": "Voeg Toe", "gui_add_files": "Voeg Lêers Toe", "gui_add_folder": "Voeg Vouer Toe", "gui_choose_items": "Kies", "gui_share_start_server": "Begin deel", "gui_share_stop_server": "Staak deel", "gui_share_stop_server_autostop_timer": "Staak Deel ({})", "gui_stop_server_autostop_timer_tooltip": "Outo-stoptydhouer eindig om {}", "gui_start_server_autostart_timer_tooltip": "Outo-begintydhouer eindig om {}", "gui_receive_start_server": "Begin Ontvangmodus", "gui_receive_stop_server": "Staak Ontvangmodus", "gui_receive_stop_server_autostop_timer": "Staak Ontvangmodus ({} oorblywend)", "gui_copy_url": "Kopieer Adres", "gui_canceled": "Gekanselleer", "gui_copied_url_title": "OnionShare-adres gekopieer", "gui_copied_url": "OnionShare-adres na knipbord gekopieer", "gui_waiting_to_start": "Geskeduleer om oor {} te begin. Klik om te kanselleer.", "gui_please_wait": "Begin… Klik om te kanselleer.", "gui_quit_warning_quit": "Sluit Af", "zip_progress_bar_format": "Samepersing: %p%", "gui_settings_window_title": "Instellings", "gui_settings_autoupdate_label": "Soek na nuwe weergawe", "gui_settings_autoupdate_option": "Laat my weet wanneer ’n nuwe weergawe beskikbaar is", "gui_settings_autoupdate_timestamp": "Laas gesoek: {}", "gui_settings_autoupdate_timestamp_never": "Nooit", "gui_settings_autoupdate_check_button": "Soek na Nuwe Weergawe", "gui_settings_connection_type_label": "Hoe moet OnionShare aan Tor koppel?", "gui_settings_connection_type_bundled_option": "Gebruik die Tor-weergawe wat by OnionShare ingebou is", "gui_settings_connection_type_automatic_option": "Probeer outo-opstelling met Tor Browser", "gui_settings_connection_type_control_port_option": "Koppel d.m.v. kontrolepoort", "gui_settings_connection_type_socket_file_option": "Koppel d.m.v. soklêer", "gui_settings_connection_type_test_button": "Toets Tor-koppeling", "gui_settings_control_port_label": "Kontrolepoort", "gui_settings_socket_file_label": "Soklêer", "gui_settings_socks_label": "SOCKS-poort", "gui_settings_authenticate_no_auth_option": "Geen magtiging of koekiemagtiging", "gui_settings_authenticate_password_option": "Wagwoord", "gui_settings_password_label": "Wagwoord", "gui_settings_tor_bridges": "Koppel u d.m.v. Tor-brug?", "gui_settings_meek_lite_expensive_warning": "Waarskuwing: Die meek_lite-brûe is baie duur vir die Tor-projek om uit te voer.

    Gebruik dit slegs indien u nie direk aan Tor, d.m.v. obfs4-vervoere, of ander normale brûe kan koppel nie.", "gui_settings_tor_bridges_invalid": "Geen van u toegevoegde brûe werk nie. Gaan dit na of voeg ander toe.", "gui_settings_button_save": "Bewaar", "gui_settings_button_cancel": "Kanselleer", "gui_settings_button_help": "Help", "settings_error_unknown": "Kan nie aan Tor-kontroleur koppel nie omdat u instellings onsinnig is.", "settings_error_automatic": "Kon nie aan die Tor-kontroleur koppel nie. Loop Tor Browser (beskikbaar by torproject.org) in die agtergrond?", "settings_error_socket_port": "Kan nie aan die Tor-kontroleur by {}:{} koppel nie .", "settings_error_socket_file": "Kan nie aan die Tor-kontroleur d.m.v. soklêer {} koppel nie.", "settings_error_auth": "Gekoppel aan {}:{} maar kan nie magtig nie. Miskien is die nie ’n Tor-kontroleur nie?", "settings_error_missing_password": "Gekoppel aan Tor-kontroleur, maar dit vereis ’n wagwoord om te magtig.", "settings_error_unreadable_cookie_file": "Gekoppel aan die Tor-kontroleur, maar wagwoord is dalk verkeerd of u gebruiker mag nie die koekielêer lees nie.", "settings_error_bundled_tor_not_supported": "Die Tor-weergawe wat met OnionShare verskeep word werk nie in ontwikkelaarsmodus op Windows of macOS nie.", "settings_error_bundled_tor_timeout": "Vat te lank om aan Tor te koppel. Miskien is u nie aan die Internet gekoppel nie of u stelselhorlosie is onakkuraat?", "settings_error_bundled_tor_broken": "OnionShare kon nie in die agtergrond aan Tor koppel nie:\n{}", "settings_test_success": "Gekoppel aan die Tor-kontroleur:\n\nTor-weergawe: {}\nSteun efemere uidienste: {}.\nSteun kliëntmagtiging: {}.\nSteun nuwegenerasie-.onionadresse: {}.", "error_tor_protocol_error": "Daar was ’n fout met Tor: {}", "connecting_to_tor": "Koppel tans aan die Tor-netwerk", "update_available": "Nuwe OnionShare is beskikbaar.
    Klik hier om dit te kry.

    U gebruik {} en die nuutste is {}.", "update_error_check_error": "Kon nie na nuwe weergawe soek nie: U is dalk nie aan Tor gekoppel nie, of die OnionShare-webwerf is onbeskikbaar?", "update_error_invalid_latest_version": "Kon nie na nuwe weergawe soek nie: die OnionShare-webwerf meld dat die leeste weergawe die onherkenbare ‘{}’ is…", "update_not_available": "U gebruik die nuutste OnionShare.", "gui_tor_connection_ask": "Open die instellings om Tor-koppeling op te los?", "gui_tor_connection_ask_open_settings": "Ja", "gui_tor_connection_ask_quit": "Sluit Af", "gui_tor_connection_error_settings": "Probeer in die instellings verander hoe OnionShare aan die Tor-netwerk koppel.", "gui_tor_connection_canceled": "Kon nie aan Tor koppel nie.\n\nMaak seker u is aan die Internet gekoppel, open OnionShare dan weer en stel die Tor-koppeling weer op.", "gui_tor_connection_lost": "Ontkoppel van Tor.", "gui_server_started_after_autostop_timer": "Die outo-stoptydhouer het afgeloop voor die bediener kon begin. Skep ’n nuwe deel.", "gui_server_autostop_timer_expired": "Die outo-stoptydhouer het reeds afgeloop. Pas dit aan om te begin deel.", "gui_server_autostart_timer_expired": "Die geskeduleerde tyd is verstreke. Verstel dit om met deel te begin met.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Die outo-stoptyd kan nie dieselfde of vroeër as die outo-begintyd wees nie. Pas dit aan om te begin deel.", "gui_share_url_description": "Enigeen met hierdie OnionShare-adres en privaat sleutel kan u lêers aflaai d.m.v. die Tor Browser: ", "gui_website_url_description": "Enigeen met hierdie OnionShare-adres en privaat sleutel kan u webwerf besoek d.m.v. die Tor Browser: ", "gui_receive_url_description": "Enigeen met hierdie OnionShare-adres kan lêers d.m.v. die Tor Browser na u rekenaar oplaai: ", "gui_url_label_persistent": "Hierdie deel sal nie self stop nie.

    Elke opvolgende deel hergebruik die adres. (Deaktiveer “Gebruik ’n blywende adres” in die instellings om eenmalige adresse te gebruik.)", "gui_url_label_stay_open": "Hierdie deel sal nie self stop nie.", "gui_url_label_onetime": "Hierdie deel sal stop na eerste voltooiing.", "gui_url_label_onetime_and_persistent": "Hierdie deel sal nie self stop nie.

    Elke opvolgende deel sal die adres hergebruik. (Deaktiveer “Gebruik ’n blywende adres” in die instellings om eenmalige adresse te gebruik.)", "gui_status_indicator_share_stopped": "Gestop", "gui_status_indicator_share_working": "Begin…", "gui_status_indicator_share_scheduled": "Geskeduleer…", "gui_status_indicator_share_started": "Deel tans", "gui_status_indicator_receive_stopped": "Gestop", "gui_status_indicator_receive_working": "Begin…", "gui_status_indicator_receive_scheduled": "Geskeduleer…", "gui_status_indicator_receive_started": "Ontvang tans", "gui_file_info": "{} lêers, {}", "gui_file_info_single": "{} lêer, {}", "history_in_progress_tooltip": "{} besig", "history_completed_tooltip": "{} afgehandel", "history_requests_tooltip": "{} webversoeke", "error_cannot_create_data_dir": "Kon nie OnionShare-datavouer skep nie: {}", "gui_receive_mode_warning": "Ontvangsmodus laat ander mense lêers op u rekenaar plaas.

    Sommige van die lêers kan moontlik u rekenaar oorneem indien u dit open. Open slegs lêers van mense wat u vertrou of indien u weet wat u doen.", "gui_settings_language_label": "Voorkeurtaal", "gui_settings_language_changed_notice": "Herbegin OnionShare om na die nuwe taal te verander.", "systray_menu_exit": "Sluit Af", "systray_page_loaded_title": "Bladsy Gelaai", "systray_page_loaded_message": "OnionShare-adres gelaai", "systray_share_started_title": "Deel het Begin", "systray_share_started_message": "Begin lêers aan iemand stuur", "systray_share_completed_title": "Deel is Afgehandel", "systray_share_completed_message": "Lêers klaar gestuur", "systray_share_canceled_title": "Deel is Gekanselleer", "systray_share_canceled_message": "Iemand het ontvangs van u lêers gekanselleer", "systray_receive_started_title": "Ontvang het Begin", "systray_receive_started_message": "Iemand stuur lêers aan u", "gui_all_modes_history": "Geskiedenis", "gui_all_modes_clear_history": "Wis Alles", "gui_all_modes_transfer_started": "Begin {}", "gui_all_modes_transfer_finished_range": "Oorgedra {} - {}", "gui_all_modes_transfer_finished": "Oorgedra {}", "gui_all_modes_transfer_canceled_range": "Gekanselleer {} - {}", "gui_all_modes_transfer_canceled": "Gekanselleer {}", "gui_all_modes_progress_complete": "%p%, {0:s} verstreke.", "gui_all_modes_progress_starting": "{0:s}, %p% (bereken tans)", "gui_all_modes_progress_eta": "{0:s}, Verwagte Aankomstyd: {1:s}, %p%", "gui_share_mode_no_files": "Nog Geen Lêers Gestuur Nie", "gui_share_mode_autostop_timer_waiting": "Verstuur word afgehandel…", "gui_website_mode_no_files": "Nog Geen Webwerf Gedeel Nie", "gui_receive_mode_no_files": "Nog Geen Lêers Ontvang Nie", "gui_receive_mode_autostop_timer_waiting": "Ontvang word afgehandel…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_file_selection_remove_all": "Verwyder alles", "gui_remove": "Verwyder", "gui_chat_stop_server": "Stop kletsbediener", "gui_dragdrop_sandbox_flatpak": "Om die Flatpak-sandput veiliger te maak word sleep-en-los nie gesteun nie. Gebruik eerder die “Voeg lêers toe”- en “Voeg vouer toe”-knoppe om lêers te kies.", "gui_chat_start_server": "Begin kletsbediener", "gui_receive_flatpak_data_dir": "Omdat u OnionShare d.m.v. Flatpak geïnstalleer het, moet u lêers in ’n vouer in ~/OnionShare bewaar.", "gui_copy_client_auth": "Kopieer privaat sleutel", "gui_copied_client_auth_title": "Privaat sleutel gekopieer", "gui_qr_code_dialog_title": "OnionShare QR-kode", "gui_please_wait_no_button": "Begin tans…", "gui_tor_settings_window_title": "Tor-instellings", "gui_settings_bridge_use_checkbox": "Gebruik ’n brug", "gui_settings_bridge_radio_builtin": "Kies ’n ingeboude brug", "gui_settings_bridge_none_radio_option": "Moenie brûe gebruik nie", "gui_settings_bridge_moat_radio_option": "Versoek ’n brug vanaf torproject.org", "gui_settings_bridge_custom_placeholder": "tik adres:poort (een per reël)", "gui_settings_moat_bridges_invalid": "U het nog nie ’n brug vanaf torproject.org versoek nie.", "gui_settings_bridge_custom_radio_option": "Verskaf ’n brug wat u van ’n vertroude bron verneem het", "gui_settings_stop_active_tabs_label": "Daar loop nog dienste in sommige van u oortjies. \nU moet alle dienste stop om u Tor-instellings te verander.", "gui_settings_version_label": "U gebruik OnionShare {}", "gui_settings_help_label": "Benodig u hulp? Sien docs.onionshare.org", "moat_solution_empty_error": "Voer die karakters in die beeld in", "gui_copied_client_auth": "Privaat sleutel na knipbord gekopieer", "gui_show_qr_code": "Toon QR-kode", "gui_qr_label_url_title": "OnionShare-adres", "gui_hide": "Versteek", "gui_qr_label_auth_string_title": "Privaat sleutel", "gui_reveal": "Onthul", "gui_autoconnect_bridge_detect_manual": "Kies handmatig my land vir bruginsttellings", "gui_autoconnect_no_bridge": "Probeer weer sonder brûe", "gui_autoconnect_try_again_without_a_bridge": "Probeer weer sonder brûe", "gui_settings_tor_bridges_label": "Brûe help u verkeer om op die Tor-netwerk te kom indien Tor-toegang versper is. Afhangend van waar u koppel, kan een brug beter as ’n ander werk.", "gui_enable_autoconnect_checkbox": "Koppel outomaties aan Tor", "gui_autoconnect_failed_to_connect_to_tor": "Kon nie aan Tor koppel nie", "gui_autoconnect_description": "OnionShare steun op die vrywilligerbestuurde Tor-netwerk.", "gui_autoconnect_trying_to_connect_to_tor": "Koppel tans aan Tor…", "gui_autoconnect_connection_error_msg": "Maak seker u is aan die Internet gekoppel.", "gui_autoconnect_bridge_setting_options": "Bruginstellings", "gui_autoconnect_start": "Koppel aan Tor", "gui_autoconnect_configure": "Netwerkinstellings", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Sensuur word omseil…", "gui_autoconnect_circumventing_censorship_got_bridges": "Brûe opgerig. Koppel weer aan Tor…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Versoek tans brûe vanaf die Tor-sensuuromseiling-API…", "gui_autoconnect_could_not_connect_to_tor_api": "Kon nie aan die Tor-API koppel nie. Maak seker u is aan die Internet gekoppel voor u weer probeer.", "gui_general_settings_window_title": "Algemeen", "gui_settings_controller_extras_label": "Tor-instellings", "gui_settings_bridge_moat_button": "Versoek ’n nuwe brug", "gui_share_url_public_description": "Enigeen met hierdie OnionShare-adres kan u lêers aflaai d.m.v. die Tor Blaaier: ", "gui_website_url_public_description": "Enigeen met hierdie OnionShare-adres kan u webwerf besoek d.m.v. die Tor Blaaier: ", "gui_receive_url_public_description": "Enigeen met hierdie OnionShare-adres kan u lêers na u rekenaar oplaai d.m.v. die Tor Blaaier: ", "gui_chat_url_description": "Enigeen met hierdie OnionShare-adres en privaat sleutel kan by hierdie kletskamer aansluit d.m.v. die Tor Blaaier: ", "gui_chat_url_public_description": "Enigeen met hierdie OnionShare-adres kan by hierdie kletskamer aansluit d.m.v. die Tor Blaaier: ", "moat_captcha_submit": "Dien in", "moat_captcha_reload": "Herlaai", "moat_bridgedb_error": "Kon nie BridgeDB kontak nie.", "moat_captcha_error": "Verkeerde oplossing. Probeer weer.", "gui_autoconnect_bridge_detect_automatic": "Bepaal my land d.m.v. my IP-adres vir bruginstellings", "gui_autoconnect_circumventing_censorship": "Verbindingsprobleme word opgelos…", "gui_autoconnect_bridge_description": "U kan dalk d.m.v. ’n brug koppel indien u Internetverbinding gesensor word.", "mode_tor_not_connected_label": "OnionShare is nie aan die Tor-netwerk gekoppel nie", "gui_status_indicator_chat_scheduled": "Geskeduleer…", "gui_url_instructions_public_mode": "Stuur die onderstaande OnionShare-adres:", "gui_client_auth_instructions": "Stuur dan die privaat sleutel vir toegang tot u OnionShare-diens:", "gui_status_indicator_chat_stopped": "Gestop", "gui_status_indicator_chat_working": "Begin…", "gui_settings_theme_label": "Tema", "gui_settings_theme_auto": "Outomaties", "gui_settings_theme_light": "Lig", "gui_settings_theme_dark": "Donker", "gui_url_instructions": "Stuur eers die onderstaande OnionShare-adres:", "gui_status_indicator_chat_started": "In gesprek", "gui_open_folder_error": "Kon nie die vouer met xdg-open open nie. Die lêer is hier: {}", "gui_tab_name_share": "Deel", "gui_close_tab_warning_title": "Sluit oortjie?", "gui_main_page_website_button": "Begin huisves", "gui_main_page_chat_button": "Begin klets", "gui_tab_name_receive": "Ontvang", "moat_contact_label": "Kontak tans BridgeDB…", "gui_main_page_receive_button": "Begin ontvang", "gui_tab_name_chat": "Klets", "gui_tab_name_website": "Webwerf", "gui_new_tab_chat_button": "Klets anoniem", "gui_new_tab_website_button": "Huisves ’n webwerf", "gui_new_tab_receive_button": "Ontvang lêers", "gui_new_tab_share_button": "Deel lêers", "gui_new_tab_tooltip": "Open ’n nuwe oortjie", "gui_new_tab": "Nuwe oortjie", "gui_main_page_share_button": "Begin deel", "gui_color_mode_changed_notice": "Herbegin OnionShare om die nuwe kleure te sien.", "moat_captcha_label": "Los die CAPTCHA op om ’n brug te versoek.", "moat_captcha_placeholder": "Voer die karakters wat in die beeld is in", "gui_close_tab_warning_persistent_description": "Sluit permanente oortjie en verloor die onionadres wat dit gebruik?", "mode_settings_website_custom_csp_checkbox": "Stuur ’n pasgemaakte inhoudsekuriteitsbeleidkop", "gui_close_tab_warning_share_description": "Sluit oortjie wat lêers verstuur?", "mode_settings_title_label": "Pasgemaakte titel", "mode_settings_receive_disable_text_checkbox": "Deaktiveer indien van teks", "history_receive_read_message_button": "Lees boodskap", "mode_settings_website_disable_csp_checkbox": "Moenie verstekinhoudsekuriteitsbeleidkop stuur nie (dit laat u webwerf toe om derdepartyhulpbronne te gebruik)", "mode_settings_receive_data_dir_label": "Bewaar lêers na", "mode_settings_receive_data_dir_browse_button": "Blaai", "mode_settings_share_autostop_sharing_checkbox": "Stop deling nadat lêers verstuur is (merk af om aflaai van individuele lêers toe te laat)", "mode_settings_autostop_timer_checkbox": "Stop opniondiens op geskeduleerde tyd", "mode_settings_autostart_timer_checkbox": "Begin oniondiens op geskeduleerde tyd", "mode_settings_public_checkbox": "Dit is ’n openbare OnionShare-diens (deaktiveer privaat sleutel)", "mode_settings_persistent_checkbox": "Open altyd hierdie oortjie wanneer OnionShare begin word", "mode_settings_advanced_toggle_hide": "Versteek gevorderde instellings", "mode_settings_advanced_toggle_show": "Toon gevorderde instellings", "gui_quit_warning_cancel": "Kanselleer", "gui_quit_warning_description": "Sluit alle oortjies af, selfs indien deling in van hulle aktief is?", "gui_close_tab_warning_cancel": "Kanselleer", "gui_close_tab_warning_close": "Regso", "gui_close_tab_warning_website_description": "Sluit oortjie wat ’n webwerf huisves?", "gui_close_tab_warning_receive_description": "Sluit oortjie wat lêers ontvang?", "gui_autoconnect_circumventing_censorship_starting_meek": "Vestig tans meekbrug vir domeinvoorloping…", "gui_server_doesnt_support_stealth": "Jammer, hierdie weergawe van Tor steun nie heimlikheid (kliëntwaarmerking) nie. Probeer ’n nuwer weergawe van Tor of gebruik ‘openbaar’-modus indien dit nie privaat hoef te wees nie.", "mode_settings_receive_disable_files_checkbox": "Deaktiveer oplaai van lêers", "mode_settings_receive_webhook_url_checkbox": "Gebruik webhaak vir kennisgewing", "gui_rendezvous_cleanup": "Wag tans vir Tor-bane om te sluit om te verseker u lêers is oorgedra.\n\nDit kan ’n paar minute duur.", "gui_rendezvous_cleanup_quit_early": "Sluit vroeg af", "error_port_not_available": "OnionShare-poort onbeskikbaar", "gui_quit_warning_title": "Sluit OnionShare af?", "waitress_web_server_error": "Daar was ’n probleem om die webbediener te begin", "gui_close_tab_warning_chat_description": "Sluit die oortjie wat gasheer vir ’n kletsbediener is?" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/am.json000066400000000000000000000024031521174352300271010ustar00rootroot00000000000000{ "gui_settings_button_cancel": "ተወው", "gui_settings_button_help": "መመሪያ", "gui_tor_connection_ask_open_settings": "አዎ", "gui_settings_autoupdate_timestamp_never": "በጭራሽ", "gui_settings_theme_label": "ገጽታ", "gui_settings_window_title": "ቅንብሮች", "gui_quit_warning_cancel": "ሰርዝ", "gui_all_modes_history": "ታሪክ", "gui_add": "አክል", "gui_general_settings_window_title": "ጄኔራል", "gui_close_tab_warning_cancel": "ሰርዝ", "gui_remove": "ያስወግዱ", "gui_settings_language_label": "ቋንቋ", "gui_hide": "ደብቅ", "gui_tab_name_chat": "Chat", "gui_settings_password_label": "የመግቢያ ቃል", "gui_settings_button_save": "ያስቀምጡ", "gui_tab_name_share": "ማጋሪያ", "gui_settings_authenticate_password_option": "የመግቢያ ቃል", "moat_captcha_submit": "Submit", "gui_settings_theme_dark": "ጨለማ", "gui_settings_theme_light": "ብርሃን", "gui_status_indicator_receive_stopped": "ቆምዋል", "gui_status_indicator_chat_stopped": "ቆምዋል", "gui_status_indicator_share_stopped": "ቆምዋል", "gui_main_page_website_button": "ማስተናገድ ይጀምሩ" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ar.json000066400000000000000000000650251521174352300271170ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} ليس ملفا قابلا للقراءة.", "other_page_loaded": "لقد تم تحميل العنوان", "close_on_autostop_timer": "تمّ الإيقاف بسبب بلوغ مؤقت الإيقاف أجله", "closing_automatically": "تم الإيقاف بسبب اكتمال النقل", "large_filesize": "تحذير: إن رفع مشاركة كبيرة قد يستغرق ساعات", "systray_menu_exit": "أنهِ", "gui_drag_and_drop": "اسحب الملفات والأدلة وأفلتها لبدء رفعها لمشاركتها", "gui_add": "أضِف", "gui_choose_items": "اختر", "gui_share_start_server": "ابدأ المشاركة", "gui_share_stop_server": "أوقف المشاركة", "gui_share_stop_server_autostop_timer": "أوقف المشاركة ({})", "gui_receive_start_server": "ابدء وضع الاستلام", "gui_receive_stop_server": "أوقف وضع الاستلام", "gui_receive_stop_server_autostop_timer": "أوقف وضع الاستلام (بقي {})", "gui_copy_url": "نسخ العنوان", "gui_canceled": "تم الإلغاء", "gui_copied_url_title": "لقد تمّ نسخ عنوان OnionShare", "gui_copied_url": "لقد تمّ نسخ عنوان OnionShare إلى الحافظة", "gui_please_wait": "يبدأ… اضغط هنا للإلغاء.", "gui_quit_warning_quit": "اخرجْ", "zip_progress_bar_format": "يجري الضغط: %p%", "gui_settings_window_title": "الإعدادات", "gui_settings_autoupdate_label": "تحقق من وجود إصدار الجديد", "gui_settings_autoupdate_option": "أخبرني عند وجود إصدار أحدث متاح", "gui_settings_autoupdate_timestamp": "تاريخ آخر تحقُّق: {}", "gui_settings_autoupdate_timestamp_never": "أبداً", "gui_settings_autoupdate_check_button": "تحقق من وجود إصدار أحدث", "gui_settings_connection_type_label": "كيف ينبغي أن يتصل OnionShare بشبكة تور؟", "gui_settings_connection_type_bundled_option": "استخدم إصدار تور المُدمَج مع OnionShare", "gui_settings_connection_type_automatic_option": "حاول التهيئة التلقائية باستخدام متصفح تور", "gui_settings_connection_type_control_port_option": "اتصل عبر منفذ التحكم", "gui_settings_connection_type_socket_file_option": "اتصل عبر ملف مقبس (socket file)", "gui_settings_connection_type_test_button": "اختبر الاتصال بشبكة تور", "gui_settings_control_port_label": "منفذ التحكم", "gui_settings_socket_file_label": "ملف المقبس (socket file)", "gui_settings_socks_label": "منفذ SOCKS", "gui_settings_authenticate_no_auth_option": "بدون استيثاق، وبدون الاستيثاق بملفات تعريف الارتباط", "gui_settings_authenticate_password_option": "بكلمة السر", "gui_settings_password_label": "كلمة السر", "gui_settings_tor_bridges": "هل تريد الاتصال باستخدام جسر تور؟", "gui_settings_meek_lite_expensive_warning": "تنبيه: يكلّف استخدام الجسور meek-azure مشروع تور للغاية لأجل تشغيلها.

    استخدمها عند الضرورة فقط عند تعذُّر الاتصال إما بِتور مباشرة، وإما عبر وسائل نقل obfs4 وإما عبر الجسور الاعتيادية.", "gui_settings_tor_bridges_invalid": "لا تعمل أي من الجسور التي أضفتها. قم بتفحصها جيدا أو أضف أخرى.", "gui_settings_button_save": "احفظ", "gui_settings_button_cancel": "ألغِ", "gui_settings_button_help": "المساعدة", "settings_error_unknown": "تعذّر الاتصال بمتحكّم تور لأن إعداداتك غير صحيحة.", "settings_error_automatic": "تعذّر الاتصال بمتحكم تور. هل متصفح تور (متاح في torproject.org) يعمل في الخلفية؟", "settings_error_socket_port": "تعذّر الاتصال بمتحكّم تور في {}:{}.", "settings_error_socket_file": "تعذّر الاتصال بمتحكّم تور عبر ملف المقبس {}.", "settings_error_auth": "تم الاتّصال مع {}:{} لكن تعذّر الاستيثاق. ربما هو ليس متحكّم تور؟", "settings_error_missing_password": "تم الاتصال بمتحكّم تور لكنه يطلب كلمة السر للاستيثاق.", "settings_error_unreadable_cookie_file": "تم الاتصال بمتحكّم تور. ربما كلمة السر غير صحيحة أو أن المستخدم غير مسموح له بقراءة ملف تعريف الارتباط (cookie file).", "settings_error_bundled_tor_not_supported": "استعمال إصدار تور المُدمَج في OnionShare لا يشتغل خلال ’وضع التطوير‘ في ويندوز ولا نظام ماكْ.", "settings_error_bundled_tor_timeout": "استغرق الاتصال بِتور وقتا أطول من اللازم. ربما أنك غير متصل بالانترنت، أو أن ساعة النظام غير مضبوطة ؟", "settings_error_bundled_tor_broken": "تعذّر على OnionShare الاتصال بِتور:\n{}", "settings_test_success": "لقد تم الاتصال بمتحكّم تور.\n\nإصدار تور: {}\nيدعم خدمات البصلة الزائلة: {}.\nيدعم استيثاق العميل: {}.\nيدعم الجيل الأحدث من العناوين البصلية‬: {}.", "error_tor_protocol_error": "لقد كان هناك خطأ مغ تور: {}", "connecting_to_tor": "يجري الاتصال بشبكة تور", "update_available": "يوجد إصدار أحدث من OnionShare. يمكنك تنزيله الآن.

    إصدارك الحالي {} والإصدار الأحدث {}.", "update_error_check_error": "لقد تعذر التحقق من وجود إصدار أحدث: ربما لست متصلًا بِتور، أو أن موقع OnionShare ليس متصلا؟", "update_error_invalid_latest_version": "لقد تعذّر التحقق من وجود إصدار أحدث: موقع OnionShare يقول إن أحدث إصدار هو إصدار '{}' غير مُتعرَّف عليه…", "update_not_available": "أنت تشغّل أحدث إصدار لـ OnionShare.", "gui_tor_connection_ask": "أتريد فتح الإعدادات لضبط الاتّصال بتور؟", "gui_tor_connection_ask_open_settings": "نعم", "gui_tor_connection_ask_quit": "أنهِ", "gui_tor_connection_error_settings": "جرّب تغيير كيفية اتصال OnionShare بشبكة تور في الإعدادات.", "gui_tor_connection_canceled": "لقد تعذّر الاتصال بِتور.\n\nتحقّق من اتصالك بالانترنت ثم أعد تشغيل OnionShare وقم بإعداد اتصاله بِتور.", "gui_tor_connection_lost": "لقد قُطع الاتصل بشبكة تور.", "gui_server_started_after_autostop_timer": "لقد بلغ مؤقت الإيقاف التلقائي أجله قبل بدء الخادم. يُرجى إنشاء مشاركة جديدة.", "gui_server_autostop_timer_expired": "لقد بلغ مؤقت الإيقاف التلقائي أجله. يُرجى ضبطه للبدء بالمشاركة.", "gui_share_url_description": "إن أي شخص لديه عنوان OnionShare هذا سيكون بوسعه تنزيل تلك الملفات باستخدام متصفح تور: ", "gui_receive_url_description": "يمكن لأيّ شخص لديه عنوان OnionShare هذا رفع الملفات إلى حاسوبك باستعمال متصفح تور : ", "gui_url_label_persistent": "لن تتوقف هذه المشاركة تلقائيًا.

    كل مشاركة لاحقة تعيد استخدام نفس العنوان. (لاستخدام عناوين ذات الاستعمال الوحيد، عطّل خيار ”افتح علامة التبويب هذه دائمًا عند بدء تشغيل OnionShare“ في الإعدادات.)", "gui_url_label_stay_open": "لن تتوقف هذه المشاركة تلقائيا.", "gui_url_label_onetime": "ستتوقف هذه المشاركة تلقائيا بعد إتمام أول تنزيل.", "gui_url_label_onetime_and_persistent": "لن تتوقف هذه المشاركة تلقائيًا.

    كل مشاركة لاحقة ستعيد استخدام نفس العنوان. (لاستخدام عناوين ذات الاستعمال الوحيد، عطّل خيار ”افتح علامة التبويب هذه دائمًا عند بدء تشغيل OnionShare“ في الإعدادات.)", "gui_status_indicator_share_stopped": "متوقف", "gui_status_indicator_share_working": "يبدأ…", "gui_status_indicator_share_started": "تجري المشاركة", "gui_status_indicator_receive_stopped": "متوقف", "gui_status_indicator_receive_working": "يبدأ…", "gui_status_indicator_receive_started": "يجري الاستلام", "gui_file_info": "{} ملفات، {}", "gui_file_info_single": "{} ملف، {}", "history_in_progress_tooltip": "تجري معالجة {}", "history_completed_tooltip": "تمّت معالجة {}", "gui_receive_mode_warning": "يسمح وضع الاستلام للآخرين برفع الملفات إلى حاسوبك.

    بعض الملفات قد تكون قادرة على السيطرة على نظامك إذا فتحتها. لا تفتح ملفات إلا من أشخاص تثق بهم، أو إن كنت متأكدا مما تفعل.", "systray_page_loaded_title": "تم تحميل الصفحة", "gui_settings_language_label": "اللغة", "gui_settings_language_changed_notice": "أعد تشغيل OnionShare للتغيير إلى اللغة الجديدة.", "gui_add_files": "أضف ملفات", "gui_add_folder": "أضف مُجلداً", "systray_page_loaded_message": "تم تحميل عنوان OnionShare", "systray_share_started_title": "بدأت المشاركة", "systray_share_started_message": "بدأ إرسال الملفات إلى شخص ما", "systray_share_completed_title": "اكتملت المشاركة", "systray_share_completed_message": "انتهى إرسال الملفات", "systray_share_canceled_title": "تمّ إلغاء المشاركة", "systray_share_canceled_message": "لقد ألغى شخص ما استلام ملفاتك", "systray_receive_started_title": "بدأ الاستلام", "systray_receive_started_message": "شخص ما يرسل إليك ملفات", "gui_all_modes_history": "التأريخ", "gui_all_modes_clear_history": "محو الكل", "gui_share_mode_no_files": "لم تُرسَل أي ملفات بعد", "gui_share_mode_autostop_timer_waiting": "في انتظار إنهاء الإرسال…", "gui_receive_mode_no_files": "لم تُستلَم أي ملفات بعد", "gui_receive_mode_autostop_timer_waiting": "بجري إنهاء الاستلام …", "gui_stop_server_autostop_timer_tooltip": "مؤقت الإيقاف التلقائي ينتهي في {}", "gui_start_server_autostart_timer_tooltip": "مؤقت البدء التلقائي ينتهي في {}", "gui_waiting_to_start": "مُجدولة للبدء في {}. اضغط هنا للإلغاء.", "gui_server_autostart_timer_expired": "انتهى الوقت المُجدول للمشاركة. عدلّه للبدء بالمشاركة.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "لا يمكن أن يكون وقت الإيقاف التلقائي قبل في نفس وقت البدء. يُرجى ضبطه للبدء بالمشاركة.", "gui_status_indicator_share_scheduled": "مُجدوَل…", "gui_status_indicator_receive_scheduled": "مُجدوَل…", "error_cannot_create_data_dir": "تعذَّر إنشاء مجلد بيانات OnionShare: {}", "gui_all_modes_transfer_started": "بدأ في {}", "gui_all_modes_transfer_finished_range": "تمّ نقل {} - {}", "gui_all_modes_transfer_finished": "تمّ نقل {}", "gui_all_modes_transfer_canceled_range": "تمّ إلغاء {} - {}", "gui_all_modes_transfer_canceled": "تمّ إلغاء {}", "gui_all_modes_progress_complete": "%p%، الوقت المنقضي {0:s}.", "gui_all_modes_progress_starting": "(يجري الحساب) {0:s}، %p%", "gui_all_modes_progress_eta": "{0:s}، الزمن الباقي، المُقدَّر: {1:s}، %p%", "days_first_letter": "يوم", "hours_first_letter": "ساعة", "minutes_first_letter": "دقيقة", "seconds_first_letter": "ثانية", "gui_website_url_description": "يمكن لأى شخص لديه عنوان OnionsShare هذا والمفتاح الخاصزيارة موقعك باستخدام متصفح تور: ", "gui_website_mode_no_files": "لا يوجد موقع الوِبْ تمت مشاركته حتى الآن", "incorrect_password": "كلمة السر غير صحيحة", "history_requests_tooltip": "{} طلب من الشبكة العنكبوتية", "gui_receive_flatpak_data_dir": "لأنك قد ثبّتت OnionShare باستخدام Flatpak، يجب عليك حفظ الملفات داخل مُجلد في المسار ‎~/OnionShare.", "gui_qr_code_dialog_title": "رمز OnionShare المربع", "gui_show_qr_code": "اظهر الرمز المربع", "gui_chat_stop_server": "إيقاف خادم المحادثة", "gui_chat_start_server": "ابدأ خادم المحادثة", "gui_file_selection_remove_all": "إزالة الكُل", "gui_remove": "إزالة", "error_port_not_available": "منفذ OnionShare غير متاح", "gui_rendezvous_cleanup_quit_early": "غادِر مبكرا", "gui_rendezvous_cleanup": "في انتظار إغلاق مسارات تور للتأكد من نقل ملفاتك.\n\nقد يستغرق ذلك بضع دقائق.", "mode_settings_website_disable_csp_checkbox": "لا ترسل ترويسة مخصصة لسياسة أمان المحتوى Content-Security-Policy header (يسمح لموقعك على الشبكة العنكبوتية باستخدام موارد الجهات الخارجية)", "mode_settings_receive_data_dir_browse_button": "تصفح", "mode_settings_receive_data_dir_label": "حفظ الملفات في", "mode_settings_share_autostop_sharing_checkbox": "إيقاف المشاركة بعد إرسال الملفات (قم بإلغاء التحديد للسماح بتنزيل الملفات فرديا)", "mode_settings_autostop_timer_checkbox": "إيقاف الخدمة‬ البصلية في الميعاد المُجدوَل", "mode_settings_autostart_timer_checkbox": "بدء الخدمة‬ البصلية في الميعاد المُجدوَل", "mode_settings_public_checkbox": "هذه هي خدمة OnionShare خاصة بالعامة (تُعطّل المفتاح الخاص)", "mode_settings_persistent_checkbox": "افتح علامة التبويب هذه دائمًا عند بدء تشغيل OnionShare (سيبقى عنوان البصل كما هو)", "mode_settings_advanced_toggle_hide": "إخفاء الإعدادات المتقدمة", "mode_settings_advanced_toggle_show": "عرض الإعدادات المتقدمة", "gui_quit_warning_cancel": "ألغِ", "gui_quit_warning_description": "هل تريد الخروج وإغلاق جميع علامات التبويب، على الرغم من أن المشاركة نشطة في بعضها؟", "gui_quit_warning_title": "هل تريد الخروج من OnionShare؟", "gui_close_tab_warning_cancel": "إلغاء", "gui_close_tab_warning_close": "موافق", "gui_close_tab_warning_website_description": "إغلاق علامة التبويب التي تستضيف موقع الوِبْ؟", "gui_close_tab_warning_receive_description": "إغلاق علامة التبويب التي تتلقى الملفات؟", "gui_close_tab_warning_share_description": "إغلاق علامة التبويب التي ترسل الملفات؟", "gui_close_tab_warning_persistent_description": "إغلاق علامة التبويب الدائمة وفقدان العنوان البصلي الذي تستخدمه؟", "gui_close_tab_warning_title": "هل تريد إغلاق علامة التبويب؟", "gui_tab_name_chat": "محادثة", "gui_tab_name_website": "موقع الوِبْ", "gui_tab_name_receive": "استلام", "gui_tab_name_share": "مشاركة", "gui_main_page_chat_button": "بدء المحادثة", "gui_main_page_website_button": "بدء الاستضافة", "gui_main_page_receive_button": "بدء الاستلام", "gui_main_page_share_button": "بدء المشاركة", "gui_new_tab_chat_button": "المحادثة بكل مجهولية", "gui_new_tab_website_button": "استضافة موقع الوِبْ", "gui_new_tab_receive_button": "استلام الملفات", "gui_new_tab_share_button": "مشاركة الملفات", "gui_new_tab_tooltip": "افتح علامة تبويب جديدة", "gui_new_tab": "علامة تبويب جديد", "gui_color_mode_changed_notice": "يُرجى إعادة تشغيل OnionShare من أجل رؤية الألوان الجديدة.", "gui_open_folder_error": "تعذر فتح المجلد بواسطة xdg-open. الملف موجود هنا: {}", "gui_chat_url_description": "يمكن لأي شخص لديه عنوان OnionShare هذا والمفتاح الخاص الانضمام إلى غرفة المحادثة هذه باستخدام متصفح تور", "history_receive_read_message_button": "اقرأ الرسالة", "mode_settings_receive_webhook_url_checkbox": "استخدم مشبك الوِبْ (webhook) التلقائي للإشعارات", "mode_settings_receive_disable_files_checkbox": "تعطيل رفع الملفات", "mode_settings_receive_disable_text_checkbox": "تعطيل إرسال النص", "mode_settings_title_label": "العنوان المخصص", "gui_settings_theme_dark": "داكن", "gui_settings_theme_light": "فاتح", "gui_settings_theme_auto": "تلقائي", "gui_settings_theme_label": "المظهر", "gui_status_indicator_chat_started": "يكتب", "gui_status_indicator_chat_scheduled": "مُجدوَل…", "gui_status_indicator_chat_working": "يبدأ…", "gui_status_indicator_chat_stopped": "متوقف", "gui_client_auth_instructions": "بعد ذلك، أرسل المفتاح الخاص للسماح بالوصول إلى خدمة OnionShare الخاصة بك:", "gui_url_instructions_public_mode": "أرسل عنوان OnionShare أدناه:", "gui_url_instructions": "أولا، أرسل عنوان OnionShare أدناه:", "gui_please_wait_no_button": "يبدأ…", "gui_hide": "إخفاء", "gui_qr_label_auth_string_title": "المفتاح الخاص", "gui_qr_label_url_title": "عنوان OnionShare", "gui_copied_client_auth": "لقد تم نسخ المفتاح الخاص إلى الحافظة", "gui_copy_client_auth": "نسخ المفتاح الخاص", "gui_tor_settings_window_title": "إعدادات تور", "gui_settings_controller_extras_label": "إعدادات تور", "gui_settings_bridge_use_checkbox": "استخدم جسراً", "gui_settings_bridge_radio_builtin": "حدد جسرًا مُدمَجا", "gui_settings_bridge_none_radio_option": "لا تستخدم الجسور", "gui_settings_bridge_moat_radio_option": "طلب جسر من torproject.org", "gui_settings_bridge_moat_button": "طلب جسر جديد", "gui_settings_bridge_custom_placeholder": "اكتب العنوان: المنفذ (واحد لكل سطر)", "gui_settings_moat_bridges_invalid": "لم تطلب جسرا من torproject.org بعد.", "gui_settings_version_label": "إنك تستخدم OnionShare {}", "moat_contact_label": "يجري ربط الاتصال بـ BridgeDB …", "moat_captcha_placeholder": "أدخل الأحرف الموجودة في الصورة", "moat_captcha_submit": "أرسل", "moat_captcha_reload": "إعادة التحميل", "moat_bridgedb_error": "تعذر الاتصال بـ BridgeDB.", "moat_captcha_error": "إجراء خاطئ. حاول مرة اخرى.", "gui_reveal": "كشف", "gui_copied_client_auth_title": "لقد تم نسخ المفتاح الخاص", "mode_tor_not_connected_label": "إن OnionShare غير متصل بشبكة تور", "gui_settings_help_label": "أأنت بحاجة إلى المساعدة؟ يُرجى تصفح docs.onionshare.org", "moat_solution_empty_error": "أدخل الأحرف الموجودة في الصورة", "gui_settings_bridge_custom_radio_option": "وفر جسرا تعرّفتَ عليه من مصدر موثوق", "moat_captcha_label": "قم بحل كلمة التحقق CAPTCHA لطلب الجسر.", "gui_autoconnect_no_bridge": "حاول مرة أخرى بدون جسور", "gui_autoconnect_configure": "إعدادات الشبكة", "gui_autoconnect_start": "الاتصال بِتور", "gui_autoconnect_bridge_setting_options": "إعدادات الجسر", "gui_autoconnect_try_again_without_a_bridge": "حاول مرة أخرى بدون جسور", "waitress_web_server_error": "لقد حدثت مشكلة في بدء تشغيل خادم الوِبْ", "gui_server_doesnt_support_stealth": "آسف، لا يدعم إصدار تور الحالي التخفي (الاستيثاق من العميل). يُرجى المحاولة باستخدام إصدار أحدث من تور ، أو استخدام الوضع ”العمومي“ إذا لا تستلزم الضرورة أن تكون خاصة.", "gui_share_url_public_description": "يمكن لأي شخص لديه عنوان OnionShare هذاتنزيلملفاتك باستخداممتصفح تور: ", "gui_website_url_public_description": "يمكن لأي شخص لديه عنوان OnionShare هذازيارة موقعك الإلكتروني باستخدام متصفح تور:‏ ", "gui_chat_url_public_description": "يمكن لأي شخص لديه عنوان OnionShare هذا الانضمام إلى غرفة المحادثة هذه باستخدام متصفح تور: ", "gui_autoconnect_bridge_detect_automatic": "اكتشف بلدي من عنوان IP الخاص بي لأجل إعدادات الجسر", "gui_autoconnect_circumventing_censorship_requesting_bridges": "يجري طلب الجسور من واجهة برمجة تطبيقات تجاوز رقابة لِتور…", "gui_autoconnect_circumventing_censorship_got_bridges": "لقد تم إنشاء الجسور. تجري إعادة الاتصال بِتور …", "gui_autoconnect_could_not_connect_to_tor_api": "لقد تعذر الاتصال بواجهة برمجة تطبيقات تور. تأكد من أنك متصل بالانترنت قبل المحاولة مرة أخرى.", "gui_dragdrop_sandbox_flatpak": "لجعل صندوق اختبارات فْلاتْباكْ (sandbox Flatpak) أكثر أمانا، لا يتم دعم السحب والإفلات. استخدم الزرين ”إضافة ملفات“ و ”إضافة مجلد“ لتحديد الملفات بدلا من ذلك.", "gui_autoconnect_description": "يعتمد OnionShare على شبكة تور التي يديرها المتطوعون.", "gui_enable_autoconnect_checkbox": "الاتصال التلقائي بِتور", "gui_autoconnect_failed_to_connect_to_tor": "تعذر الاتصال بِتور", "gui_autoconnect_trying_to_connect_to_tor": "يجري الاتصال بِتور…", "gui_autoconnect_connection_error_msg": "تأكد من أنك متصل بالانترنت.", "gui_general_settings_window_title": "عام", "gui_settings_tor_bridges_label": "تساعد الجسور حركة مرورك على الدخول إلى شبكة تور إذا تم حظر الوصول إلى تور. اعتمادا على المكان الذي تتصل منه، قد يعمل أحد الجسور بشكل أفضل من الآخر.", "gui_close_tab_warning_chat_description": "إغلاق علامة التبويب التي تستضيف خادم المحادثات؟", "gui_autoconnect_bridge_description": "قد تتمكن من الاتصال باستخدام جسر إذا كان اتصالك بالانترنت خاضعا للرقابة.", "gui_autoconnect_bridge_detect_manual": "حدد بلدي لأجل إعدادات الجسر يدويا", "gui_autoconnect_circumventing_censorship": "يجري حل مشكلات الاتصال …", "gui_autoconnect_circumventing_censorship_starting_circumvention": "تجاوُز الرقابة …", "gui_autoconnect_circumventing_censorship_starting_meek": "يجري إنشاء جسر meek لواجهات النطاقات (domain-fronting)…", "gui_settings_stop_active_tabs_label": "هناك خدمات تعمل في بعض علامات تبويبك.\nيجب عليك إيقاف جميع الخدمات لتغيير إعداداتك في تور.", "mode_settings_website_custom_csp_checkbox": "أرسل ترويسة مخصصة لسياسة أمان المحتوى (Content-Security-Policy header)", "gui_receive_url_public_description": "يمكن لأي شخص لديه عنوان OnionShare هذا رفع الملفات إلى حاسوبك باستخدام متصفح تور : ‏", "gui_chat_mode_explainer": "وضع المحادثة يتيح لك المحادثة بشكل تفاعلي مع الآخرين، في متصفح تور.

    لا يتم تخزين سجل المحادثة في OnionShare. سوف يختفي سجل المحادثة عند إغلاق متصفح تور.", "mode_settings_persistent_autostart_on_launch_checkbox": "ابدأ خدمة البصل هذه تلقائيًا عند بدء تشغيل Onionshare", "gui_settings_license_label": "تم ترخيص Onionshare بموجب GPL v3.
    يمكن الاطلاع على تراخيص الطرف الثالث هنا:
    https://github.com/onionshare/onionshare/tree/main/licenses", "error_generic": "كان هناك خطأ غير متوقع مع OnionShare:\n{}" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ay.json000066400000000000000000000005151521174352300271170ustar00rootroot00000000000000{ "gui_close_tab_warning_cancel": "Suyt'ayaña", "gui_quit_warning_cancel": "Suyt'ayaña", "gui_settings_button_save": "Imaña", "gui_settings_window_title": "Jak'ankiri", "gui_general_settings_window_title": "Taqpacha", "gui_settings_button_cancel": "Suyt'ayaña", "gui_settings_language_label": "Aru" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/be.json000066400000000000000000000675571521174352300271170ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} не з'яўляецца файлам, які чытаецца.", "other_page_loaded": "Адрас загружаны", "incorrect_password": "Няправільны пароль", "close_on_autostop_timer": "Спынена, таму што скончыўся таймер аўтаматычнага прыпынку", "closing_automatically": "Спынена, бо перадача завершана", "large_filesize": "Заўвага: адпраўка вялікага аб'ёму можа заняць некалькі гадзін", "gui_drag_and_drop": "Перацягніце файлы і папкі для адпраўкі", "gui_add": "Дадаць", "gui_add_files": "Дадаць Файлы", "gui_add_folder": "Дадаць Папку", "gui_remove": "Выдаліць", "gui_dragdrop_sandbox_flatpak": "Каб зрабіць пясочніцу Flatpak больш бяспечнай, перацягванне файлаў не падтрымліваецца. Замест гэтага выкарыстоўвайце кнопкі «Дадаць файлы» і «Дадаць тэчку», каб выбраць файлы.", "gui_file_selection_remove_all": "Выдаліць усе", "gui_choose_items": "Абіраць", "gui_share_start_server": "Пачаць адпраўку", "gui_share_stop_server": "Спыніць адпраўку", "gui_share_stop_server_autostop_timer": "Спыніць адпраўку ({})", "gui_chat_start_server": "Запусціце сервер чата", "gui_chat_stop_server": "Спыніць сервер чата", "gui_stop_server_autostop_timer_tooltip": "Таймер аўтаспыну заканчваецца ў {}", "gui_start_server_autostart_timer_tooltip": "Таймер аўтазапуску з'яўляецца ў {}", "gui_receive_start_server": "Запусціць рэжым атрымання", "gui_receive_stop_server": "Спыніць рэжым атрымання", "gui_receive_stop_server_autostop_timer": "Спыніць рэжым атрымання (засталося {})", "gui_receive_flatpak_data_dir": "Паколькі вы ўсталявалі OnionShare з дапамогай Flatpak, вы павінны захоўваць файлы ў тэчцы ~/OnionShare.", "gui_copy_url": "Скапіраваць адрас", "gui_copy_client_auth": "Скапіраваць прыватны ключ", "gui_canceled": "Адменена", "gui_copied_url_title": "Адрас OnionShare скапіраваны", "gui_copied_url": "Адрас OnionShare быў скапіраваны ў буфер абмену", "gui_copied_client_auth_title": "Скапіяваны прыватны ключ", "gui_copied_client_auth": "Прыватны ключ скапіяваны ў буфер абмену", "gui_show_qr_code": "Паказаць QR-код", "gui_qr_code_dialog_title": "QR-код OnionShare", "gui_qr_label_url_title": "Адрас OnionShare", "gui_qr_label_auth_string_title": "Прыватны ключ", "gui_reveal": "Паказаць", "gui_hide": "Схаваць", "gui_waiting_to_start": "Пачатак запланаваны на {}. Націсніце, каб адмяніць.", "gui_please_wait_no_button": "Запуск…", "gui_please_wait": "Пачынаецца... Націсніце, каб адмяніць.", "zip_progress_bar_format": "Сціск: %p%", "gui_tor_settings_window_title": "Налады Tor", "gui_autoconnect_description": "OnionShare абапіраецца на сетку Tor, кіраваную добраахвотнікамі.", "gui_enable_autoconnect_checkbox": "Аўтаматычнае падключэнне да Tor", "gui_autoconnect_failed_to_connect_to_tor": "Немагчыма падключыцца да Tor", "gui_autoconnect_trying_to_connect_to_tor": "Падключэнне да Tor…", "gui_autoconnect_connection_error_msg": "Пераканайцеся, што вы падключаны да Інтэрнэту.", "gui_autoconnect_bridge_description": "Калі ваша інтэрнэт-злучэнне падвяргаецца цэнзуры, вы можаце падключыцца з дапамогай маста.", "gui_autoconnect_bridge_detect_automatic": "Вызначыце маю краіну па маім IP-адрасу для налад маста", "gui_autoconnect_bridge_detect_manual": "Абярыце маю краіну для налад моста ўручную", "gui_autoconnect_bridge_setting_options": "Настройка маста", "gui_autoconnect_start": "Падключыцца да Tor", "gui_autoconnect_configure": "Налады сеткі", "gui_autoconnect_no_bridge": "Паўтарыце спробу без моста", "gui_autoconnect_try_again_without_a_bridge": "Паўтарыце спробу без моста", "gui_autoconnect_circumventing_censorship": "Вырашэнне праблем з падключэннем…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "У абыход цэнзуры…", "gui_autoconnect_circumventing_censorship_starting_meek": "Стварэнне meek bridge для даменнага фронту…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Запыт мастоў ад API абыходу цэнзуры Tor…", "gui_autoconnect_circumventing_censorship_got_bridges": "Масты ўстаноўлены. Уз'яднанне з Тор…", "gui_autoconnect_could_not_connect_to_tor_api": "Не ўдалося падключыцца да API Tor. Пераканайцеся, што вы падключаны да Інтэрнэту, перш чым паўтарыць спробу.", "gui_settings_window_title": "Налады", "gui_general_settings_window_title": "Агульныя", "gui_settings_autoupdate_label": "Праверыць наяўнасць абнаўленняў", "gui_settings_autoupdate_option": "Паведамляць аб наяўнасці новай версіі", "gui_settings_autoupdate_timestamp": "Папярэдняя праверка: {}", "gui_settings_autoupdate_timestamp_never": "Ніколі", "gui_settings_autoupdate_check_button": "Праверыць наяўнасць абнаўленняў", "gui_settings_connection_type_label": "Як OnionShare павінен злучацца з Tor?", "gui_settings_connection_type_bundled_option": "Выкарыстоўвайце версію Tor, убудаваную ў OnionShare", "gui_settings_connection_type_automatic_option": "Спроба аўтаканфігурацыі з дапамогай Tor Browser", "gui_settings_controller_extras_label": "Налады Tor", "gui_settings_connection_type_control_port_option": "Падключэнне з дапамогай порта кіравання", "gui_settings_connection_type_socket_file_option": "Падключыцеся з дапамогай файла сокета", "gui_settings_connection_type_test_button": "Тэставае падключэнне да Tor", "gui_settings_control_port_label": "Порт кіравання", "gui_settings_socket_file_label": "Файл сокета", "gui_settings_socks_label": "Порт SOCKS", "gui_settings_authenticate_no_auth_option": "Няма аўтэнтыфікацыі ці аўтэнтыфікацыя з дапамогай cookie", "gui_settings_authenticate_password_option": "Пароль", "gui_settings_password_label": "Пароль", "gui_settings_tor_bridges": "Падключыцца з дапамогай моста Tor?", "gui_settings_tor_bridges_label": "Масты дапамагаюць вашаму трафіку падключыцца да сеткі Tor, калі доступ да Tor заблакіраваны. У залежнасці ад таго, адкуль вы падключаецеся, адзін мост можа працаваць лепш, чым іншы.", "gui_settings_bridge_use_checkbox": "Выкарыстоўвайце мост", "gui_settings_bridge_radio_builtin": "Выберыце ўбудаваны мост", "gui_settings_bridge_none_radio_option": "Не выкарыстоўвайце масты", "gui_settings_meek_lite_expensive_warning": "Увага: масты meek-azure складаныя для праекту Tor.

    Выкарыстоўвайце іх толькі ў тым выпадку, калі вы не можаце падключыцца да Tor напрамую, праз транспарт obfs4 або іншыя агульныя масты.", "gui_settings_bridge_moat_radio_option": "Запытайце мост на torproject.org", "gui_settings_bridge_moat_button": "Запытаць новы мост", "gui_settings_bridge_custom_radio_option": "Укажыце мост, пра які вы даведаліся з надзейнай крыніцы", "gui_settings_bridge_custom_placeholder": "тып адраса:порт (па адным на радок)", "gui_settings_moat_bridges_invalid": "Вы яшчэ не пыталіся мост на torproject.org.", "gui_settings_tor_bridges_invalid": "Ніводны з дададзеных мастоў не працуе. Пераправерце іх ці дадайце іншыя.", "gui_settings_stop_active_tabs_label": "На некаторых вашых укладках запушчаны службы.\nВы павінны спыніць усе службы, каб змяніць наладкі Tor.", "gui_settings_button_save": "Захаваць", "gui_settings_button_cancel": "Адмяніць", "gui_settings_button_help": "Даведка", "gui_settings_version_label": "Вы карыстаецеся OnionShare {}", "gui_settings_help_label": "Патрэбна дапамога? Праверце docs.onionshare.org", "settings_test_success": "Падключаны да кантролера Tor.\n\nВерсія Tor: {}\nПадтрымка эфемерных службаў onion: {}.\nПадтрымка аўтэнтыфікацыі кліента: {}.\nПадтрымка адрасоў .onion наступнага пакалення: {}.", "connecting_to_tor": "Падключэнне да сеткі Tor", "update_available": "Выпушчаны новы OnionShare. Націсніце тут, каб атрымаць яго.

    Ваша версія - {}, а апошняя версія - {}.", "update_error_invalid_latest_version": "Не атрымалася праверыць наяўнасць новай версіі: Сайт OnionShare паведамляе, што апошняя версія - гэта непазнавальны '{}'…", "update_error_check_error": "Не атрымалася праверыць наяўнасць новай версіі: Магчыма, вы не падключыліся да Tor, ці сайт OnionShare не працуе?", "update_not_available": "У вас апошняя версія OnionShare.", "gui_tor_connection_ask": "Адкрыць налады, каб праверыць злучэнне з Tor?", "gui_tor_connection_ask_open_settings": "Так", "gui_tor_connection_ask_quit": "Выйсці", "gui_tor_connection_error_settings": "Паспрабуйце змяніць спосаб падключэння OnionShare да сеткі Tor у наладах.", "gui_tor_connection_canceled": "Не ўдалося падключыцца да Tor.\n\nПераканайцеся, што вы падключаны да Інтэрнэту, зноў адкрыйце OnionShare і наладзьце злучэнне Tor.", "gui_tor_connection_lost": "Адключыўся ад Tor.", "gui_server_started_after_autostop_timer": "Таймер аўтаспыну супаў з пачаткам працы сервера. Пачаць адпраўку зноў.", "gui_server_autostop_timer_expired": "Час аўтаспыну супаў. Наладзьце яго, каб пачаць адпраўку.", "gui_server_autostart_timer_expired": "Запланаваны час супаў. Абнавіце яго, каб пачаць адпраўку.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Час аўтаспынення не можа быць такім жа або больш раннім, чым час аўтазапуску. Калі ласка, адрэгулюйце яго для пачатку сумеснага выкарыстання.", "gui_server_doesnt_support_stealth": "Нажаль, гэтая версія Tor не падтрымлівае стэлс-рэжым (аўтэнтыфікацыю кліента). Паспрабуйце з дапамогай навейшай версіі Tor або скарыстайцеся агульнадаступным рэжымам, калі ён не павінен быць прыватным.", "gui_share_url_description": "Любы, выкарыстоўваючы гэты адрас і прыватны ключ, можа спампаваць вашы файлы праз браўзер Tor: ", "gui_share_url_public_description": "Любы, які выкарыстоўвае гэты адрас OnionShare, можа спампаваць вашы файлы праз браўзер Tor: ", "gui_website_url_description": "Любы, выкарыстоўваючы гэты адрас і прыватны ключ, можа наведаць ваш сайт праз браўзер Tor: ", "gui_website_url_public_description": "Любы, які выкарыстоўвае гэты URL OnionShare, можа наведаць ваш сайт праз браўзер Tor: ", "gui_receive_url_description": "Любы, выкарыстоўваючы гэты адрас і прыватны ключ, можа спампаваць файлы на ваш камп’ютар праз браўзер Tor: ", "gui_receive_url_public_description": "Любы, які выкарыстоўвае гэты адрас OnionShare, можа спампаваць файлы на ваш камп’ютар праз браўзер Tor: ", "gui_chat_url_description": "Любы па гэтым адрасе і з закрытым ключом можа далучыцца да гэтай размовы з дапамогай браўзера Tor: ", "gui_chat_url_public_description": "Любы на гэтым адрасе OnionShare можа далучыцца да гэтай размовы з дапамогай браўзера Tor: ", "gui_url_label_persistent": "Гэтая адпраўка не спыніцца аўтаматычна.

    Кожная наступная адпраўка выкарыстоўвае той самы адрас. (Каб выкарыстоўваць аднаразовы адрас, адключыце «Выкарыстоўваць пастаянны адрас» у наладах.)", "gui_url_label_stay_open": "Гэта адпраўка не спыніцца аўтаматычна.", "gui_url_label_onetime": "Гэта прадстаўленне не спыніцца пасля першага запуску.", "gui_url_label_onetime_and_persistent": "Гэтая адпраўка не спыніцца аўтаматычна.

    Кожная наступная адпраўка выкарыстоўвае той самы адрас. (Каб выкарыстоўваць аднаразовы адрас, адключыце \"Выкарыстоўваць пастаянны адрас\" у наладах.)", "gui_url_instructions": "Спачатку дашліце паказаны ніжэй адрас OnionShare:", "gui_url_instructions_public_mode": "Дашліце паказаны ніжэй адрас OnionShare:", "gui_client_auth_instructions": "Затым адпраўце прыватны ключ, каб дазволіць доступ да сэрвісу OnionShare:", "gui_status_indicator_share_stopped": "Спынена", "gui_status_indicator_share_working": "Запуск…", "gui_status_indicator_share_scheduled": "Плануецца…", "gui_status_indicator_share_started": "Адпраўка", "gui_status_indicator_receive_stopped": "Спынена", "gui_status_indicator_receive_working": "Пачынаецца…", "gui_status_indicator_receive_scheduled": "Запланавана…", "gui_status_indicator_receive_started": "Атрыманне", "gui_status_indicator_chat_stopped": "Спынена", "gui_status_indicator_chat_working": "Запуск…", "gui_status_indicator_chat_scheduled": "Запланавана…", "gui_status_indicator_chat_started": "Зносіны", "gui_file_info": "{} файлаў, {}", "gui_file_info_single": "{} файл, {}", "history_in_progress_tooltip": "{} у працэсе", "history_completed_tooltip": "{} завершана", "history_requests_tooltip": "{} вэб-запытаў", "error_cannot_create_data_dir": "Не атрымалася стварыць тэчку дадзеных OnionShare: {}", "gui_receive_mode_warning": "Рэжым атрымання дазваляе спампаваць файлы на ваш камп'ютар.

    Некаторыя файлы патэнцыйна могуць захапіць ваш камп’ютар, калі вы іх адкрыеце. Адкрывайце файлы толькі ад людзей, якім давяраеце, або тых, хто ўпэўнены ў сваіх дзеяннях.", "gui_open_folder_error": "Не ўдалося адкрыць тэчку з дапамогай xdg-open. Файл тут: {}", "gui_settings_language_label": "Мова", "gui_settings_theme_label": "Тэма", "gui_settings_theme_auto": "Аўтаматычна", "gui_settings_theme_light": "Светлая", "gui_settings_theme_dark": "Цёмная", "gui_settings_language_changed_notice": "Перазапусціце OnionShare, каб змяніць мову.", "gui_color_mode_changed_notice": "Перазапусціце OnionShare, каб убачыць новыя колеры.", "systray_menu_exit": "Выхад", "systray_page_loaded_title": "Старонка загружана", "systray_page_loaded_message": "Адрас OnionShare загружаны", "systray_share_started_title": "Адпраўка пачалася", "systray_share_started_message": "Пачніце адпраўляць файлы каму-небудзь", "systray_share_completed_title": "Адпраўка завершана", "systray_share_completed_message": "Адпраўка файлаў завершана", "systray_share_canceled_title": "Адпраўка адменена", "systray_share_canceled_message": "Хтосьці скасаваў атрыманне вашых файлаў", "systray_receive_started_title": "Атрыманне Пачалося", "systray_receive_started_message": "Хтосьці дасылае вам файлы", "gui_all_modes_history": "Гісторыя", "gui_all_modes_clear_history": "Ачысціць усё", "gui_all_modes_transfer_started": "Пачатак {}", "gui_all_modes_progress_complete": "%p%, {0:s} прайшло.", "gui_all_modes_progress_starting": "{0:s}, %p% (разлік)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Пакуль нічога не даслана", "gui_share_mode_autostop_timer_waiting": "Завяршэнне адпраўкі…", "gui_website_mode_no_files": "Няма апублікаваных сайтаў", "gui_receive_mode_no_files": "Пакуль нічога не атрымана", "gui_receive_mode_autostop_timer_waiting": "Завяршэнне атрымання…", "days_first_letter": "д", "hours_first_letter": "г", "minutes_first_letter": "х", "seconds_first_letter": "с", "gui_new_tab": "Новая ўкладка", "gui_new_tab_tooltip": "Адкрыйце новую ўкладку", "gui_new_tab_share_button": "Адпраўка файлаў", "gui_new_tab_receive_button": "Атрыманне файлаў", "gui_new_tab_website_button": "Апублікаваць сайт", "gui_new_tab_chat_button": "Ананімныя зносіны", "gui_main_page_share_button": "Пачаць Адпраўку", "gui_main_page_receive_button": "Пачаць атрыманне", "gui_main_page_website_button": "Пачаць хостынг", "gui_main_page_chat_button": "Пачаць чат", "gui_tab_name_share": "Падзяліцца", "gui_tab_name_receive": "Атрыманне", "gui_tab_name_website": "Вэб-сайт", "gui_tab_name_chat": "Чат", "gui_close_tab_warning_title": "Закрыць укладку?", "gui_close_tab_warning_persistent_description": "Закрыць пастаянную ўкладку і страціць onion адрас, які яна выкарыстоўвае?", "gui_close_tab_warning_share_description": "Закрыць укладку, з якой адпраўляюцца файлы?", "gui_close_tab_warning_receive_description": "Закрыць укладку, на якой атрыманы файлы?", "gui_close_tab_warning_website_description": "Закрыць укладку, на якой знаходзіцца сайт?", "gui_close_tab_warning_close": "Ок", "gui_close_tab_warning_cancel": "Адмяніць", "gui_quit_warning_title": "Выйсці з OnionShare?", "gui_quit_warning_description": "Выйсці і закрыць усе ўкладкі, нават калі абагульванне актыўна на некаторых з іх?", "gui_quit_warning_quit": "Выйсці", "gui_quit_warning_cancel": "Адмяніць", "mode_settings_advanced_toggle_show": "Паказаць дадатковыя налады", "mode_settings_advanced_toggle_hide": "Схаваць дадатковыя налады", "mode_settings_title_label": "Уласная назва", "mode_settings_persistent_checkbox": "Заўсёды адкрывайце гэту ўкладку пры запуску OnionShare", "mode_settings_public_checkbox": "Гэта публічная служба OnionShare (адключае прыватны ключ)", "mode_settings_autostart_timer_checkbox": "Запуск onion службы ў запланаваны час", "mode_settings_autostop_timer_checkbox": "Спыніць onion службу ў запланаваны час", "mode_settings_share_autostop_sharing_checkbox": "Закрываць доступ пры загрузцы файлаў (зніміце сцяжок, каб дазволіць загрузку асобных файлаў)", "mode_settings_receive_data_dir_label": "Захоўваць файлы ў", "mode_settings_receive_data_dir_browse_button": "Выбраць", "mode_settings_receive_disable_text_checkbox": "Адключыць адпраўку тэкста", "mode_settings_receive_disable_files_checkbox": "Адключыць перадачу файлаў", "mode_settings_receive_webhook_url_checkbox": "Выкарыстанне апавяшчэнняў праз webhook", "mode_settings_website_disable_csp_checkbox": "Не адпраўляць тыповы загаловак Content Security Policy (дазваляе вэб-сайту выкарыстоўваць іншыя рэсурсы)", "mode_settings_website_custom_csp_checkbox": "Адпраўляць уласны загаловак Content Security Policy", "gui_all_modes_transfer_finished_range": "Перададзена {} - {}", "gui_all_modes_transfer_finished": "Перададзена {}", "gui_all_modes_transfer_canceled_range": "Адменена {} - {}", "gui_all_modes_transfer_canceled": "Адменена {}", "settings_error_unknown": "Не ўдалося падключыцца да кантролера Tor, таму што налады бессэнсоўныя.", "settings_error_automatic": "Не ўдалося падключыцца да кантролера Tor. Ці працуе браўзер Tor (даступны на torproject.org) у фонавым рэжыме?", "settings_error_socket_port": "Немагчыма падключыцца да кантролера Tor па адрасе {}:{}.", "settings_error_socket_file": "Не ўдаецца падключыцца да кантролера Tor, выкарыстоўваючы файл сокета {}.", "settings_error_auth": "Падключыўся да {}:{}, але не можа прайсці аўтэнтыфікацыю. Можа, гэта не кантролер Tor?", "settings_error_missing_password": "Падключыўся да кантролера Tor, але ён патрабуе пароль для аўтэнтыфікацыі.", "settings_error_unreadable_cookie_file": "Падключыўся да кантролера Tor, але пароль можа быць няслушным, ці вашаму карыстальніку не дазволена чытаць файл cookie.", "settings_error_bundled_tor_not_supported": "Выкарыстанне Tor версіі, якая пастаўляецца з OnionShare не працуе ў рэжыме распрацоўшчыка на Windows або macOS.", "settings_error_bundled_tor_timeout": "Занадта доўгае злучэнне з Tor. Магчыма, адсутнічае злучэнне з Інтэрнэтам ці ў вас недакладны сістэмны час?", "settings_error_bundled_tor_broken": "OnionShare не ўдалося злучыцца з Tor:\n{}", "gui_rendezvous_cleanup": "Чаканне закрыцця ланцужкоў Tor, каб пераканацца, што файлы перададзены.\n\nГэта можа заняць некалькі хвілін.", "gui_rendezvous_cleanup_quit_early": "Выйсці раней", "error_port_not_available": "Порт OnionShare недаступны", "history_receive_read_message_button": "Чытаць паведамленне", "error_tor_protocol_error": "Адбылася памылка Tor: {}", "moat_contact_label": "Сувязь з BridgeDB…", "moat_captcha_label": "Разгадайце CAPTCHA для запыту мастоў.", "moat_captcha_placeholder": "Увядзіце сімвалы з выявы", "moat_captcha_submit": "Адправіць", "moat_captcha_reload": "Перазагрузіць", "moat_bridgedb_error": "Не ўдалося злучыцца з BridgeDB.", "moat_captcha_error": "Няправільнае рашэнне. Паўтарыце спробу.", "moat_solution_empty_error": "Увядзіце сімвалы з выявы", "mode_tor_not_connected_label": "OnionShare не падключаны да сеткі Tor", "waitress_web_server_error": "Пры запуску вэбсервера адбылася памылка падчас запуску", "gui_close_tab_warning_chat_description": "Закрыць укладку, на якой знаходзіцца сервер чата?", "gui_chat_mode_explainer": "Рэжым чата дазваляе ўзаемадзейнічаць з іншымі карыстальнікамі ў браўзеры Tor.

    Гісторыя чатаў не захоўваецца ў OnionShare. Гісторыя чатаў знікне, калі вы закрыеце браўзер Tor." } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/bg.json000066400000000000000000000720551521174352300271060ustar00rootroot00000000000000{ "not_a_readable_file": "Файлът {0:s} няма права за четене.", "other_page_loaded": "Зареден адрес", "close_on_autostop_timer": "Услугата е изключена поради достигнато време за автоматично изключване", "closing_automatically": "Изтеглянето е завършено, услугата е спряна", "large_filesize": "Предупреждение: изпращането са голям обем от данни може да отнеме часове", "systray_menu_exit": "Изход", "gui_drag_and_drop": "Плъзнете и пуснете тук файловете и папките, които искате да споделите", "gui_add": "Добавяне", "gui_choose_items": "Изберете", "gui_share_start_server": "Споделяне", "gui_share_stop_server": "Изключване на споделянето", "gui_share_stop_server_autostop_timer": "Изключване на споделянето ({})", "gui_receive_start_server": "Включване на режим получаване", "gui_receive_stop_server": "Изключване на режим получаване", "gui_receive_stop_server_autostop_timer": "Изключване на режим получаване (остават {})", "gui_copy_url": "Копиране на адреса", "gui_canceled": "Отказано", "gui_copied_url_title": "Адресът на OnionShare е копиран", "gui_copied_url": "Адресът на OnionShare е копиран", "gui_please_wait": "Включване… Щракнете за отменяне.", "gui_quit_warning_quit": "Изход", "zip_progress_bar_format": "Компресиране: %p%", "gui_settings_window_title": "Настройки", "gui_settings_autoupdate_label": "Проверка за обновяване", "gui_settings_autoupdate_option": "Известие при ново издание", "gui_settings_autoupdate_timestamp": "Последна проверка: {}", "gui_settings_autoupdate_timestamp_never": "Никога", "gui_settings_autoupdate_check_button": "Проверяване за ново издание", "gui_settings_connection_type_label": "Как OnionShare да се свързва с мрежата на Тор?", "gui_settings_connection_type_bundled_option": "Използване на вграденото в OnionShare издание на Тор", "gui_settings_connection_type_automatic_option": "Опитване на автоматична настройка чрез четеца Тор", "gui_settings_connection_type_control_port_option": "Свързване, чрез порт за управление", "gui_settings_connection_type_socket_file_option": "Свързване, чрез файл на сокет", "gui_settings_connection_type_test_button": "Проверка на връзката с Тор", "gui_settings_control_port_label": "Порт за управление", "gui_settings_socket_file_label": "Файл на сокет", "gui_settings_socks_label": "Порт на SOCKS", "gui_settings_authenticate_no_auth_option": "Без удостоверяване, нито с бисквитка", "gui_settings_authenticate_password_option": "Парола", "gui_settings_password_label": "Парола", "gui_settings_tor_bridges": "Свързване, чрез мостове на Тор?", "gui_settings_meek_lite_expensive_warning": "Внимание: Проектът Тор бива таксуван при всяко ползване на мостовете meek-azure.

    За това ги използвайте само ако не можете да се свържете с Тор директно, чрез obfs4 или обикновени мостове.", "gui_settings_tor_bridges_invalid": "Нито един от въведените от вас мостове не работи. Проверете ги или добавете други.", "gui_settings_button_save": "Запазване", "gui_settings_button_cancel": "Отказ", "gui_settings_button_help": "Помощ", "settings_error_unknown": "Грешка при свързване с контролер на Тор поради грешни настройки.", "settings_error_automatic": "Грешка при свързване с контролер на Тор. Четецът Тор (достъпен от torproject. org) работи ли?", "settings_error_socket_port": "Грешка при свързване с контролер на Тор в {}:{}.", "settings_error_socket_file": "Грешка при свързване с контролер на Тор чрез файла на сокет {}.", "settings_error_auth": "Свързано с {}:{}, грешка при удостоверяване. Може би това не е контролер на Тор?", "settings_error_missing_password": "Свързан с контролер на Тор, но той изисква парола за удостоверяване.", "settings_error_unreadable_cookie_file": "Свързан с Тор контролер, но паролата е грешна, или на потребителя ви да не е позволено да чете файла с бисквитките.", "settings_error_bundled_tor_not_supported": "Изданието Тор, вградено в OnionShare не работи в режим на разработчик под Windows или macOS.", "settings_error_bundled_tor_timeout": "Установяването на връзка с мрежата на Тор отнема твърде много време. Уверете се, че има връзка с интернет и системният часовник е верен.", "settings_error_bundled_tor_broken": "OnionShare не може да се свърже с Тор във фонов режим:\n{}", "settings_test_success": "Има връзка с контролер на Tor.\n\nИздание на Tor: {}\nПоддържа временни услуги на Onion: {}\nПоддържа удостоверяване на клиента: {}\nПоддържа следващо поколение адреси .onion: {}.", "error_tor_protocol_error": "Възникнала е грешка в Тор: {}", "connecting_to_tor": "Свързване към мрежата на Тор", "update_available": "Има ново издание на OnionShare. За да го изтеглите щракнете тук.

    Използвате {}, последно издание {}.", "update_error_check_error": "Грешка при проверка за ново издание: вероятно не сте свързани към Тор или страницата на OnionShare е недостъпна.", "update_error_invalid_latest_version": "Грешка при проверка за ново издание: страницата на OnionShare съобщава, че новото издание е неразпознато: '{}'…", "update_not_available": "Изпозвате последното издание на OnionShare.", "gui_tor_connection_ask": "За да бъде възстановена връзката с Тор да бъдат ли отворени настройките?", "gui_tor_connection_ask_open_settings": "Да", "gui_tor_connection_ask_quit": "Изход", "gui_tor_connection_error_settings": "Опитайте да промените в настройките как OnionShare се свързва с Тор.", "gui_tor_connection_canceled": "Грешка при свързване с Тор.\n\nУверете се, че сте свързани с интернет. Отворете OnionShare и настройте връзката с мрежата на Тор.", "gui_tor_connection_lost": "Връзката с Тор е прекъсната.", "gui_server_started_after_autostop_timer": "Изчакването за автоматично изключване е изтекло преди сървърът да се включи. Споделете отново.", "gui_server_autostop_timer_expired": "Изчакването за автоматично изключване е изтекло. Променете времето и споделете отново.", "gui_share_url_description": "Всеки, имащ адреса на OnionShare и частния ключ може да изтегли файловете чрез Четеца Тор: ", "gui_receive_url_description": "Всеки, имащ адреса на OnionShare и частния ключ може да изпрати файлове на това устройство чрез Четеца Тор: ", "gui_url_label_persistent": "Споделянето няма да спре автоматично.

    Всяко следващо споделяне ще използва същия адрес. (За да използвате еднократни адреси, изключете „Отваряне на този раздел при стартиране на OnionShare“ в настройките)", "gui_url_label_stay_open": "Услугата няма да спре автоматично.", "gui_url_label_onetime": "Услугата ще спре автоматично след първото изтегляне.", "gui_url_label_onetime_and_persistent": "Споделянето няма да спре автоматично.

    Всяко следващо споделяне ще използва същия адрес. (За да използвате еднократни адреси, изключете „Отваряне на този раздел при стартиране на OnionShare“ в настройките)", "gui_status_indicator_share_stopped": "Спряно", "gui_status_indicator_share_working": "Включване…", "gui_status_indicator_share_started": "Споделяне", "gui_status_indicator_receive_stopped": "Спряно", "gui_status_indicator_receive_working": "Включване…", "gui_status_indicator_receive_started": "Получаване", "gui_file_info": "{} файла, {}", "gui_file_info_single": "{} файл, {}", "history_in_progress_tooltip": "{} в изпълнение", "history_completed_tooltip": "{} завършени", "gui_receive_mode_warning": "Режимът на получаване дава възможност на други хора да изпращат файлове до вашето устройство.

    Някои файлове, ако бъдат отворени, биха могли да поемат контрола върху устройството ви. Отваряйте само файлове от хора, на които имате доверие, или ако знаете какво правите.", "systray_page_loaded_title": "Отворена е страница", "gui_settings_language_label": "Предпочитан език", "gui_settings_language_changed_notice": "За да влезе в сила промяната на езика е необходим рестарт на OnionShare.", "incorrect_password": "Невярна парола", "gui_status_indicator_receive_scheduled": "По график…", "gui_enable_autoconnect_checkbox": "Автоматично свързване с Тор", "gui_add_folder": "Добавяне на папка", "gui_file_selection_remove_all": "Премахване на всички", "seconds_first_letter": "с", "gui_receive_flatpak_data_dir": "Тъй като сте инсталирали OnionShare от Flatpak, трябва да запазвате файловете в папката ~/OnionShare.", "gui_share_mode_no_files": "Няма изпратени файлове", "gui_all_modes_history": "История", "gui_remove": "Премахване", "gui_new_tab": "Нов раздел", "gui_all_modes_transfer_started": "Започнато {}", "gui_autoconnect_configure": "Настройки на мрежата", "systray_share_started_title": "Започнато е изтегляне", "gui_tab_name_website": "Уеб страница", "gui_tor_settings_window_title": "Настройки на Тор", "hours_first_letter": "ч", "gui_status_indicator_share_scheduled": "По график…", "gui_tab_name_chat": "Разговор", "gui_receive_mode_no_files": "Няма получени файлове", "gui_new_tab_tooltip": "Отваряне на раздел", "gui_qr_label_auth_string_title": "Частен ключ", "gui_website_mode_no_files": "Няма публикувана страница", "gui_autoconnect_failed_to_connect_to_tor": "Грешка при свързване с мрежата на Тор", "gui_hide": "Скриване", "gui_reveal": "Показване", "gui_tab_name_receive": "Изтегляне", "gui_new_tab_receive_button": "Получете файлове", "days_first_letter": "д", "gui_new_tab_share_button": "Споделете файлове", "mode_settings_advanced_toggle_show": "Разширени настройки", "minutes_first_letter": "м", "gui_dragdrop_sandbox_flatpak": "С цел сигурност, пясъчниците на Flatpack не поддържат влачене и пускане на файлове и папки. Вместо това използвайте бутоните.", "gui_tab_name_share": "Споделяне", "mode_settings_receive_data_dir_label": "Запазване на файловете", "mode_settings_receive_webhook_url_checkbox": "Отдалечено известяване", "gui_autoconnect_start": "Свързване с Тор", "gui_please_wait_no_button": "Включване…", "gui_quit_warning_title": "Изход от OnionShare", "systray_share_canceled_title": "Прекъснато е изтегляне", "systray_receive_started_message": "Някой ви изпраща файлове", "gui_qr_label_url_title": "Адрес на OnionShare", "gui_status_indicator_chat_working": "Включване…", "gui_add_files": "Добавяне на файлове", "gui_waiting_to_start": "Включване след {}. Натиснете за отменяне.", "gui_close_tab_warning_close": "Добре", "gui_qr_code_dialog_title": "QR код на OnionShare", "gui_show_qr_code": "Показване на QR код", "gui_status_indicator_chat_started": "В разговор", "gui_main_page_share_button": "Започнете да споделяте", "gui_all_modes_clear_history": "Изчистване", "gui_close_tab_warning_title": "Затваряне на раздел", "gui_status_indicator_chat_scheduled": "По график…", "gui_copied_client_auth": "Частният ключ е копиран", "gui_copied_client_auth_title": "Частният ключ е копиран", "history_requests_tooltip": "{} заявки", "gui_chat_start_server": "Включване на сървър за съобщения", "gui_copy_client_auth": "Копиране на частен ключ", "gui_chat_stop_server": "Изключване на сървър за съобщения", "gui_stop_server_autostop_timer_tooltip": "Време на автоматично изключване: {}", "gui_start_server_autostart_timer_tooltip": "Време на автоматично включване: {}", "gui_autoconnect_no_bridge": "Повторен опит без мостове", "gui_url_instructions_public_mode": "Изпратете адреса на OnionShare:", "gui_autoconnect_trying_to_connect_to_tor": "Свързване с Тор…", "gui_autoconnect_bridge_detect_automatic": "От моето IP да бъде пределена държавата, според която да бъде избран мост", "gui_settings_bridge_moat_radio_option": "Заявяване на мост от torproject.org", "gui_settings_stop_active_tabs_label": "В някой от разделите работи услуга.\nЗа да променяте настройките на Тор услугите трябва да бъдат спрени.", "gui_autoconnect_circumventing_censorship": "Отстраняват се проблеми с връзката…", "gui_share_url_public_description": "Всеки, имащ адреса на OnionShare може да изтегли файловете чрез Четеца Тор: ", "gui_website_url_description": "Всеки, имащ адреса на OnionShare и частния ключ може да посети страницата чрез Четеца Тор: ", "gui_website_url_public_description": "Всеки, имащ адреса на OnionShare може да посети страницата чрез Четеца Тор: ", "gui_settings_controller_extras_label": "Настройки на Тор", "gui_settings_bridge_radio_builtin": "Използване на вграден мост", "gui_autoconnect_try_again_without_a_bridge": "Повторен опит без мостове", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Заобикаля се цензурата…", "gui_general_settings_window_title": "Общи", "gui_settings_bridge_custom_radio_option": "Използване на мост, получен от доверен източник", "gui_settings_bridge_custom_placeholder": "формат адрес:порт (по един на ред)", "gui_settings_version_label": "Използвате OnionShare {}", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Времето на включване не може да бъде същото или по-ранно от времето на включване. Направете промени и споделете отново.", "gui_settings_bridge_use_checkbox": "Използване на мост", "gui_autoconnect_description": "OnionShare работи благодарение на мрежата на Тор, която се поддържа от доброволци.", "gui_autoconnect_circumventing_censorship_starting_meek": "Осъществява се връзка с мост на meek с цел маскиране на домейните…", "mode_settings_share_autostop_sharing_checkbox": "Изключване на услугата след изпращане на файловете (за изтегляне на отделни файлове махнете отметката)", "mode_settings_autostop_timer_checkbox": "Изключване на услугата в определен час", "gui_share_mode_autostop_timer_waiting": "Завършване на изпращането…", "gui_autoconnect_could_not_connect_to_tor_api": "Грешка при свързване към ППИ на Тор. Уверете се, че има връзка с интернет преди да пробвате отново.", "gui_autoconnect_bridge_setting_options": "Настройки на мост", "gui_autoconnect_connection_error_msg": "Уверете се, че има връзка с интернет.", "gui_autoconnect_bridge_detect_manual": "Ръчен избор на държавата, според която да бъде избран мост", "gui_settings_bridge_none_radio_option": "Без използване на мостове", "gui_autoconnect_bridge_description": "Ако връзката ви с интернет е цензурирана, пробвайте да се свържете чрез мост.", "gui_url_instructions": "Първо, изпратете адреса на OnionShare:", "gui_server_autostart_timer_expired": "Часът за включване е отминал. Направете промени и споделете отново.", "gui_settings_moat_bridges_invalid": "Не сте заявили мост от torptoject.org.", "gui_receive_url_public_description": "Всеки, имащ адреса на OnionShare може да изпрати файлове на това устройство чрез Четеца Тор: ", "gui_chat_url_public_description": "Всеки, имащ адреса на OnionShare може да се присъедини към разговора чрез Четеца Тор: ", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Заявяват се мостове от ППИ-то на Тор за заобикаляне на цензурата…", "gui_autoconnect_circumventing_censorship_got_bridges": "Мостовете са получени. Осъществява се повторна връзка с Тор…", "gui_settings_help_label": "Нужна ви е помощ? Вижте docs.onionshare.org", "gui_chat_url_description": "Всеки, имащ адреса на OnionShare и частния ключ може да се присъедини към разговора чрез Четеца Тор: ", "gui_settings_tor_bridges_label": "Мостовете дават възможност да се свържете с мрежата на Тор от места, където Тор е блокиран. Някои мостове работят по-добре от други, зависимост от мястото от което се свързвате.", "gui_client_auth_instructions": "След това, изпратете частния ключ за достъп до услугата на OnionShare:", "mode_settings_autostart_timer_checkbox": "Включване на услугата в определен час", "gui_settings_bridge_moat_button": "Заявяване на нов мост", "gui_receive_mode_autostop_timer_waiting": "Завършване на изтеглянето…", "gui_server_doesnt_support_stealth": "Извинете, но това издание на Тор не поддържа удостоверяване на клиента (режим „stealth“). Пробвайте с по-ново издание или използвайте публичния режим, ако не е необходим поверителен.", "moat_captcha_placeholder": "Въведете знаците от изображението", "gui_main_page_chat_button": "Започнете разговор", "gui_all_modes_progress_eta": "{0:s}, готово след: {1:s}, %p%", "systray_receive_started_title": "Започнато е получаване", "mode_settings_advanced_toggle_hide": "Скриване на разширени настройки", "gui_close_tab_warning_receive_description": "Затваряте раздел, който получава файлове!", "gui_status_indicator_chat_stopped": "Спряно", "moat_solution_empty_error": "Въведете знаците от изображението", "mode_settings_receive_disable_files_checkbox": "Без качване на файлове", "gui_rendezvous_cleanup": "Изчакват се веригите на Tor да затворят, за да е сигурно, че файловете са прехвърлени.\n\nМоже да отнеме минута.", "mode_settings_receive_data_dir_browse_button": "Избиране", "systray_share_completed_message": "Край на изпращане на файловете", "mode_settings_persistent_checkbox": "Отваряне на този раздел при стартиране на OnionShare (адресът на onion ще остане същия)", "systray_share_started_message": "Начало на изпращане на файлове към някого", "waitress_web_server_error": "Грешка при стартиране на уеб сървъра", "gui_all_modes_progress_starting": "{0:s}, %p% (изчисляват се)", "gui_close_tab_warning_share_description": "Затваряте раздел, от който се изпращат файлове!", "gui_open_folder_error": "Грешка при отваряне на папка с xdg-open. Файлът се намира тук: {}", "moat_bridgedb_error": "Грешка при свързване с BridgeDB.", "gui_all_modes_transfer_finished": "Пренесено {}", "gui_close_tab_warning_cancel": "Отказ", "gui_all_modes_transfer_canceled": "Отказано {}", "systray_page_loaded_message": "Зареден е адрес на OnionShare", "gui_main_page_website_button": "Направете достъпна", "mode_settings_public_checkbox": "Общодостъпна услуга на OnionShare (без частен ключ)", "mode_settings_website_custom_csp_checkbox": "Потребителска заглавка на Content Security Policy", "systray_share_completed_title": "Завършено е изтегляне", "gui_quit_warning_cancel": "Отказ", "gui_new_tab_website_button": "Уеб страница", "gui_settings_theme_light": "Светла", "moat_captcha_reload": "Презареждане", "moat_captcha_label": "За да получите мостове, решете тази CAPTCHA.", "gui_rendezvous_cleanup_quit_early": "Ранен изход", "gui_settings_theme_label": "Тема", "gui_new_tab_chat_button": "Анонимен разговор", "gui_close_tab_warning_persistent_description": "Затваряте постоянен адрес. Ще загубите .onion адреса, който използва!", "mode_settings_title_label": "Заглавие на раздела", "gui_color_mode_changed_notice": "За да влезе в сила промяната на темата е необходим рестарт на OnionShare.", "gui_all_modes_transfer_canceled_range": "Отказано {} - {}", "gui_close_tab_warning_chat_description": "Затваряте раздел, който съдържа услуга за разговори!", "error_cannot_create_data_dir": "Грешка при създаване на папката за данни на OnionShare : {}", "moat_captcha_error": "Грешен отговор. Опитайте отново.", "gui_all_modes_transfer_finished_range": "Пренесено {} - {}", "gui_quit_warning_description": "При изход ще бъдат затворени всички раздели, дори и да съдържат работещи услуги!", "gui_all_modes_progress_complete": "%p%, за {0:s}.", "gui_settings_theme_dark": "Тъмна", "moat_captcha_submit": "Изпращане", "gui_close_tab_warning_website_description": "Затваряте раздел, който обслужва уеб страница!", "moat_contact_label": "Свързване с BridgeDB…", "gui_settings_theme_auto": "Автом.", "gui_main_page_receive_button": "Започнете да получавате", "error_port_not_available": "Портът на OnionShare е недостъпен", "mode_settings_receive_disable_text_checkbox": "Без изпращане на съобщения", "mode_tor_not_connected_label": "OnionShare не е свързан с мрежата на Тор", "systray_share_canceled_message": "Някой прекъсна изтеглянето на файловете", "mode_settings_website_disable_csp_checkbox": "Без изпращане на подразбираната заглавка на Content Security Policy (за използване на странични ресурси)", "history_receive_read_message_button": "Прочитане", "gui_chat_mode_explainer": "Режимът за бързи съобщения ви дава възможност да обменяте съобщения в реално време посредством четеца Тор.

    Хронологията на разговора не се пази в OnionShare. Тя изчезва при затваряне на четеца.", "mode_settings_persistent_autostart_on_launch_checkbox": "Стартиране на тази услуга на Onion при отваряне на OnionShare", "gui_settings_license_label": "OnionShare се разпространява под GPL v3.
    Лицензите на трети страни могат да бъдат видяни тук:
    https://github.com/onionshare/onionshare/tree/main/licenses", "error_generic": "Неочаквана грешка в OnionShare:\n{}" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/bn.json000066400000000000000000001142501521174352300271070ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} পঠনযোগ্য নয়।", "other_page_loaded": "ঠিকানা লোড হয়েছে", "close_on_autostop_timer": "বন্ধ হয়ে গিয়েছে, কারণ অটো-স্টপ টাইমার এর সময় শেষ", "closing_automatically": "ট্রান্সফার শেষ, তাই থেমে যাওয়া হলো", "large_filesize": "সতর্কতা: বড় ফাইল পাঠাতে গেলে অনেক সময় লাগতে পারে", "systray_menu_exit": "করুন", "gui_drag_and_drop": "শেয়ার করা শুরু করতে ফাইল এবং ফোল্ডার এখানে টেনে ছেড়ে দাও", "gui_add": "যোগ করো", "gui_choose_items": "পছন্দ করো", "gui_share_start_server": "শেয়ার আরম্ভ করো", "gui_share_stop_server": "শেয়ার বন্ধ করো", "gui_share_stop_server_autostop_timer": "শেয়ার বন্ধ করো ({})", "gui_receive_start_server": "রিসিভ মোড আরম্ভ করো", "gui_receive_stop_server": "রিসিভ মোড বন্ধ করো", "gui_receive_stop_server_autostop_timer": "রিসিভ মোড বন্ধ করো({} বাকি)", "gui_copy_url": "এড্রেস কপি করো", "gui_canceled": "বাতিল করা হয়েছে", "gui_copied_url_title": "OnionShare ঠিকানা কপি করা হয়েছে", "gui_copied_url": "OnionShare ঠিকানাটি ক্লিপবোর্ডে কপি করা হয়েছে", "gui_please_wait": "চালু করছি… বাতিল করতে এখানে ক্লিক করো।", "gui_quit_warning_quit": "প্রস্থান করো", "zip_progress_bar_format": "কমপ্রেস করছি: %p%", "gui_settings_window_title": "সেটিংস", "gui_settings_autoupdate_label": "নতুন সংস্করণ এসেছে কিনা দেখুন", "gui_settings_autoupdate_option": "নতুন সংস্করণ আসলে আমাকে জানাবে", "gui_settings_autoupdate_timestamp": "সর্বশেষ চেক করা হয়েছে: {}", "gui_settings_autoupdate_timestamp_never": "কখনো না", "gui_settings_autoupdate_check_button": "নতুন সংস্করণ এসেছে কিনা দেখুন", "gui_settings_connection_type_label": "OnionShare কিভাবে টর এর সাথে কানেক্ট করবে?", "gui_settings_connection_type_bundled_option": "OnionShare-এর ভিতরে থাকা নিজস্ব টরটি ব্যবহার করো", "gui_settings_connection_type_automatic_option": "টর ব্রাউজার এর সাথে স্বয়ংক্রিয়ভাবে-কনফিগার করার চেষ্টা করো", "gui_settings_connection_type_control_port_option": "কন্ট্রোল পোর্ট ব্যবহার করে কানেক্ট করো", "gui_settings_connection_type_socket_file_option": "সকেট ফাইল দিয়ে কানেক্ট করো", "gui_settings_connection_type_test_button": "টর নেটওয়ার্কের সাথে কানেকশন চেক করো", "gui_settings_control_port_label": "নিয়ন্ত্রন পোর্ট", "gui_settings_socket_file_label": "সকেট ফাইল", "gui_settings_socks_label": "SOCKS পোর্ট", "gui_settings_authenticate_no_auth_option": "অথেনটিকেশন ছাড়া, বা কুকি অথেনটিকেশন", "gui_settings_authenticate_password_option": "পাসওয়ার্ড", "gui_settings_password_label": "পাসওয়ার্ড", "gui_settings_tor_bridges": "টর সেতু দিয়ে যুক্ত হবে?", "gui_settings_meek_lite_expensive_warning": "সতর্কতা: meek_lite ব্রিজ পরিচালনা করা Tor Project-এর জন্য অনেক ব্যয়বহুল।

    এগুলো তখনই ব্যবহার করো যখন Tor-এ সরাসরি কানেক্ট করতে পারছো না, obfs4 ট্রান্সপোর্ট দিয়ে, অথবা অন্যান্য সাধারণ ব্রিজ দিয়ে।", "gui_settings_tor_bridges_invalid": "তোমার দেয়া কোনো সেতুই কাজ করছে না। আরেকবার দেখো বা নতুন সেতু দিয়ে চেষ্টা করো।", "gui_settings_button_save": "সেভ", "gui_settings_button_cancel": "বাতিল", "gui_settings_button_help": "সাহায্য", "settings_error_unknown": "টর নিয়ন্ত্রকের সাথে সংযোগ করা যায় না কারণ তোমার বিন্যাসসমূহ বোধগম্য নয়।", "settings_error_automatic": "টর নিয়ন্ত্রকের সাথে সংযোগ স্থাপন করা যায়নি । টর ব্রাউজার (torproject.org থেকে পাওয়া যায়) ব্রাকগ্রাউন্ডে কি চলমান?", "settings_error_socket_port": "{}: {} এ টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারছি না ।", "settings_error_socket_file": "সকেট ফাইল {} ব্যবহার করে টর নিয়ন্ত্রকের সাথে সংযোগ করা যাচ্ছে না।", "settings_error_auth": "{}: {}-এর সাথে সংযুক্ত, কিন্তু পরীক্ষা করা যাচ্ছে না । হয়তো এটা কোনো টর নিয়ন্ত্রক নয়?", "settings_error_missing_password": "টর কন্ট্রোলার সাথে সংযুক্ত, কিন্তু তা প্রমাণীকরণের জন্য একটি পাসওয়ার্ড প্রয়োজন।", "settings_error_unreadable_cookie_file": "টর নিয়ন্ত্রকের সাথে সংযুক্ত, কিন্তু পাসওয়ার্ড ভুল হতে পারে, অথবা তোমার ব্যবহারকারীকে কুকি ফাইলে পড়ার অনুমতি দেওয়া হয়নি।", "settings_error_bundled_tor_not_supported": "OnionShare এর সাথে আসা টর সংস্করণটি উইন্ডোজ বা ম্যাক এ ডেভেলপার মোডে কাজ করে না।", "settings_error_bundled_tor_timeout": "টর সাথে সংযোগ করার জন্য খুব বেশি সময় লাগছে। হয়তো তুমি ইন্টারনেটের সাথে সংযুক্ত নন, অথবা তোমার কম্পিউটারের সময় ঠিক নেই?", "settings_error_bundled_tor_broken": "OnionShare টর এর সাথে কানেক্ট করতে পারছে না:\n{}", "settings_test_success": "টর নিয়ন্ত্রকের সঙ্গে যুক্ত হয়েছে।\n\nটর সংস্করণ: {}\nঅস্থায়ী অনিয়ন ঠিকানা সমর্থন করে: {}.\nক্লায়েন্ট অথেনটিকেশন সমর্থন করে: {}.\n৩য় প্রজন্মের অনিয়ন ঠিকানাগুলো(৫৬ অক্ষর) সমর্থন করে: {} .", "error_tor_protocol_error": "টরে একটি ত্রুটি ছিল: {}", "connecting_to_tor": "টর নেটওয়ার্কে যুক্ত হচ্ছে", "update_available": "নতুন OnionShare সংস্করণ বের হয়েছে। এটি পেতে এখানে ক্লিক করো

    তুমি ব্যবহার করছো {} এবং সাম্প্রতিক সংস্করণ হলো {}।", "update_error_check_error": "নতুন সংস্করণের জন্য দেখা যায়নি: হয়তো তুমি টর-এর সাথে সংযুক্ত না, অথবা অনিওনশেয়ার ওয়েবসাইট বন্ধ?", "update_error_invalid_latest_version": "নতুন সংস্করণের জন্য জানা যায়নি: অনিওনশেয়ার ওয়েবসাইট বলছে সর্বশেষ সংস্করণ চেনা যাচ্ছে না '{}'…", "update_not_available": "তুমি OnionShare এর সাম্প্রতিক সংস্করণটি চালাচ্ছো ।", "gui_tor_connection_ask": "টর এর সাথে কীভাবে সংযোগ করবে, তা ঠিক করতে সেটিংস খুলবো কি?", "gui_tor_connection_ask_open_settings": "হ্যাঁ", "gui_tor_connection_ask_quit": "প্রস্থান", "gui_tor_connection_error_settings": "OnionShare কীভাবে টর নেটওয়ার্কের সাথে সংযোগ স্থাপন করবে, তা সেটিংস এ গিয়ে পরিবর্তন করে দেখুন কাজ হয় কিনা।", "gui_tor_connection_canceled": "টর-এর সাথে কানেক্ট করা যাচ্ছে না।\n\nতুমি ইন্টারনেটের সাথে সংযুক্ত আছো কিনা তা নিশ্চিত করো, তারপর OnionShare পুনরায় খুলো এবং টর এর সাথে OnionShare কে সেট আপ করো।", "gui_tor_connection_lost": "টর এর সাথে যোগাযোগ বিচ্ছিন্ন হয়ে গেছে।", "gui_server_started_after_autostop_timer": "সার্ভার শুরু হওয়ার আগেই স্বয়ংক্রিয়-বন্ধ ঘড়ির সময় শেষ হয়ে গেছে। অনুগ্রহ করে আবার নতুনভাবে শেয়ার করো।", "gui_server_autostop_timer_expired": "অটো-স্টপ টাইমারের সময় ইতিমধ্যেই শেষ হয়ে গিয়েছে। দয়া করে, শেয়ারিং শুরু করতে নতুনভাবে সময় সেট করো।", "gui_share_url_description": "যার কাছেই এই ঠিকানা এবং ব্যক্তিগত কী থাকবে সে ই টর ব্রাউজার ব্যবহার করে এই OnionShare ঠিকানায় গিয়ে যে কেউ আপনার ফাইল(গুলি) ডাউনলোড করতে পারবে:", "gui_receive_url_description": "যার কাছেই এই ঠিকানা এবং ব্যক্তিগত কী থাকবে সে ই টর ব্রাউজার ব্যবহার করে এই OnionShare ঠিকানায় গিয়ে যে কেউ আপনার কম্পিউটারে ফাইল আপলোড করতে পারবে:", "gui_url_label_persistent": "এই শেয়ার স্বয়ংক্রিয়ভাবে বন্ধ হবে না ।

    কারণ, প্রতিটি শেয়ার একই স্থায়ী ঠিকানা ব্যবহার করে। (অস্থায়ী ঠিকানা ব্যবহার করতে, পছন্দসমূহে গিয়ে \"অনিয়নশেয়ার শুরু হলে সর্বদা এই ট্যাবটি খুলো\" বন্ধ করে দাও)", "gui_url_label_stay_open": "এই শেয়ারটি অটো-স্টপ হবে না ।", "gui_url_label_onetime": "প্রথমবার ফাইল ডাউনলোড হওয়ার পরই এই শেয়ারটি বন্ধ হয়ে যাবে।", "gui_url_label_onetime_and_persistent": "এই শেয়ার স্বয়ংক্রিয়ভাবে বন্ধ হবে না ।

    প্রত্যেক পরবর্তী শেয়ার একই স্থায়ী ঠিকানা ব্যবহার করবে। (অস্থায়ী ঠিকানা ব্যবহার করতে, পছন্দসমূহে \"অনিয়নশেয়ার শুরু হলে সর্বদা এই ট্যাবটি খুলো\" বন্ধ করো।)", "gui_status_indicator_share_stopped": "বন্ধ হয়েছে", "gui_status_indicator_share_working": "আরম্ভ হচ্ছে…", "gui_status_indicator_share_started": "শেয়ারিং", "gui_status_indicator_receive_stopped": "বন্ধ হয়েছে", "gui_status_indicator_receive_working": "শুরু…", "gui_status_indicator_receive_started": "গ্রহণ", "gui_file_info": "{} ফাইলসমূহ, {}", "gui_file_info_single": "{} ফাইল, {}", "history_in_progress_tooltip": "{} অগ্রসর হচ্ছে", "history_completed_tooltip": "{} সম্পূর্ণ", "gui_receive_mode_warning": "গ্রহণ মোডে লোকজন আপনার কম্পিউটারে ফাইলগুলো আপলোড করতে দেয় ।

    আপনি যদি তাদের খোলেন তবে কিছু ফাইল সম্ভবত আপনার কম্পিউটারের নিয়ন্ত্রণ নিতে পারে । শুধুমাত্র আপনি যে ব্যক্তিদের বিশ্বাস করেন, অথবা আপনি যদি জানেন আপনি কি করছেন তা শুধুমাত্র খোলা জিনিস ।", "systray_page_loaded_title": "পৃষ্ঠা লোড করা হয়েছে", "gui_settings_language_label": "পছন্দনীয় ভাষা", "gui_settings_language_changed_notice": "নতুন ভাষায় এপটি দেখার জন্য OnionShare পুনরায় চালু করো।", "gui_add_files": "ফাইল যোগ করো", "gui_add_folder": "ফোল্ডার যোগ করো", "error_cannot_create_data_dir": "onionshare ডাটা ফোল্ডার তৈরি করা যায়নি: {}", "systray_page_loaded_message": "onionshare ঠিকানা লোড করা হয়েছে", "systray_share_started_title": "শেয়ারিং শুরু করা হয়েছে", "systray_share_completed_title": "শেয়ারিং সম্পূর্ণ হয়েছে", "systray_share_completed_message": "ফাইল পাঠানো শেষ হয়েছে", "systray_share_canceled_title": "শেয়ারিং বাতিল করা হয়েছে", "systray_share_canceled_message": "কেউ আপনার ফাইল গ্রহণ করা বাতিল করেছে", "systray_receive_started_title": "গ্রহণ শুরু হয়েছে", "systray_receive_started_message": "কেউ তোমার কাছে ফাইল পাঠাচ্ছে", "gui_all_modes_history": "ইতিহাস", "gui_all_modes_clear_history": "সব পরিষ্কার করো", "gui_all_modes_transfer_started": "{} শুরু হয়েছে", "systray_share_started_message": "কাউকে ফাইল পাঠানো আরম্ভ করছি", "gui_all_modes_transfer_finished_range": "স্থানান্তরিত হয়েছে {} - {}", "gui_all_modes_transfer_finished": "স্থানান্তরিত {}", "gui_all_modes_transfer_canceled_range": "বাতিলকৃত {} - {}", "gui_all_modes_transfer_canceled": "বাতিলকৃত {}", "gui_all_modes_progress_complete": "%p%, {0: সে} অতিক্রান্ত হয়েছে ।", "gui_all_modes_progress_starting": "{0:সে}, %p% (গণনা করা হচ্ছে)", "gui_all_modes_progress_eta": "{0:সে}, কাসবা: {1:সে}, %p%", "gui_share_mode_no_files": "এখনও কোন ফাইল পাঠানো হয়নি", "gui_share_mode_autostop_timer_waiting": "পাঠানো শেষ হচ্ছে…", "gui_receive_mode_no_files": "কোন ফাইল এখনও পাওয়া যায়নি", "gui_receive_mode_autostop_timer_waiting": "রিসিভ শেষ হচ্ছে…", "gui_stop_server_autostop_timer_tooltip": "অটো-স্টপ টাইমার বন্ধ হবে {} পরে", "gui_start_server_autostart_timer_tooltip": "অটো স্টার্ট টাইমার বন্ধ হবে {} পরে", "gui_waiting_to_start": "{} এর মধ্যে শেয়ারিং শুরু হবে। বাতিল করতে এখানে ক্লিক করো।", "gui_server_autostart_timer_expired": "পূর্বনির্ধারিত সময় শেষ হয়ে গিয়েছে। শেয়ার শুরু করার জন্য আবার টাইম সেট করো।", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "অটো স্টপ টাইম, অটো স্টার্ট টাইমের আগে বা একই সময় হতে পারবে না। শেয়ারিং চালু করতে দয়া করে এটি ঠিক করুন।", "gui_status_indicator_share_scheduled": "শিডিউল করা হয়েছে…", "gui_status_indicator_receive_scheduled": "শিডিউল করা হয়েছে…", "days_first_letter": "দি", "hours_first_letter": "ঘ", "minutes_first_letter": "মি", "seconds_first_letter": "সে", "gui_website_url_description": "যার কাছেই নিচের OnionShare ঠিকানাটি এবং ব্যক্তিগত কী থাকবে সেই টর ব্রাউজারের মাধ্যমে উক্ত ঠিকানায় গিয়ে আপনার ফাইল(গুলো) ডাউনলোড করতে পারবে: ", "gui_website_mode_no_files": "এখনো কোন ওয়েবসাইট শেয়ার করা হয়নি", "incorrect_password": "ভুল পাসওয়ার্ড", "history_requests_tooltip": "{} ওয়েব রিকুয়েস্ট", "gui_new_tab_receive_button": "ফাইল গ্রহণ করো", "gui_new_tab_share_button": "ফাইল শেয়ার করো", "gui_new_tab_tooltip": "একটি নতুন ট্যাব খুলো", "gui_new_tab": "নতুন ট্যাব", "mode_settings_website_disable_csp_checkbox": "বিষয়বস্তু নিরাপত্তা নীতি শীর্ষাংশ নিষ্ক্রিয় করো (তোমার ওয়েবসাইটকে তৃতীয় পক্ষের সম্পদ ব্যবহার করতে সম্মতি দাও)", "mode_settings_share_autostop_sharing_checkbox": "ফাইল পাঠানোর পর শেয়ার করা বন্ধ করো (স্বতন্ত্র ফাইল ডাউনলোড এর মঞ্জুরি দিতে টিক চিহ্ন তুলে দাও)", "mode_settings_autostop_timer_checkbox": "নির্ধারিত সময়ে অনিওন সেবা বন্ধ করো", "mode_settings_autostart_timer_checkbox": "নির্ধারিত সময়ে অনিওন সেবা শুরু করো", "mode_settings_persistent_checkbox": "অনিয়নশেয়ার শুরু হলে সর্বদা এই ট্যাবটি খুলো (অনিয়ন ঠিকানা একই থাকবে)", "gui_quit_warning_description": "সমস্ত ট্যাব প্রস্থান করুন এবং বন্ধ করুন, যদিও কিছুতে শেয়ারিং সক্রিয় আছে?", "gui_close_tab_warning_website_description": "তুমি কি এই ট্যাবটি যেটা একটি ওয়েবসাইট হোস্ট করছে বন্ধ করতে চাও?", "gui_close_tab_warning_receive_description": "তুমি এই ট্যাবটি যেটা ফাইল পাওয়ার প্রক্রিয়ায় আছে বন্ধ করতে চাও?", "gui_close_tab_warning_share_description": "তুমি কি এই ট্যাবটি যেটা ফাইল পাঠানোর প্রক্রিয়ায় আছে বন্ধ করতে চাও?", "gui_close_tab_warning_persistent_description": "তুমি যদি এই স্থায়ী ট্যাবটি বন্ধ করো তাহলে তুমি যে অনিওন ঠিকানা ব্যবহার করছো তা হারিয়ে ফেলবে। তুমি কি নিশ্চিত যে তুমি এটা বন্ধ করতে চাও?", "gui_quit_warning_title": "OnionShare বন্ধ করবেন?", "gui_new_tab_website_button": "ওয়েবসাইট প্রকাশ করো", "gui_close_tab_warning_title": "ট্যাব বন্ধ করবেন?", "gui_close_tab_warning_close": "ঠিক আছে", "gui_close_tab_warning_cancel": "বাতিল", "gui_quit_warning_cancel": "বাতিল", "mode_settings_advanced_toggle_show": "উন্নততর সেটিংস দেখাও", "mode_settings_advanced_toggle_hide": "উন্নততর সেটিংস লুকাও", "mode_settings_public_checkbox": "এটি পব্লিক অনিওনশেয়ার ঠিকানা (ব্যক্তিগত কী ডিসেবল করে)", "mode_settings_receive_data_dir_browse_button": "অনুসন্ধান করো", "mode_settings_receive_data_dir_label": "ফাইল সংরক্ষণ করো", "gui_chat_stop_server": "চ্যাট সার্ভার বন্ধ করো", "gui_chat_start_server": "চ্যাট সার্ভার শুরু করো", "gui_file_selection_remove_all": "সব সরাও", "gui_remove": "সরাও", "gui_main_page_share_button": "শেয়ার করা শুরু করো", "gui_new_tab_chat_button": "বেনামে আলাো করো", "gui_tab_name_chat": "আলাপ", "gui_tab_name_website": "ওয়েবসাইট", "gui_tab_name_receive": "গ্রহণ", "gui_tab_name_share": "শেয়ার", "gui_qr_code_dialog_title": "অনিওনশেয়ার কিউআর কোড", "gui_show_qr_code": "কিউআর কোড দেখাও", "gui_receive_flatpak_data_dir": "যেহেতু অনিওনশেয়ার ফ্ল্যাটপ্যাক দিয়ে ইন্সটল করেছো, তাই তোমাকে ~/OnionShare এ ফাইল সংরক্ষণ করতে হবে।", "gui_rendezvous_cleanup": "তোমার ফাইলগুলি সফলভাবে স্থানান্তরিত হয়েছে তা নিশ্চিত হয়ে টর সার্কিট বন্ধের অপেক্ষা করা হচ্ছে।\n\nএটি কয়েক মিনিট সময় নিতে পারে।", "gui_open_folder_error": "xdg-open দিয়ে ফোল্ডার খুলতে ব্যর্থ হয়েছে। ফাইলটি এখানে: {}", "gui_chat_url_description": "এই অনিওনশেয়ার ঠিকানা এবং ব্যক্তিগত কী দিয়ে যে কেউ টর ব্রাউজার ব্যবহার করে এই চ্যাট রুমটিতে যোগ দিতে পারে: ", "error_port_not_available": "অনিয়নশায়ার পোর্ট নেই", "gui_rendezvous_cleanup_quit_early": "তাড়াতাড়ি বন্ধ করো", "gui_main_page_chat_button": "চ্যাটিং শুরু করো", "gui_main_page_website_button": "হোস্টিং শুরু করো", "gui_main_page_receive_button": "গ্রহণ শুরু করো", "gui_color_mode_changed_notice": "নতুন রঙের মোড প্রয়োগ করার জন্য OnionShare পুনরারম্ভ করুন।", "history_receive_read_message_button": "বার্তা পড়ুন", "mode_settings_receive_webhook_url_checkbox": "বিজ্ঞপ্তি ওয়েবহুক ব্যবহার করুন", "mode_settings_receive_disable_files_checkbox": "ফাইল আপলোড করা অক্ষম করুন", "mode_settings_receive_disable_text_checkbox": "পাঠ্য জমা দেওয়া অক্ষম করুন", "mode_settings_title_label": "কাস্টম শিরোনাম", "gui_status_indicator_chat_started": "চ্যাট করছে", "gui_status_indicator_chat_scheduled": "শিডিউল করা হয়েছে…", "gui_status_indicator_chat_working": "শুরু…", "gui_status_indicator_chat_stopped": "বন্ধ হয়েছে", "gui_server_doesnt_support_stealth": "দুখিত, টোরের এই সংস্করণটি স্টেল্থ (ক্লায়েন্ট প্রমাণীকরণ) সমর্থন করে না। দয়া করে টোরের একটি নতুন সংস্করণ দিয়ে চেষ্টা করুন, অথবা ব্যক্তিগত হওয়ার প্রয়োজন না হলে 'পাবলিক' মোড ব্যবহার করুন।", "gui_settings_theme_dark": "কাল", "gui_settings_theme_light": "হালকা", "gui_settings_theme_auto": "স্বয়ংক্রিয়", "gui_settings_theme_label": "থিম", "gui_client_auth_instructions": "পরবর্তী, অনিওনশেয়ার অ্যাক্সেসের অনুমতি দেওয়ার জন্য ব্যক্তিগত কী পাঠান:", "gui_url_instructions_public_mode": "নিচের অনিওনশেয়ার ঠিকানা পাঠান:", "gui_url_instructions": "প্রথমে, নিচের অনিওনশেয়ার ঠিকানা পাঠান:", "gui_chat_url_public_description": "এই অনিওনশেয়ার ঠিকানা দিয়ে যে কেউ টর ব্রাউজারব্যবহার করে এই চ্যাট রুমটিতে যোগ দিতে পারে: ", "gui_receive_url_public_description": "যার কাছেই এই ঠিকানা থাকবে সে ই টর ব্রাউজার ব্যবহার করে এই OnionShare ঠিকানায় গিয়ে যে কেউ আপনার কম্পিউটারে ফাইল আপলোড করতে পারবে:", "gui_website_url_public_description": "যার কাছেই নিচের OnionShare ঠিকানাটি থাকবে সেই টর ব্রাউজারের মাধ্যমে উক্ত ঠিকানায় গিয়ে আপনার ফাইল(গুলো) ডাউনলোড করতে পারবে: ", "gui_share_url_public_description": "যার কাছেই এই ঠিকানা থাকবে সে ই টর ব্রাউজার ব্যবহার করে এই OnionShare ঠিকানায় গিয়ে যে কেউ আপনার ফাইল(গুলি) ডাউনলোড করতে পারবে:", "gui_please_wait_no_button": "চালু করছি…", "gui_hide": "লুকান", "gui_reveal": "দেখাও", "gui_qr_label_auth_string_title": "ব্যক্তিগত কী", "gui_qr_label_url_title": "OnionShare ঠিকানা", "gui_copied_client_auth": "ব্যক্তিগত কী ক্লিপবোর্ডে কপি করা হয়েছে", "gui_copied_client_auth_title": "ব্যক্তিগত কী কপি করা হয়েছে", "gui_copy_client_auth": "ব্যক্তিগত কী কপি করো", "mode_settings_website_custom_csp_checkbox": "একটি বিশেষায়িত আধেয় নিরাপত্তা নীতি(সিএসপি) শিরোলেখ(হেডার) পাঠাও", "gui_dragdrop_sandbox_flatpak": "ফ্ল্যাটপ্যাক এর নিরাপত্তা ব্যবস্থা বজায় রাখতে টেনে ছেড়ে দেওয়া সমর্থন করা হচ্ছে না। নথি যোগ ওফোল্ডার যোগ করো বোতামগুলো ব্যবহার করে ফাইল বা নথি অনুসন্ধান করো।", "gui_settings_tor_bridges_label": "সেতু তোমাকে টর নিষিদ্ধ করা জায়গায় টর নেটওয়ার্কে ঢুকতে সাহায্য করে। তুমি কোথায় আছো তার উপর নির্ভর করে একটি সেতু অন্যটার চেয়ে ভালো কাজ করতে পারে।", "gui_tor_settings_window_title": "টর পছন্দসমূহ", "gui_settings_controller_extras_label": "টর পছন্দসমূহ", "gui_settings_bridge_use_checkbox": "সেতু ব্যবহার করো", "gui_settings_bridge_radio_builtin": "অভ্যন্তরীণ সেতু ব্যবহার করো", "gui_settings_bridge_none_radio_option": "সেতু ব্যবহার করবে না", "gui_settings_bridge_moat_button": "নতুন সেতুর অনুরোধ করো", "gui_settings_moat_bridges_invalid": "তুমি torproject.org ও সেতুর অনুরোধ করনি।", "gui_settings_bridge_custom_radio_option": "বিশ্বস্ত সূত্র থেকে জানা সেতু এখানে প্রবেশ করাও", "gui_settings_version_label": "তুমি অনিয়নশেয়ার {} ব্যবহার করছো", "gui_settings_help_label": "সাহায্য লাগবে? docs.onionshare.org দেখো", "moat_contact_label": "ব্রিজডিবি এর সাথে যুক্ত হচ্ছে…", "moat_captcha_label": "সেতুর অনুরোধ করতে ক্যাপচার সমাধান করো।", "moat_captcha_submit": "জমা", "moat_captcha_reload": "পুনঃশুরু করো", "moat_bridgedb_error": "ব্রিজডিবি এর সাথে যোগাযোগের সময় ত্রুটি হয়েছে।", "moat_solution_empty_error": "ছবি থেকে অক্ষরগুলো তোমাকে প্রবেশ করাতে হবে", "moat_captcha_placeholder": "ছবি থেকে অক্ষরগুলো প্রবেশ করো", "gui_settings_bridge_moat_radio_option": "torproject.org থেকে সেতুর অনুরোধ করো", "gui_settings_bridge_custom_placeholder": "address:port লিখো(প্রতি বাক্যে একটা)", "mode_tor_not_connected_label": "অনিওনশেয়ার টর নেটওয়ার্কে যুক্ত নয়", "moat_captcha_error": "এই সমাধানটা সঠিক নয়। আবার চেষ্টা করো।", "gui_settings_stop_active_tabs_label": "তোমার কিছু ট্যাবৃ এই সেবাগুলো চলছে।\nতোমার টর পছন্দসমূহ পাল্টাতে এই সব সেবাগুলো বন্ধ করতে হবে।", "gui_autoconnect_description": "হাজারো স্বেচ্ছাসেবী পরিচালিত টর নেটওয়ার্কের উপর অনিওনশেয়ার নির্ভর করে।", "gui_autoconnect_bridge_setting_options": "সেতু পছন্দসমূহ", "gui_autoconnect_configure": "নেটওয়ার্ক পছন্দসমূহ", "gui_autoconnect_no_bridge": "সেতু ছাড়া চেষ্টা করো", "gui_autoconnect_circumventing_censorship_starting_circumvention": "নিষেধাজ্ঞা এড়ানোর প্রক্রিয়া শুরু করা হচ্ছে…", "gui_autoconnect_circumventing_censorship": "সংযোগ সমস্যা সমাধানের চেষ্টা করা হচ্ছে…", "gui_autoconnect_bridge_detect_manual": "সেতু পছন্দসমূহ থেকে একটি দেশ বেছে নাও", "gui_enable_autoconnect_checkbox": "টর এ স্বয়ংক্রিয়ভাবে সংযুক্ত হচ্ছে", "gui_autoconnect_failed_to_connect_to_tor": "টর এ সংযুক্ত হতে ব্যর্থ", "gui_general_settings_window_title": "সাধারণ", "gui_autoconnect_start": "টর এ সংযুক্ত হও", "gui_autoconnect_connection_error_msg": "তুমি কি ইন্টারনেটে যুক্ত কিনা নিশ্চিত করো।", "gui_autoconnect_circumventing_censorship_got_bridges": "সেতু পাওয়া গেছে! টর এ পুনঃসংযোগের চেষ্টা করা হচ্ছে…", "gui_autoconnect_circumventing_censorship_starting_meek": "ডোমেন-ফ্রন্টিং এর জন্য মিইক শুরু করা হচ্ছে…", "gui_autoconnect_trying_to_connect_to_tor": "টর এ সংযোগের চেষ্টা করা হচ্ছে…", "gui_autoconnect_try_again_without_a_bridge": "সেতু ছাড়া চেষ্টা করো", "gui_autoconnect_could_not_connect_to_tor_api": "টর API এর সাথে সংযোগ করা যায়নি। আবার চেষ্টা করার আগে নিশ্চিত হয়ে নিন যে আপনি ইন্টারনেটের সাথে সংযুক্ত আছেন।", "gui_close_tab_warning_chat_description": "তুমি কি এই ট্যাবটি যেটা একটি চ্যাট সার্ভার হোস্টিং আছে বন্ধ করতে চাও?", "waitress_web_server_error": "ওয়েব সার্ভার শুরু করতে একটি সমস্যা হয়েছে", "gui_autoconnect_bridge_description": "আপনার ইন্টারনেট সেন্সর করা থাকলে আপনি একটি ব্রিজ ব্যবহার করে সংযোগ করতে সক্ষম হতে পারেন।", "gui_autoconnect_bridge_detect_automatic": "ব্রিজ সেটিংসের জন্য আমার আই.পি. ঠিকানা থেকে আমার দেশ নির্ধারণ করুন", "gui_autoconnect_circumventing_censorship_requesting_bridges": "টর সেন্সরশিপ সার্কামভেনশন API থেকে ব্রিজ অনুরোধ করা হচ্ছে…", "gui_chat_mode_explainer": "চ্যাট মোড আপনাকে টর ব্রাউজারে অন্যদের সাথে ইন্টারেক্টিভভাবে চ্যাট করতে দেয়।

    চ্যাট ইতিহাস OnionShare এ সংরক্ষণ করা হয় না। আপনি টর ব্রাউজার বন্ধ করলে চ্যাট ইতিহাস অদৃশ্য হয়ে যাবে।", "mode_settings_persistent_autostart_on_launch_checkbox": "অনিয়নশেয়ার শুরু সাথে সাথে এই অনিয়ন সেবা চালু করো", "error_generic": "অনিয়নশেয়ারে একটি অনাকাঙ্খিত সমস্যা দেখা গিয়েছিলো:\n{}", "gui_settings_license_label": "অনিয়নশেয়ার জিপিএল সং৩ এ অনমতিপত্র প্রাপ্ত।
    তৃতীয় পক্ষের অনুমতিপত্র এখানে দেখা যাবে:
    https://github.com/onionshare/onionshare/tree/main/licenses" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/bo.json000066400000000000000000000046541521174352300271160ustar00rootroot00000000000000{ "gui_add_files": "ཡིག་ཆ་ཁ་སྣོན།", "gui_add_folder": "ཡིག་སྒམ་ཁ་སྣོན།", "gui_remove": "གཙང་གསུབ།", "gui_qr_label_auth_string_title": "སྒེར་གྱི་ལྡེ་མིག", "gui_please_wait_no_button": "འགོ་འཛུགས་བཞིན་པ…", "gui_settings_theme_dark": "ནག་པོ།", "gui_all_modes_history": "བསྔོགས་བཤུལ་།", "gui_all_modes_clear_history": "ཆ་ཚང་གཙང་གསུབ།", "gui_main_page_website_button": "གཙོ་སྐྱོང་འགོ་འཛུགས།", "gui_tab_name_website": "དྲྭ་ཚིགས།", "gui_tab_name_chat": "གླེང་མོལ།", "gui_status_indicator_receive_working": "འགོ་འཛུགས་བཞིན་པ…", "gui_settings_button_cancel": "ཕྱིར་འཐེན།", "mode_settings_title_label": "མང་མོས་ཀྱི་འགོ་བརྗོད།", "gui_add": "ཁ་སྣོན།", "moat_captcha_submit": "ཡར་སྤྲོད།", "gui_tab_name_share": "མཉམ་སྤྱོད།", "mode_settings_receive_data_dir_browse_button": "ལྟ་བ།", "gui_settings_window_title": "སྒྲིག་འགོད།", "gui_settings_authenticate_password_option": "Password", "gui_settings_password_label": "Password", "gui_settings_bridge_custom_placeholder": "type address:port (one per line)", "gui_settings_button_save": "ཉར་ཚགས།", "gui_tor_connection_ask_open_settings": "རེད།", "gui_status_indicator_chat_working": "འགོ་འཛུགས་བཞིན་པ…", "gui_settings_language_label": "སྐད་ཡིག།", "gui_settings_theme_label": "བརྗོད་གཞི།", "gui_settings_theme_light": "དཀར་མདངས།", "gui_main_page_share_button": "བརྒྱུད་སྐུར་འགོ་འཛུགས།", "gui_close_tab_warning_close": "འགྲིག", "gui_close_tab_warning_cancel": "ཕྱིར་འཐེན།", "gui_quit_warning_cancel": "ཕྱིར་འཐེན།", "gui_status_indicator_share_working": "འགོ་འཛུགས་བཞིན་པ…", "gui_status_indicator_share_started": "བརྒྱུད་སྐུར།", "gui_settings_button_help": "རོགས་རམ" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/bs.json000066400000000000000000000051251521174352300271140ustar00rootroot00000000000000{ "gui_general_settings_window_title": "Općenito", "gui_settings_button_cancel": "Odustani", "gui_settings_button_help": "Help", "gui_quit_warning_cancel": "Odustani", "gui_tor_connection_ask_open_settings": "Da", "gui_tab_name_website": "Website", "gui_settings_authenticate_password_option": "Lozinka", "gui_close_tab_warning_cancel": "Odustani", "gui_remove": "Ukloni", "gui_file_selection_remove_all": "Ukloniti sve", "gui_add": "Dodaj", "gui_choose_items": "Izaberi", "gui_settings_window_title": "Postavke", "gui_settings_password_label": "Lozinka", "gui_settings_bridge_custom_placeholder": "type address:port (one per line)", "gui_tor_connection_ask_quit": "Odustani", "gui_settings_theme_label": "Tema", "gui_settings_theme_dark": "Tamna", "systray_menu_exit": "Odustani", "gui_quit_warning_quit": "Odustani", "moat_captcha_submit": "podnijeti", "gui_all_modes_history": "Historija", "gui_settings_button_save": "Sačuvaj", "gui_canceled": "Otkazano", "moat_captcha_reload": "Ponovo učitaj", "gui_settings_autoupdate_timestamp_never": "Nikad", "gui_hide": "Sakriveno", "gui_settings_language_label": "Jezik", "gui_settings_theme_light": "Svijetlo", "gui_tab_name_share": "Podijeli", "not_a_readable_file": "{0:s} nije čitljiva datoteka.", "other_page_loaded": "Adresa je učitana", "incorrect_password": "Netačna lozinka", "close_on_autostop_timer": "Zaustavljeno jer je istekao tajmer za automatsko zaustavljanje", "closing_automatically": "Zaustavljeno jer je prijenos završen", "large_filesize": "Upozorenje: Slanje velike količine sadržaja može potrajati satima", "gui_drag_and_drop": "Prevucite i ispustite datoteke i mape da biste započeli dijeljenje", "gui_add_files": "Dodaj datoteke", "gui_add_folder": "Dodaj mapu", "gui_dragdrop_sandbox_flatpak": "Da bi Flatpak sandbox bio sigurniji, funkcija \"povuci i pusti\" nije podržana. Umjesto toga, koristite dugmad \"Dodaj datoteke\" i \"Dodaj mapu\" za odabir datoteka.", "gui_share_start_server": "Započni dijeljenje", "gui_share_stop_server": "Zaustavi dijeljenje", "gui_share_stop_server_autostop_timer": "Zaustavi dijeljenje ({})", "gui_chat_start_server": "Pokreni chat server", "gui_chat_stop_server": "Zaustavi server za chat", "gui_stop_server_autostop_timer_tooltip": "Tajmer automatskog zaustavljanja završava u {}", "gui_start_server_autostart_timer_tooltip": "Tajmer za automatsko pokretanje završava u {}", "gui_receive_start_server": "Pokreni način prijema" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ca.json000066400000000000000000000552151521174352300271000ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} no és un fitxer llegible.", "other_page_loaded": "Adreça carregada", "close_on_autostop_timer": "S'ha aturat perquè s'ha acabat el temporitzador d'aturada automàtica", "closing_automatically": "S'ha aturat perquè ha acabat la transferència", "large_filesize": "Compte: La transferència de fitxers molt grans podria trigar hores", "systray_menu_exit": "Surt", "gui_drag_and_drop": "Arrossegueu fitxers i carpetes per a començar a compartir", "gui_add": "Afegeix", "gui_choose_items": "Trieu", "gui_share_start_server": "Comparteix", "gui_share_stop_server": "Deixa de compartir", "gui_share_stop_server_autostop_timer": "Deixa de compartir (queden {})", "gui_receive_start_server": "Inicia el mode de recepció", "gui_receive_stop_server": "Atura el mode de recepció", "gui_receive_stop_server_autostop_timer": "Atura el mode de recepció (queden {})", "gui_copy_url": "Copia l'adreça", "gui_canceled": "S'ha cancel·lat", "gui_copied_url_title": "S'ha copiat l'adreça d'OnionShare", "gui_copied_url": "S'ha copiat l'adreça d'OnionShare al porta-retalls", "gui_please_wait": "S'està iniciant… Feu clic per a cancel·lar.", "gui_quit_warning_quit": "Surt", "zip_progress_bar_format": "S'està comprimint: %p%", "gui_settings_window_title": "Paràmetres", "gui_settings_autoupdate_label": "Comprova si hi ha versions noves", "gui_settings_autoupdate_option": "Notifica'm si hi ha una actualització disponible", "gui_settings_autoupdate_timestamp": "Última comprovació: {}", "gui_settings_autoupdate_timestamp_never": "Mai", "gui_settings_autoupdate_check_button": "Comprova si hi ha una versió més nova", "gui_settings_connection_type_label": "Com hauria de connectar-se l'OnionShare a Tor?", "gui_settings_connection_type_bundled_option": "Fes servir la versió de Tor inclosa dins d'OnionShare", "gui_settings_connection_type_automatic_option": "Intenta la configuració automàtica amb el Navegador Tor", "gui_settings_connection_type_control_port_option": "Connecta fent servir el port de control", "gui_settings_connection_type_socket_file_option": "Connecta fent servir un fitxer de sòcol", "gui_settings_connection_type_test_button": "Comprova la connexió a Tor", "gui_settings_control_port_label": "Port de control", "gui_settings_socket_file_label": "Fitxer de sòcol", "gui_settings_socks_label": "Port SOCKS", "gui_settings_authenticate_no_auth_option": "Sense autenticació, o autenticació amb galetes", "gui_settings_authenticate_password_option": "Contrasenya", "gui_settings_password_label": "Contrasenya", "gui_settings_tor_bridges": "Voleu connectar mitjançant un pont de Tor?", "gui_settings_meek_lite_expensive_warning": "Avís: els ponts meek-azure són molt costosos per al Projecte Tor.

    Feu-los servir només si no us podeu connectar directament a Tor, mitjançant transports obfs4 o altres ponts normals.", "gui_settings_tor_bridges_invalid": "Cap dels ponts que heu afegit funciona. Comproveu-los o proveu d'afegir-ne de nous.", "gui_settings_button_save": "Desa", "gui_settings_button_cancel": "Cancel·la", "gui_settings_button_help": "Ajuda", "settings_error_unknown": "No s'ha pogut connectar a Tor perquè la configuració és inconsistent.", "settings_error_automatic": "No s'ha pogut connectar al controlador de Tor. Heu iniciat el Navegador Tor (disponible a torproject.org) en segon pla?", "settings_error_socket_port": "No s'ha pogut establir la connexió al controlador de Tor a {}:{}.", "settings_error_socket_file": "No s'ha pogut connectar al controlador de Tor fent servir el fitxer de socket {}.", "settings_error_auth": "S'ha establert la connexió a {}:{} però ha fallat l'autenticació. Pot ser que no sigui un controlador de Tor?", "settings_error_missing_password": "S'ha establer la connexió al controlador de Tor, però necessita una contrasenya d'autenticació.", "settings_error_unreadable_cookie_file": "S'ha establert la connexió al controlador de Tor, però pot ser que la contrasenya sigui errònia o que faltin permisos de lectura en el fitxer de galetes.", "settings_error_bundled_tor_not_supported": "La versió de Tor inclosa a l'OnionShare no funciona en mode de desenvolupador a Windows ni a macOS.", "settings_error_bundled_tor_timeout": "La connexió està trigant molt. Podeu revisar que tingueu connexió a Internet i que el rellotge del sistema estigui en hora?", "settings_error_bundled_tor_broken": "L'OnionShare no s'ha pogut connectar a Tor:\n{}", "settings_test_success": "S'ha connectat al controlador de Tor.\n\nVersió de Tor: {}\nCompatible amb serveis onion efímers: {}.\nCompatible amb autenticació del client: {}.\nCompatible amb adreces .onion de nova generació: {}.", "error_tor_protocol_error": "Hi ha hagut un error amb Tor: {}", "connecting_to_tor": "S'està connectant a la xarxa Tor", "update_available": "Hi ha una nova versió d'OnionShare.Feu clic aquí per a obtenir-la.

    Esteu usant {} i la més recent és {}.", "update_error_check_error": "No s'ha pogut comprovar si hi ha una versió més nova. Pot ser que no estigueu connectat a Tor o que el web d'OnionShare estigui caigut?", "update_error_invalid_latest_version": "No s'ha pogut comprovar si hi ha una versió més nova. La web d'OnionShare diu que l'última versió és '{}' però no s'ha pogut reconèixer…", "update_not_available": "Aquesta és l'última versió d'OnionShare.", "gui_tor_connection_ask": "Voleu anar a la configuració per a provar d'arreglar la connexió a Tor?", "gui_tor_connection_ask_open_settings": "Sí", "gui_tor_connection_ask_quit": "Surt", "gui_tor_connection_error_settings": "Proveu de canviar la configuració de com l'OnionShare es connecta a la xarxa Tor.", "gui_tor_connection_canceled": "No s'ha pogut establir la connexió amb la xarxa Tor.\n\nAssegureu-vos que teniu connexió a internet, torneu a obrir l'OnionShare i prepareu la connexió a Tor.", "gui_tor_connection_lost": "S'ha perdut la connexió amb Tor.", "gui_server_started_after_autostop_timer": "El temporitzador de finalització automàtica ha acabat abans que s'iniciés el servidor. Torneu a compartir-ho.", "gui_server_autostop_timer_expired": "El temporitzador de finalització automàtica ja s'ha acabat. Ajusteu-lo per a poder compartir.", "gui_share_url_description": "Qualsevol persona amb aquesta adreça d'OnionShare pot baixar els vostres fitxers fent servir el Navegador Tor: ", "gui_receive_url_description": "Qualsevol persona amb aquesta adreça d'OnionShare pot pujar fitxers al vostre ordinador fent servir el Navegador Tor: ", "gui_url_label_persistent": "Aquest recurs no es tancarà automàticament.

    Cada recurs compartit reutilitzarà aquesta mateixa adreça (si voleu crear una adreça diferent per a cada recurs, desactiveu l'opció «Obre aquesta pestanya automàticament en iniciar l'OnionShare» a les opcions.)", "gui_url_label_stay_open": "Aquest recurs no es tancarà automàticament.", "gui_url_label_onetime": "Aquest recurs deixarà de compartir-se després de la primera baixada.", "gui_url_label_onetime_and_persistent": "Aquest recurs no es tancarà automàticament.

    Cada recurs compartit reutilitzarà aquesta adreça (si voleu crear una adreça diferent per a cada recurs, desactiveu l'opció «Obre aquesta pestanya automàticament en iniciar l'OnionShare» a les opcions.)", "gui_status_indicator_share_stopped": "Aturat", "gui_status_indicator_share_working": "S'està iniciant…", "gui_status_indicator_share_started": "S'està compartint", "gui_status_indicator_receive_stopped": "Aturat", "gui_status_indicator_receive_working": "S'està iniciant…", "gui_status_indicator_receive_started": "S'està rebent", "gui_file_info": "{} fitxers, {}", "gui_file_info_single": "{} fitxer, {}", "history_in_progress_tooltip": "{} en procés", "history_completed_tooltip": "{} completats", "gui_receive_mode_warning": "El mode de rebuda permet a qualsevol pujar fitxers al vostre ordinador.

    Alguns fitxers podrien guanyar el control de la vostra màquina si els obriu. Obriu només fitxers de persones de confiança, o si realment sabeu el que esteu fent.", "systray_page_loaded_title": "S'ha carregat la pàgina", "gui_settings_language_label": "Llengua", "gui_settings_language_changed_notice": "Reinicieu l'OnionShare per canviar a la nova llengua.", "gui_add_files": "Afegeix fitxers", "gui_add_folder": "Afegeix una carpeta", "error_cannot_create_data_dir": "No s'ha pogut crear la carpeta de dades d'OnionShare: {}", "systray_page_loaded_message": "S'ha carregat l'adreça d'OnionShare", "systray_share_started_title": "S'ha començat a compartir", "systray_share_started_message": "S'està començant a enviar els fitxers a algú", "systray_share_completed_title": "S'ha acabat de compartir", "systray_share_completed_message": "S'ha acabat d'enviar els fitxers", "systray_share_canceled_title": "S'ha deixat de compartir", "systray_share_canceled_message": "Algú ha cancel·lat la recepció dels vostres fitxers", "systray_receive_started_title": "S'ha començat a rebre", "systray_receive_started_message": "Algú us està enviant fitxers", "gui_all_modes_history": "Historial", "gui_all_modes_clear_history": "Esborra-ho tot", "gui_all_modes_transfer_started": "Ha començat el {}", "gui_all_modes_transfer_finished_range": "S'ha transferit entre: {} - {}", "gui_all_modes_transfer_finished": "Transferit el {}", "gui_all_modes_transfer_canceled_range": "S'ha cancel·lat entre: {} - {}", "gui_all_modes_transfer_canceled": "S'ha cancel·lat el {}", "gui_all_modes_progress_complete": "%p%, {0:s} transferits.", "gui_all_modes_progress_starting": "{0:s}, %p% (s'està calculant)", "gui_all_modes_progress_eta": "{0:s}, Temps estimat: {1:s}, %p%", "gui_share_mode_no_files": "Encara no s'han enviat fitxers", "gui_share_mode_autostop_timer_waiting": "S'està finalitzant l'enviament…", "gui_receive_mode_no_files": "Encara no s'ha rebut cap fitxer", "gui_receive_mode_autostop_timer_waiting": "S'està finalitzant la recepció…", "gui_stop_server_autostop_timer_tooltip": "El temporitzador d'aturada automàtica finalitza a les {}", "gui_start_server_autostart_timer_tooltip": "El temporitzador d'inici automàtic finalitza a les {}", "gui_waiting_to_start": "S'ha programat per a iniciar en {}. Feu clic per a cancel·lar.", "gui_server_autostart_timer_expired": "L'hora programada ja ha passat. Ajusteu-la per a començar la compartició.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "L'hora d'aturada automàtica no pot ser igual ni anterior que l'hora d'inici automàtic. Ajusteu-la per a començar la compartició.", "gui_status_indicator_share_scheduled": "Programat…", "gui_status_indicator_receive_scheduled": "Programat…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "min", "seconds_first_letter": "s", "gui_website_url_description": "Qualsevol persona amb aquesta adreça d'OnionShare pot visitar el vostre lloc web fent servir el Navegador Tor: ", "gui_website_mode_no_files": "Encara no s'han compartit llocs web", "incorrect_password": "La contrasenya no és correcta", "history_requests_tooltip": "{} peticions web", "gui_new_tab_share_button": "Compartir fitxers", "gui_new_tab_tooltip": "Obre una pestanya nova", "gui_new_tab": "Nova pestanya", "mode_settings_website_disable_csp_checkbox": "Desactiva la capçalera de la política de seguretat de contingut (permet que el vostre lloc web usi recursos de tercers)", "mode_settings_receive_data_dir_browse_button": "Navega", "mode_settings_receive_data_dir_label": "Desa els fitxers a", "mode_settings_share_autostop_sharing_checkbox": "Atura la compartició després que s'hagin enviat els fitxers (desmarqueu-ho per a permetre baixar fitxers individuals)", "mode_settings_autostop_timer_checkbox": "Atura el servei onion a una hora programada", "mode_settings_autostart_timer_checkbox": "Inicia el servei onion a una hora programada", "mode_settings_public_checkbox": "Aquest és un servei públic d'OnionShare (desactiva la clau privada)", "mode_settings_persistent_checkbox": "Obre aquesta pestanya automàticament en iniciar l'OnionShare (l'adreça onion romandrà igual)", "mode_settings_advanced_toggle_hide": "Amaga la configuració avançada", "mode_settings_advanced_toggle_show": "Mostra la configuració avançada", "gui_quit_warning_cancel": "Cancel·la", "gui_quit_warning_description": "Voleu sortir i tancar totes les pestanyes, tot i que algunes d'elles estan compartint?", "gui_quit_warning_title": "Voleu tancar l'OnionShare?", "gui_close_tab_warning_cancel": "Cancel·la", "gui_close_tab_warning_close": "D'acord", "gui_close_tab_warning_website_description": "Voleu tancar la pestanya que allotja el lloc web?", "gui_close_tab_warning_receive_description": "Voleu tancar la pestanya que rep els fitxers?", "gui_close_tab_warning_share_description": "Voleu tancar la pestanya que envia els fitxers?", "gui_close_tab_warning_persistent_description": "Voleu tancar la pestanya persistent i perdre l'adreça onion assignada?", "gui_close_tab_warning_title": "Voleu tancar la pestanya?", "gui_new_tab_website_button": "Allotjar un lloc web", "gui_new_tab_receive_button": "Rebre fitxers", "gui_qr_code_dialog_title": "Codi QR de l'OnionShare", "gui_show_qr_code": "Mostra el codi QR", "gui_receive_flatpak_data_dir": "Com que heu instal·lat l'OnionShare amb el Flatpak, heu de desar els fitxers en una carpeta dins ~/OnionShare.", "gui_chat_stop_server": "Atura el servidor de xat", "gui_chat_start_server": "Inicia el servidor de xat", "gui_file_selection_remove_all": "Treu-ho tot", "gui_remove": "Treu", "error_port_not_available": "El port d'OnionShare no està disponible", "gui_tab_name_chat": "Xat", "gui_tab_name_website": "Lloc web", "gui_tab_name_receive": "Rep", "gui_tab_name_share": "Comparteix", "gui_main_page_chat_button": "Comença el xat", "gui_main_page_website_button": "Comença l'allotjament", "gui_main_page_receive_button": "Comença la recepció", "gui_main_page_share_button": "Comença la compartició", "gui_new_tab_chat_button": "Xat anònim", "gui_open_folder_error": "No s'ha pogut obrir la carpeta amb xdg-open. El fitxer és aquí: {}", "gui_chat_url_description": "Qualsevol persona amb aquesta adreça OnionShare pot unir-se a aquesta sala de xat fent servir el Navegador Tor: ", "gui_qr_label_auth_string_title": "Clau privada", "gui_settings_bridge_moat_button": "Demana un pont nou", "gui_qr_label_url_title": "Adreça d'OnionShare", "gui_settings_tor_bridges_label": "Els ponts us ajuden a connectar amb la xarxa Tor si aquesta és blocada. Depenent de la vostra ubicació, un pont pot funcionar millor que un altre.", "gui_settings_stop_active_tabs_label": "Aquests serveis estan funcionant en alguna de les vostres pestanyes.\nAtureu tots els serveis abans de canviar les opcions del Tor.", "gui_rendezvous_cleanup": "S'està esperant que es tanquin els circuits de Tor per a assegurar que els vostres fitxers s'han transferit.\n\nAixò pot trigar una estona.", "gui_status_indicator_chat_started": "En conversa", "gui_dragdrop_sandbox_flatpak": "Perquè el sorral del Flatpak sigui més segur, no es permet arrossegar i deixar anar. Utilitzeu els botons «Afegeix fitxers» i «Afegeix una carpeta».", "gui_copy_client_auth": "Copia la clau privada", "gui_copied_client_auth_title": "S'ha copiat la clau privada", "gui_copied_client_auth": "S'ha copiat la clau privada al porta-retalls", "gui_tor_settings_window_title": "Paràmetres de Tor", "gui_settings_controller_extras_label": "Paràmetres de Tor", "gui_settings_bridge_use_checkbox": "Utilitza un pont", "gui_settings_bridge_none_radio_option": "No utilitzis ponts", "gui_settings_bridge_moat_radio_option": "Demana un pont a torproject.org", "gui_settings_bridge_custom_placeholder": "Escriviu adreça:port (un per línia)", "gui_settings_moat_bridges_invalid": "Encara no heu demanat cap pont des de torproject.org.", "gui_settings_bridge_custom_radio_option": "Proporcioneu un pont provinent d'una font de confiança", "gui_settings_bridge_radio_builtin": "Selecciona un pont predefinit", "gui_settings_version_label": "Esteu utilitzant l'OnionShare {}", "gui_settings_help_label": "Necessiteu ajuda? Veieu docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Envia una capçalera personalitzada de política de seguretat del contingut", "moat_contact_label": "S'està contactant amb BridgeDB…", "moat_captcha_label": "Resoleu el CAPTCHA per demanar un pont.", "moat_captcha_placeholder": "Escriviu els caràcters de la imatge", "moat_captcha_submit": "Envia", "moat_captcha_reload": "Torna a carregar", "moat_bridgedb_error": "No s'ha pogut contactar amb BridgeDB.", "moat_captcha_error": "La solució no és correcta. Torneu-ho a provar.", "moat_solution_empty_error": "Introduïu els caràcters de la imatge", "mode_tor_not_connected_label": "L'OnionShare no està connectat a la xarxa Tor", "gui_please_wait_no_button": "S'està iniciant…", "gui_hide": "Amaga", "gui_reveal": "Mostra", "gui_server_doesnt_support_stealth": "Aquesta versió del Tor no és compatible amb l'ofuscació (autenticació del client). Instal·leu la versió més recent del Tor o bé utilitzeu el mode «públic» si no us cal aquesta privadesa.", "gui_share_url_public_description": "Qualsevol que conegui aquesta adreça de l'OnionShare podrà baixar els vostres fitxers mitjançant el Navegador Tor: ", "gui_website_url_public_description": "Qualsevol que conegui aquesta adreça de l'OnionShare podrà visitar el vostre web mitjançant el Tor Browser: ", "gui_receive_url_public_description": "Qualsevol que conegui aquesta adreça de l'OnionShare podrà enviar fitxers al vostre ordinador mitjançant el Navegador Tor: ", "gui_chat_url_public_description": "Qualsevol que conegui aquesta adreça de l'OnionShare podrà unir-se al xat mitjançant el Navegador Tor: ", "gui_url_instructions": "Primer envieu aquesta adreça d'OnionShare:", "gui_url_instructions_public_mode": "Envieu aquesta adreça d'OnionShare:", "gui_client_auth_instructions": "A continuació, envieu la clau privada per accedir al vostre servei d'OnionShare:", "gui_status_indicator_chat_working": "S'està iniciant…", "gui_status_indicator_chat_scheduled": "Programat…", "gui_status_indicator_chat_stopped": "Aturat", "mode_settings_title_label": "Títol personalitzat", "mode_settings_receive_disable_files_checkbox": "Inhabilita l'enviament de fitxers", "mode_settings_receive_webhook_url_checkbox": "Utilitza un punt d'ancoratge web de notificació", "mode_settings_receive_disable_text_checkbox": "Inhabilita l'enviament de text", "history_receive_read_message_button": "Llegeix el missatge", "gui_rendezvous_cleanup_quit_early": "Surt abans", "gui_settings_theme_label": "Tema", "gui_settings_theme_light": "Clar", "gui_settings_theme_dark": "Fosc", "gui_color_mode_changed_notice": "Reinicieu l'OnionShare per a veure els nous colors.", "gui_settings_theme_auto": "Automàtic", "gui_autoconnect_circumventing_censorship_requesting_bridges": "S'estan sol·licitant ponts de l'API de circumval·lació de censura de Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "No s'ha pogut connectar a l'API del Tor. Comproveu que teniu connexió a internet abans de provar-ho de nou.", "gui_enable_autoconnect_checkbox": "Connecta automàticament a Tor", "gui_autoconnect_bridge_detect_automatic": "Determina el meu país a partir de la meva adreça IP per a la configuració del pont", "gui_autoconnect_bridge_detect_manual": "Selecciona manualment el meu país per a la configuració del pont", "gui_autoconnect_circumventing_censorship_got_bridges": "S'ha establit el pont. S'està reconnectant a Tor…", "gui_autoconnect_description": "L'OnionShare es basa en la xarxa Tor, operada per voluntaris.", "gui_autoconnect_failed_to_connect_to_tor": "No s'ha pogut connectar a Tor", "gui_autoconnect_trying_to_connect_to_tor": "S'està connectant a Tor…", "gui_autoconnect_connection_error_msg": "Comproveu que teniu connexió a internet.", "gui_autoconnect_bridge_description": "Podríeu connectar-vos utilitzant un pont, si la vostra connexió a internet es troba sota censura.", "gui_autoconnect_bridge_setting_options": "Paràmetres del pont", "gui_autoconnect_start": "Connecta a Tor", "gui_autoconnect_configure": "Configuració de la xarxa", "gui_autoconnect_no_bridge": "Proveu de nou sense ponts", "gui_autoconnect_try_again_without_a_bridge": "Proveu de nou sense ponts", "gui_autoconnect_circumventing_censorship": "S'estan resolent els problemes de connectivitat…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "S'està circumval·lant la censura…", "gui_autoconnect_circumventing_censorship_starting_meek": "S'està establint el pont meek per al domain-fronting…", "gui_general_settings_window_title": "General", "gui_close_tab_warning_chat_description": "Voleu tancar la pestanya que allotja un servidor de xat?", "waitress_web_server_error": "Hi ha hagut un problema en iniciar el servidor web", "gui_chat_mode_explainer": "El mode de xat us permet xatejar de manera interactiva amb altres persones al Navegador Tor.

    L'historial de xat no s'emmagatzema a OnionShare. L'historial de xat desapareixerà quan tanqueu el Navegador Tor.", "error_generic": "S'ha produït un error inesperat a l'OnionShare:\n{}", "gui_settings_license_label": "L'OnionShare es publica sota la llicència GPL v3.
    Les llicències de tercers es poden veure aquí:
    https://github.com/onionshare/onionshare/tree/main/licenses", "mode_settings_persistent_autostart_on_launch_checkbox": "Inicia de manera automàtica aquest servei onion en iniciar l'OnionShare" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ckb.json000066400000000000000000000374251521174352300272570ustar00rootroot00000000000000{ "not_a_readable_file": "‌{0:s} nikare were xwendin.", "other_page_loaded": "Malper bar bû", "incorrect_password": "Şîfre nerast ye", "close_on_autostop_timer": "Sekinî ji ber demê otomatîk-sekinandin qediya", "closing_automatically": "Sekinî ji ber wergirtin bi giştî qediya", "large_filesize": "Hîşyarî: Şandina parvekirinên mezin dikare bi demjimêran bidome", "gui_drag_and_drop": "Ji bo parvekirin destpê bike belge û dosyayan bitikîne û bikşînê", "gui_add": "Zêde bike", "gui_add_files": "Belgeyan zêde bike", "gui_add_folder": "Dosya zêde bike", "gui_remove": "Jê bibe", "gui_file_selection_remove_all": "Hemû jê bibe", "gui_choose_items": "Hilbijêre", "gui_share_start_server": "Weşanê destpê bike", "gui_share_stop_server": "Weşan biseknîne", "gui_share_stop_server_autostop_timer": "Weşan biseknîne ({})", "gui_chat_start_server": "Server yê pêwendî destpê bike", "gui_chat_stop_server": "Server yê pêwendî biseknîne", "gui_stop_server_autostop_timer_tooltip": "Demê otomatîk-seknandin di {} disekine", "gui_start_server_autostart_timer_tooltip": "Demê otomatîk-destpêkirin di {} destpê dike", "gui_receive_start_server": "Mod ya wergirtinê destpê bike", "gui_receive_stop_server": "Mod yâ wergirtinê betal bike", "gui_receive_stop_server_autostop_timer": "Mod ya wergirtinê betal bike ({} maye)", "gui_receive_flatpak_data_dir": "Ji ber tu Onionshare bi rêya Flatpak bar kir, pêwîste tu belge di dosyayek di nav ~/OnionShare qeyd bikî.", "gui_copy_url": "Malper kopî bike", "gui_canceled": "Betal bû", "gui_copied_url_title": "Malpera OnionShare kopî bû", "gui_copied_url": "Malpera OnionShare lis ser taxtê kopî bû", "gui_show_qr_code": "QR kod nîşan bide", "gui_qr_code_dialog_title": "OnionShare QR kod", "gui_waiting_to_start": "Pilankirî ye di {} destpê bike. Bitkîne ji bo betal bike.", "gui_please_wait": "Destpê dike...Bitikîne ji bo betal bike.", "zip_progress_bar_format": "Dewisandin %p%", "gui_settings_window_title": "Ayar", "gui_settings_autoupdate_label": "Ji bo versyonekî nû kontrol bike", "gui_settings_autoupdate_option": "Dema versyonekî nû derket min agahdar bike", "gui_settings_autoupdate_timestamp": "Kontrolê dawî: {}", "gui_settings_autoupdate_timestamp_never": "Tu carî nebû", "gui_settings_autoupdate_check_button": "Ji bo versyonekî nû kontrol bike", "gui_settings_connection_type_label": "OnionShare xwe çawa bi Tor ve girêbide?", "gui_settings_connection_type_bundled_option": "Versyona Tor a di nav OnionShare de hatiye ava kirin bikar bîne", "gui_settings_connection_type_automatic_option": "Hewl bide ayarê-otomatîk bi Tor-Browser bikar bîne", "gui_settings_connection_type_control_port_option": "Bi kontrol port girê bide", "gui_settings_connection_type_socket_file_option": "Bi nameya socket girê bide", "gui_settings_connection_type_test_button": "Girêdanê ji bo Tor biceribîne", "gui_settings_control_port_label": "Kontrol port", "gui_settings_socket_file_label": "Socket name", "gui_settings_socks_label": "SOCKS port", "gui_settings_authenticate_no_auth_option": "Rastbûyin kontrol neke, an kontrola rastbûyîne bi cookie", "gui_settings_authenticate_password_option": "Şîfre", "gui_settings_password_label": "Şîfre", "gui_settings_tor_bridges": "Alîkari ji pirên Tor", "gui_settings_meek_lite_expensive_warning": "Hîşyarî: Pirên meek_lite ji bo Tor Project gelek buha ne.

    Tenê bikar bîne dema tu rasterast ne bi Tor, obfs4 servîs û bi pirên ji rêzê nikarî werî girêdan.", "gui_settings_tor_bridges_invalid": "Tu pirên hilbijartî kar nakin.\nCarekî din kontrol bike an jî yên cûda zêde bike.", "gui_settings_button_save": "Qeyd bike", "gui_settings_button_cancel": "Betal bike", "gui_settings_button_help": "Alîkarî", "settings_test_success": "Bi rêvebirina Tor girêdayî ye.\n\nVersyona Tor: {}\nPiştgirî dide ephemeral onion servîs: {}.\nPiştgirî dide rastbûyîna muşterî: {}.\nPiştgirî dide malperên .onion yê pengava nû: {}.", "connecting_to_tor": "Bi tora Tor tê girêdan", "update_available": "OnionShare a nû derket. Li vir bitikîne ji bo daxistin.

    Yê kû tu niha bikar tînî {} û yê herî nû {}.", "update_error_invalid_latest_version": "Nedikarîbû ji bo versyonên nû kontrol bike: Malpera OnionShare dibêje versyona nû ya nayê bîra wî '{}'…", "update_error_check_error": "Nedikarîbû ji bo versyonên nû kontrol bike: Gelo tu bi Tor ve girêdayî nîne, an jî malpera OnionShare girtî ye?", "update_not_available": "Tu OnionShare ya herî dawî bikar tînî.", "gui_tor_connection_ask": "Ji bo hilbijartinên girêdanên Tor ayarê veke?", "gui_tor_connection_ask_open_settings": "Erê", "gui_tor_connection_ask_quit": "Betal", "gui_tor_connection_error_settings": "Hewl bide di nava ayarê de biguherîne çawa OnionShare xwe bi Tor ve girê bide.", "gui_tor_connection_canceled": "Nikarîbû bi Tor re girêbide.\n\nEkîd bike tu bi înternetê re girêdayî ye, piştre OnionShare ji nûve veke û girêdanbûne wî bi Tor ve ayar bike.", "gui_tor_connection_lost": "Girêdanbûn bi Tor ve qut bû.", "gui_server_started_after_autostop_timer": "Demê otomatîk-sekinandin qediya berê server weşand. Ji kerema xwe weşanekê nû bide detpê kirin.", "gui_server_autostop_timer_expired": "Demê otomotîk-sekinandin ji berê de qediya. Ji kerema xwe dem dirêj bike ji bo weşan destpê bike.", "gui_server_autostart_timer_expired": "Demê pilankirî derbas bû. Ji kerema xwe dîsa dirêj bike ji bo weşan destpê bike.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Demê otomatîk-qedandin nikare ji demê otomatîk-despêkirin kêmtir and wek heve bibe. Ji kerema xwe demê wê dirêjtir bike ji bo weşan despê bike.", "gui_share_url_description": "Her kesî bi vê malpera OnionShare bikare belgeryên te bi TorBrowser berjêr bike: ", "gui_website_url_description": "Her kesî bi vê malpera OnionShare dikare were li ser malpera te dema TorBrowser bikar tîne: ", "gui_receive_url_description": "Her kesekî bi vê malpera OnionShare dikare belgeran li ser komputera te bi kar anîna Tor Broweser bar bike: ", "gui_url_label_persistent": "Ev weşan otomatîk nasekine.

    Her weşanê bin vê de heman malper bikar tîne.(Ji bo maleperê yekcar bikar bînî \"Malpera bêdawî bikar bîne\" li ayarê de vemirîne.)", "gui_url_label_stay_open": "Ev weşan bi xwe ve naqede.", "gui_url_label_onetime": "Ev weşan piştî temambûna yekemîn biqede.", "gui_url_label_onetime_and_persistent": "Ev weşan otomatîk nasekine.

    Her weşanê bi vê ve girêdayî wê heman malper bikar bîne.(Ji bo malperekî yekcar bikar bînî \"Malperê bêdawî bikar bîne\" di ayarê de vemirîne.)", "gui_status_indicator_share_stopped": "وەستێنراو", "gui_status_indicator_share_working": "Destpê dike…", "gui_status_indicator_share_scheduled": "Pilankirî…", "gui_status_indicator_share_started": "Diweşîne", "gui_status_indicator_receive_stopped": "وەستێنراو", "gui_status_indicator_receive_working": "Destpê dike…", "gui_status_indicator_receive_scheduled": "Pilankirî…", "gui_status_indicator_receive_started": "Werdigire", "gui_file_info": "{} name. {}", "gui_file_info_single": "{} name, {}", "history_in_progress_tooltip": "{} di nava pêşketinê de", "history_completed_tooltip": "{} bi dawî bû", "history_requests_tooltip": "{} daxwazên torê", "error_cannot_create_data_dir": "Ava kirina data dosya yê OnionShare ne gengaz bû: {}", "gui_receive_mode_warning": "Moda wergirtinê dihêle mirovan belgeyan li ser komputerê te bar bike.

    Hinek belge belkî dikarîn kontrol li ser komputerê te bike dema to wan vekî. Tenê belgeyan ji mirovên kû tu nas dikî veke, an jî dema tu baş dizanî tu çi dikî.
    ", "gui_open_folder_error": "Vekirina doysa bi xdg-open pêk nehat. Belge li vir e: {}", "gui_settings_language_label": "Zimanê xwestî", "gui_settings_language_changed_notice": "OnionShare ji nûve veke ji bo ayarê ziman werin guhertin.", "systray_menu_exit": "Derkeve", "systray_page_loaded_title": "Malper bar bû", "systray_page_loaded_message": "Malpera OnionShare bar bû", "systray_share_started_title": "Weşandin destpêkir", "systray_share_started_message": "Destpê bike nameyan ji bo kesekî re bişîne", "systray_share_completed_title": "Weşandin qediya", "systray_share_completed_message": "Şandina nameyan qediya", "systray_share_canceled_title": "Weşandin betal bû", "systray_share_canceled_message": "Kesekî wergirtina nameyên te betal kir", "systray_receive_started_title": "Wergirtin destpê kir", "systray_receive_started_message": "Kesekî nameyan ji te re dişîne", "gui_all_modes_history": "Dîrok", "gui_all_modes_clear_history": "Hemûyan jê bibe", "gui_all_modes_transfer_started": "Destpê kirin {}", "gui_all_modes_progress_complete": "%p%, {0:s} qediya.", "gui_all_modes_progress_starting": "{0:s}, %p% (jimartin)", "gui_all_modes_progress_eta": "{0:s}, ETA:{1:s}, %p%", "gui_share_mode_no_files": "Name nehatin şandin haya niha", "gui_share_mode_autostop_timer_waiting": "Benda qedandina şandinê ye", "gui_website_mode_no_files": "Malper parve nekir haya niha", "gui_receive_mode_no_files": "Name haya niha wernegirtî", "gui_receive_mode_autostop_timer_waiting": "Bendê ye wergirtin biqede", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_new_tab": "Şibakê nû", "gui_new_tab_tooltip": "Şibakê nû veke", "gui_new_tab_share_button": "Nameyan biweşîne", "gui_new_tab_receive_button": "Nameyan werbigire", "gui_new_tab_website_button": "Malper host bike", "gui_new_tab_chat_button": "Bê nasname bikeve pêwendî", "gui_main_page_share_button": "Weşan destpê bike", "gui_main_page_receive_button": "Wergirtin despê bike", "gui_main_page_website_button": "Hosting destpê bike", "gui_main_page_chat_button": "Pêwendî dayîn despê bike", "gui_tab_name_share": "Parve bike", "gui_tab_name_receive": "Werbigire", "gui_tab_name_website": "Malper", "gui_tab_name_chat": "Pêwendî", "gui_close_tab_warning_title": "Tu bi rastî dibêjî?", "gui_close_tab_warning_persistent_description": "Ev beş herdem e. Dema tu vemirînî wê malpera onion kû bi kar tê wenda bibe. Tu bi rastî dixwazî vemirînî?", "gui_close_tab_warning_share_description": "Tu di nava şandina nameyan de ye. Tu di rastî dixwazî vê beşê vemirînî?", "gui_close_tab_warning_receive_description": "Tu niha de wergirtina nameyan de yî. Tu bi rastî dixwazî vê beşê vemirînî?", "gui_close_tab_warning_website_description": "Tu niha aktîv malperekî diweşînî. Tu bi rastî dixwazî vê beşê vermirînî?", "gui_close_tab_warning_close": "Vemirîne", "gui_close_tab_warning_cancel": "Betal bike", "gui_quit_warning_title": "Bi rastî?", "gui_quit_warning_description": "Weşandin hîn di hinek beşan de aktîf e. Dema tu vemirînî hemû beş werin girtin. Tu bi rastî dixwazî vemirînî?", "gui_quit_warning_quit": "Vemirîne", "gui_quit_warning_cancel": "Betal", "mode_settings_advanced_toggle_show": "Ayarên pêsketîtir nîsan bide", "mode_settings_advanced_toggle_hide": "Ayarên pêşketîtir veşêre", "mode_settings_persistent_checkbox": "Vê beşê qeyd bike û veke dema ez OnionShare dîsa vekim", "mode_settings_public_checkbox": "Şîfre bikar neyêne", "mode_settings_autostart_timer_checkbox": "Servîsa onion di wextekî ayarkirî despê bike", "mode_settings_autostop_timer_checkbox": "Servîsa onion di wextekî ayarkirî biseknîne", "mode_settings_share_autostop_sharing_checkbox": "Parvekirin piştî name haitn şandin biseknîne (Ji bo destûra berjêrkirina nameyên yekane tikandin derbixe)", "mode_settings_receive_data_dir_label": "Nameyan li qeyd bike", "mode_settings_receive_data_dir_browse_button": "Bigere", "mode_settings_website_disable_csp_checkbox": "Sernivîsa kanûnên naveroka ewlekarî rê neke (destûr dide malpera te bi kaniyên sêyemîn kar bike)", "gui_all_modes_transfer_finished_range": "Şandî {} - {}", "gui_all_modes_transfer_finished": "Şandî {}", "gui_all_modes_transfer_canceled_range": "Betal bû {} - {}", "gui_all_modes_transfer_canceled": "Betal bû {}", "settings_error_unknown": "Nikarbû bi Tor girê bide ji ber ayarê te li hev nayên.", "settings_error_automatic": "Girêdanbûn bi navenda rêveberina Tor pêk nehat. Gelo Tor Browser (amade li torproject.org) li piştê de dixebite?", "settings_error_socket_port": "Girêdan bi rêveberina Tor pêk nehat {}:{}.", "settings_error_socket_file": "Girêdan bi rêvebirina Tor dema bikaranîa nameya socket pêk nehat{}.", "settings_error_auth": "Bi {}:{} girêdayî ye, lê nikare jê bawer bike. Gelo ev ne rêvebirina Tor ye?", "settings_error_missing_password": "Bi rêvebirina Tor girêdayî ye, lê ji bo bawer kirinê şîfre dixwaze.", "settings_error_unreadable_cookie_file": "Bi rêvebirina Tor girêdayî te, lê şîfre rast nîne an jî destûra hesabê te ji xwendina nameya cookie nîne.", "settings_error_bundled_tor_not_supported": "Bikaranîna nifşa Tor yê kû bi OnionShare bi hevre tê di moda avasazî de li ser Windows û macOS wê kar neke.", "settings_error_bundled_tor_timeout": "Ji bo bi Tor re girê bide gelekî dirêj dike. Gelo tu ne bi înternetê re girêdayî ye an jî demê şîstema te neraste ?", "settings_error_bundled_tor_broken": "OnionShare nedikarî xwe bi Tor girêbide:\n{}", "error_port_not_available": "Port yê OnionShare tune", "gui_rendezvous_cleanup_quit_early": "Zû bigire", "gui_rendezvous_cleanup": "Li bendê ne haya kû Tor rêya hatî bikaranîn dîsa bigire ji bo ekîd bike nameyên te serkeftî hatine şandin.\n\nEw dikare hinek xulekan bidome.", "gui_chat_url_description": " Herkesî bi vê navnîşanê OnionShare dikaretevlî vê rûniştinê bibebi bikaranîna Tor Browser:", "gui_settings_theme_label": "ڕووکار", "gui_settings_theme_light": "ڕووناکی", "gui_settings_theme_dark": "تاریک", "gui_settings_bridge_none_radio_option": "Piran bi kar neyne", "gui_receive_url_public_description": "Her kesekî bi vê malpera OnionShare dikare belgeran li ser komputera te bi kar anîna Tor Broweser bar bike: ", "gui_chat_url_public_description": " Herkesî bi vê navnîşanê OnionShare dikaretevlî vê rûniştinê bibebi bikaranîna Tor Browser:", "gui_status_indicator_chat_working": "Destpê dike…", "gui_status_indicator_chat_scheduled": "Pilankirî…", "gui_please_wait_no_button": "Destpê dike…", "gui_share_url_public_description": "Her kesî bi vê malpera OnionShare bikare belgeryên te bi TorBrowser berjêr bike: ", "gui_website_url_public_description": "Her kesî bi vê malpera OnionShare dikare were li ser malpera te dema TorBrowser bikar tîne: ", "gui_settings_theme_auto": "خۆکار", "moat_captcha_submit": "پێشکەشکردن", "gui_general_settings_window_title": "گشتی", "gui_hide": "Hide", "moat_captcha_reload": "Reload", "gui_status_indicator_chat_stopped": "وەستێنراو" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/cs.json000066400000000000000000000530451521174352300271210ustar00rootroot00000000000000{ "other_page_loaded": "Načtená adresa", "closing_automatically": "Zastaveno, protože přenos je dokončen", "large_filesize": "Varování: Posílání velkých souborů může trvat hodiny", "gui_drag_and_drop": "Přetažením souborů a složek můžete začít sdílet", "gui_add": "Přidat", "gui_choose_items": "Vybrat", "gui_share_start_server": "Spustit sdílení", "gui_share_stop_server": "Zastavit sdílení", "gui_copy_url": "Zkopírovat URL", "gui_canceled": "Zrušeno", "gui_copied_url": "URL zkopírováno do schránky", "gui_please_wait": "Spouštění... klikněte pro zrušení.", "gui_quit_warning_quit": "Ukončit", "zip_progress_bar_format": "Komprese: %p%", "gui_settings_window_title": "Nastavení", "gui_settings_connection_type_label": "Jak by se měl OnionShare připojit k Toru?", "gui_settings_connection_type_automatic_option": "Zkusit automatické nastavení s prohlížečem Tor Browser", "gui_settings_connection_type_control_port_option": "Připojení pomocí řídicího portu (control port)", "gui_settings_connection_type_socket_file_option": "Připojit použitím socket souboru", "gui_settings_control_port_label": "Control port", "gui_settings_socket_file_label": "Socket file", "gui_settings_authenticate_no_auth_option": "Žádné ověřování nebo ověřování pomocí souborů cookie", "gui_settings_authenticate_password_option": "Heslo", "gui_settings_password_label": "Heslo", "gui_settings_button_save": "Uložit", "gui_settings_button_cancel": "Zrušit", "settings_error_unknown": "Nelze se připojit k řadiči Tor, protože vaše nastavení nedává smysl.", "settings_error_automatic": "Nepodařilo se připojit k řadiči Tor. Je prohlížeč Tor Browser (dostupný z torproject.org) spuštěn na pozadí?", "settings_error_socket_port": "Nepodařilo se připojit k řadiči Toru na {}:{}.", "settings_error_socket_file": "Nepodařilo se připojit k řadiči Toru pomocí socket souboru {}.", "settings_error_auth": "Připojeno k {}:{}, ale nelze ověřit. Možná se nejedná o řadič Tor?", "settings_error_missing_password": "Připojen k řadiči Toru, ale vyžaduje heslo pro ověření.", "settings_error_unreadable_cookie_file": "Připojen k řadiči Tor, ale nelze ověřit, neboť heslo je možná špatné, či chybí povolení číst soubor cookie.", "settings_test_success": "Připojeno k řadiči Tor.\n\nVerze Tor: {}\nPodporuje efemérní onionslužby: {}.\nPodporuje ověřování klienta: {}.\nPodporuje adresy nové generace .onion: {}.", "error_tor_protocol_error": "V systému Tor došlo k chybě: {}", "not_a_readable_file": "{0:s} není čitelný soubor.", "systray_menu_exit": "Ukončit", "gui_share_stop_server_autostop_timer": "Zastavit sdílení ({})", "gui_receive_start_server": "Spustit přijímací mód", "gui_receive_stop_server": "Zastavit příjem", "gui_receive_stop_server_autostop_timer": "Zastavit přijímací mód (zbývá {})", "gui_copied_url_title": "OnionShare adresa byla zkopírována", "gui_settings_autoupdate_label": "Kontrola nové verze", "gui_settings_autoupdate_option": "Upozornit na dostupnost nové verze", "gui_settings_autoupdate_timestamp": "Poslední kontrola {}", "gui_settings_autoupdate_timestamp_never": "Nikdy", "gui_settings_autoupdate_check_button": "Kontrola nové verze", "gui_settings_connection_type_bundled_option": "Použít verzi Toru vestavěnou v OnionShare", "gui_settings_connection_type_test_button": "Vyzkoušet připojení k Toru", "gui_settings_tor_bridges": "Připojit se pomocí mostu Tor?", "gui_add_files": "Přidat soubory", "gui_add_folder": "Přidat adresář", "close_on_autostop_timer": "Zastaveno, protože vypršel časovač automatického zastavení", "gui_stop_server_autostop_timer_tooltip": "Časovač automatického zastavení skončí v {}", "gui_start_server_autostart_timer_tooltip": "Časovač automatického zastavení skončí v {}", "gui_waiting_to_start": "Naplánovaný start v {}. Klikněte pro zrušení.", "incorrect_password": "Nesprávné heslo", "gui_hide": "Skrýt", "gui_reveal": "Ukázat", "gui_qr_label_auth_string_title": "Soukromý klíč", "gui_qr_label_url_title": "OnionShare adresa", "gui_qr_code_dialog_title": "OnionShare QR kód", "gui_show_qr_code": "Zobrazit QR kód", "gui_copied_client_auth": "Soukromý klíč byl zkopírován do schránky", "gui_copied_client_auth_title": "Soukromý klíč byl zkopírován", "gui_please_wait_no_button": "Spouštění…", "gui_copy_client_auth": "Zkopírovat soukromý klíč", "gui_receive_flatpak_data_dir": "Protože jste nainstalovali OnionShare pomocí Flatpaku, musíte soubory uložit do složky v ~/OnionShare.", "gui_chat_stop_server": "Zastavit chatovací server", "gui_chat_start_server": "Spustit chatovací server", "gui_file_selection_remove_all": "Odstranit vše", "gui_remove": "Odstranit", "gui_dragdrop_sandbox_flatpak": "Aby byl Flatpak sandbox bezpečnější, drag and drop není podporováno. Místo toho k výběru souborů použijte tlačítka \"Přidat soubory\" a \"Přidat adresář\".", "gui_tor_settings_window_title": "Nastavení Toru", "gui_settings_controller_extras_label": "Nastavení Toru", "gui_settings_tor_bridges_label": "Mosty pomáhají vašemu provozu vstoupit do sítě Tor, pokud je přístup přes Tor blokován. V závislosti na tom kde se nacházíte, může jeden most fungovat lépe než jiný.", "gui_settings_bridge_use_checkbox": "Použít most", "gui_settings_bridge_radio_builtin": "Vyberte vestavěný most", "gui_settings_bridge_none_radio_option": "Nepoužívat most", "gui_settings_bridge_moat_radio_option": "Vyžádat most z torproject.org", "gui_settings_bridge_custom_radio_option": "Poskytnout most, o kterém jste se dozvěděli z důvěryhodného zdroje", "gui_settings_version_label": "Používáte OnionShare {}", "gui_settings_help_label": "Potřebujete pomoc? Navštivte docs.onionshare.org", "gui_tor_connection_ask": "Otevřít nastavení a vyřešit připojení k Toru?", "gui_settings_stop_active_tabs_label": "V některých panelech jsou spuštěny služby.\nChcete-li změnit nastavení Tor, musíte všechny služby zastavit.", "gui_share_url_public_description": "Kdokoliv s touto OnionShare adresou může stahovat vaše soubory pomocí prohlížeče Tor Browser: ", "gui_website_url_public_description": "Kdokoliv s touto OnionShare adresou může navštívit vaši stránku pomocí prohlížeče Tor Browser: ", "gui_url_label_onetime": "Toto sdílení se zastaví po prvním dokončení.", "gui_url_instructions": "Nejprve odešlete níže uvedenou adresu služby OnionShare:", "gui_share_mode_autostop_timer_waiting": "Dokončování odesílání…", "gui_receive_mode_autostop_timer_waiting": "Dokončování přijímání…", "mode_settings_persistent_checkbox": "Uložit tento panel a automaticky ho otevřít při dalším spuštění OnionShare", "mode_settings_share_autostop_sharing_checkbox": "Zastavit sdílení po odeslání souborů (zrušením zaškrtnutí povolíte stahování jednotlivých souborů)", "mode_settings_receive_disable_text_checkbox": "Zakázat odesílání textu", "mode_settings_receive_disable_files_checkbox": "Zakázat nahrávání souborů", "mode_settings_receive_webhook_url_checkbox": "Využít notifikační webhook", "mode_settings_website_disable_csp_checkbox": "Neodesílat výchozí hlavičku Zásady zabezpečení obsahu (umožňuje vašim webovým stránkám používat zdroje třetích stran)", "error_port_not_available": "Port OnionShare není k dispozici", "history_receive_read_message_button": "Přečíst zprávu", "moat_captcha_submit": "Odeslat", "moat_captcha_reload": "Načíst znovu", "moat_contact_label": "Kontaktování BridgeDB…", "moat_captcha_label": "Pro žádost o most vyřešte CAPTCHA.", "moat_captcha_placeholder": "Zadejte znaky z obrázku", "moat_bridgedb_error": "Nebylo možné kontaktovat BridgeDB.", "moat_captcha_error": "Nesprávné řešení. Zkuste to prosím znovu.", "moat_solution_empty_error": "Zadejte znaky z obrázku", "mode_tor_not_connected_label": "OnionShare není připojen k síti Tor", "gui_url_instructions_public_mode": "Odeslat adresu OnionShare uvedenou níže:", "gui_client_auth_instructions": "Dále zašlete soukromý klíč pro umožnění přístupu k Vaší službě OnionShare :", "gui_status_indicator_chat_stopped": "Zastaven", "gui_status_indicator_receive_working": "Spouštím…", "gui_status_indicator_chat_scheduled": "Naplánováno…", "gui_status_indicator_chat_working": "Spouštím…", "gui_file_info_single": "{} soubor, {}", "gui_status_indicator_chat_started": "Chatuji", "error_cannot_create_data_dir": "Nepodařilo se vytvořit datovou složku OnionShare: {}", "gui_file_info": "{} souborů, {}", "gui_settings_language_label": "Jazyk", "gui_settings_language_changed_notice": "Pro změnu jazyka restartujte OnionShare.", "hours_first_letter": "h", "gui_new_tab_receive_button": "Příjem souborů", "minutes_first_letter": "m", "gui_new_tab_chat_button": "Chatuj anonymně", "gui_tab_name_chat": "Chat", "gui_close_tab_warning_title": "Zavřít panel?", "gui_quit_warning_title": "Ukončit OnionShare?", "gui_new_tab_tooltip": "Otevřít nový panel", "gui_quit_warning_description": "Ukončit a zavřít všechny panely, i když je sdílení v některých z nich stále aktivní?", "mode_settings_title_label": "Vlastní název", "gui_rendezvous_cleanup": "Čekání na uzavření obvodů Tor, abyste měli jistotu, že se vaše soubory přenesly.\n\nTo může trvat několik minut.", "gui_rendezvous_cleanup_quit_early": "Předčasné ukončení", "settings_error_bundled_tor_timeout": "Připojení k síti Tor trvá příliš dlouho. Možná nejste připojeni k internetu nebo máte nepřesné systémové hodiny?", "settings_error_bundled_tor_broken": "Služba OnionShare se nemohla připojit k síti Tor:\n{}", "gui_settings_theme_label": "Vzhled", "gui_settings_theme_auto": "Automaticky", "gui_settings_theme_light": "Světlý", "gui_settings_theme_dark": "Tmavý", "gui_all_modes_transfer_canceled": "Zrušeno {}", "gui_all_modes_transfer_finished": "Přeneseno {}", "gui_all_modes_transfer_canceled_range": "Zrušeno {} - {}", "gui_all_modes_transfer_finished_range": "Přeneseno {} - {}", "mode_settings_receive_data_dir_browse_button": "Procházet", "mode_settings_receive_data_dir_label": "Uložit soubory do", "mode_settings_autostop_timer_checkbox": "Ukončit službu onion v naplánovaný čas", "gui_tab_name_website": "Webová stránka", "gui_tab_name_receive": "Příjem", "days_first_letter": "d", "seconds_first_letter": "s", "gui_share_mode_no_files": "Zatím nebyly odeslány žádné soubory", "gui_all_modes_transfer_started": "Započalo {}", "gui_all_modes_history": "Historie", "systray_share_completed_message": "Sdílení souborů dokončeno", "systray_page_loaded_message": "Adresa OnionShare načtena", "systray_share_started_title": "Sdílení započalo", "gui_open_folder_error": "Složku se nepodařilo otevřít pomocí xdg-open. Soubor je zde: {}", "gui_receive_mode_warning": "Režim příjímání umožňuje nahrávat soubory do Vašeho počítače.

    Některé soubory mohou potenciálně převzít kontrolu nad vaším počítačem, pokud je otevřete. Otevírejte pouze věci od lidí, kterým důvěřujete, nebo pokud víte, co děláte.", "history_requests_tooltip": "{} webových požadavků", "history_completed_tooltip": "{} dokončeno", "history_in_progress_tooltip": "{} v procesu", "gui_status_indicator_receive_stopped": "Zastaven", "gui_status_indicator_share_started": "Sdílení", "gui_status_indicator_share_working": "Startuje…", "gui_status_indicator_share_scheduled": "Naplánováno…", "gui_status_indicator_share_stopped": "Zastaven", "gui_website_url_description": "Kdokoliv s touto OnionShare adresou a soukromým klíčem může navštívit vaši stránku pomocí prohlížeče Tor Browser: ", "gui_server_autostop_timer_expired": "Časovač automatického zastavení již vypršel. Nastavte jej, abyste mohli začít sdílet.", "gui_tor_connection_lost": "Odpojeno od sítě Tor.", "gui_tor_connection_ask_quit": "Odejít", "gui_tor_connection_ask_open_settings": "Ano", "update_not_available": "Používáte aktuální verzi OnionShare.", "gui_server_autostart_timer_expired": "Plánovaný čas již uplynul. Nastavte jej, abyste mohli začít sdílet.", "gui_settings_meek_lite_expensive_warning": "Varování: Provoz mostů meek-azure je pro projekt Tor velmi nákladný.

    Používejte je pouze v případě, kdy se nemůžete připojit k Toru přímo, přes obfs4 transporty nebo jiné běžné mosty.", "update_error_invalid_latest_version": "Nepodařilo se zkontrolovat novou verzi: Na webu OnionShare se objevuje hlášení, že nejnovější verze je nerozpoznatelná '{}'…", "update_error_check_error": "Nepodařilo se zkontrolovat novou verzi: Možná nejste připojeni k Toru nebo je webová stránka OnionShare nedostupná?", "gui_settings_tor_bridges_invalid": "Žádný z Vámi přidaných mostů nefunguje. Zkontrolujte je nebo přidejte další.", "gui_tor_connection_error_settings": "Zkuste v nastavení změnit způsob připojení služby OnionShare k síti Tor.", "gui_settings_button_help": "Nápověda", "connecting_to_tor": "Připojování k síti Tor", "gui_tor_connection_canceled": "Nepodařilo se připojit k síti Tor.\n\nUjistěte se, že jste připojeni k internetu, a poté znovu otevřete aplikaci OnionShare a nastavte její připojení k Toru.", "gui_share_url_description": "Kdokoliv s touto OnionShare adresou a soukromým klíčem může stahovat vaše soubory pomocí prohlížeče Tor Browser: ", "gui_receive_url_description": "Kdokoliv s touto OnionShare adresou a soukromým klíčem může nahrávat soubory do Vašeho počítače pomocí prohlížeče Tor Browser: ", "gui_chat_url_public_description": "Kdokoliv s touto OnionShare adresou se může připojit k této chatovací místnosti pomocí prohlížeče Tor Browser: ", "systray_share_canceled_message": "Někdo zrušil příjem Vašich souborů", "gui_main_page_share_button": "Zahájit sdílení", "gui_close_tab_warning_share_description": "Zavřít panel, který odesílá soubory?", "gui_url_label_persistent": "Sdílení se automaticky nezastaví.

    Každé budoucí sdílení znovu využije tuto adresu. (Pro použití jednorázových adres vypněte \"Používat trvalé adresy\" v nastavení.)", "systray_page_loaded_title": "Stránka načtena", "gui_new_tab": "Nový panel", "gui_main_page_chat_button": "Zahájit chat", "gui_close_tab_warning_website_description": "Zavřít panel, který hostuje webovou stránku?", "gui_url_label_stay_open": "Toto sdílení se nezastaví automaticky.", "gui_status_indicator_receive_scheduled": "Naplánováno…", "gui_main_page_website_button": "Zahájit hostování", "gui_close_tab_warning_persistent_description": "Zavřít trvalý panel a ztratit onion adresu, kterou používá?", "gui_status_indicator_receive_started": "Přijímám", "gui_all_modes_progress_eta": "{0:s}, Přibližně: {1:s}, %p%", "gui_tab_name_share": "Sdílení", "gui_close_tab_warning_receive_description": "Zavřít panel, který přijímá soubory?", "gui_close_tab_warning_close": "Ok", "gui_website_mode_no_files": "Zatím nejsou sdíleny žádné webové stránky", "gui_receive_mode_no_files": "Zatím nebyly přijaty žádné soubory", "gui_close_tab_warning_cancel": "Zrušit", "mode_settings_website_custom_csp_checkbox": "Odeslání vlastního záhlaví zásad zabezpečení obsahu", "gui_main_page_receive_button": "Zahájit příjem", "gui_autoconnect_description": "OnionShare se spoléhá na síť Tor provozovanou tisícemi dobrovolníků po celém světě.", "gui_enable_autoconnect_checkbox": "Automaticky se připojovat k síti Tor", "gui_autoconnect_failed_to_connect_to_tor": "Nepodařilo se připojit k síti Tor", "gui_autoconnect_trying_to_connect_to_tor": "Pokus o připojení k síti Tor…", "gui_autoconnect_connection_error_msg": "Ujistěte se, že jste připojeni k internetu.", "gui_autoconnect_bridge_description": "Je také možné, že je Váš internet cenzurován. Možná se vám to podaří obejít pomocí bridge.", "gui_autoconnect_bridge_detect_automatic": "Automaticky určit mou zemi podle mé IP adresy pro nastavení mostu", "gui_autoconnect_bridge_detect_manual": "Manuálně vybrat mou zemi pro nastavení mostu", "gui_autoconnect_bridge_setting_options": "Nastavení mostu", "gui_autoconnect_start": "Připojit se k Toru", "gui_autoconnect_configure": "Nastavení sítě", "gui_autoconnect_no_bridge": "Zkuste to znovu bez mostu", "gui_autoconnect_try_again_without_a_bridge": "Zkuste to znovu bez mostu", "gui_autoconnect_circumventing_censorship": "Pokus o vyřešení problémů s připojením…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Zahájení procesu obcházení cenzury…", "gui_autoconnect_circumventing_censorship_starting_meek": "Spouštím meek pro domain-fronting…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Vyžádání mostů z Tor Censorship Circumvention API…", "gui_autoconnect_circumventing_censorship_got_bridges": "Mosty získány! Pokus o opětovné připojení k síti Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "Nepodařilo se připojit k rozhraní Tor API. Před dalším pokusem se ujistěte, že jste připojeni k internetu.", "gui_general_settings_window_title": "Obecné", "gui_settings_bridge_moat_button": "Vyžádat si nový most", "gui_settings_bridge_custom_placeholder": "Zadejte adresa:port (jeden na řádek)", "gui_settings_moat_bridges_invalid": "Zatím jste si nevyžádali most od torproject.org.", "update_available": "Nová verze OnionShare je k dispozici. Klikněte zde a získejte ji.

    Používáte {}, nejnovější je {}.", "gui_server_started_after_autostop_timer": "Časovač automatického zastavení vypršel před spuštěním serveru. Vytvořte prosím nové sdílení.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Čas automatického zastavení nesmí být stejný nebo dřívější než čas automatického spuštění. Nastavte jej, abyste mohli začít sdílet.", "gui_server_doesnt_support_stealth": "Omlouváme se, ale tato verze Toru nepodporuje funkci stealth (ověřování klienta). Zkuste to prosím s novější verzí Toru nebo použijte režim \"public\", pokud nemusí být soukromý.", "gui_receive_url_public_description": "Kdokoliv s touto OnionShare adresou může nahrávat soubory do Vašeho počítače pomocí prohlížeče Tor Browser: ", "gui_chat_url_description": "Kdokoliv s touto OnionShare adresou a soukromým klíčem se může připojit k této chatovací místnosti pomocí prohlížeče Tor Browser: ", "gui_url_label_onetime_and_persistent": "Sdílení se automaticky nezastaví.

    Každé budoucí sdílení znovu využije tuto adresu. (Pro použití jednorázových adres vypněte \"Používat trvalé adresy\" v nastavení.)", "gui_all_modes_progress_complete": "%p%, {0:s} uplynulo.", "gui_color_mode_changed_notice": "Pro změny vzhledu restartujte OnionShare.", "systray_share_started_message": "Začínáte někomu odesílat soubory", "systray_share_completed_title": "Přenos dokončen", "systray_share_canceled_title": "Přenos zrušen", "systray_receive_started_title": "Příjem zahájen", "systray_receive_started_message": "Někdo vám posílá soubory", "gui_all_modes_clear_history": "Vyčistit vše", "gui_all_modes_progress_starting": "{0:s}, %p% (probíhá výpočet)", "gui_new_tab_share_button": "Sdílet soubory", "gui_new_tab_website_button": "Hosting webové stránky", "gui_quit_warning_cancel": "Zrušit", "mode_settings_advanced_toggle_show": "Ukázat pokročilá nastavení", "mode_settings_advanced_toggle_hide": "Skrýt pokročila nastavení", "mode_settings_public_checkbox": "Toto je veřejná služba OnionShare (vypnout soukromý klíč)", "mode_settings_autostart_timer_checkbox": "Spustit službu onion v naplánovaný čas", "settings_error_bundled_tor_not_supported": "Používání verze Toru dodávané se službou OnionShare nefunguje v režimu pro vývojáře v systémech Windows a macOS.", "gui_close_tab_warning_chat_description": "Zavřít kartu, která hostuje chat server?", "waitress_web_server_error": "Došlo k chybě při spuštění webového serveru", "gui_settings_socks_label": "SOCKS port", "gui_chat_mode_explainer": "Režim chatu umožňuje interaktivně chatovat s ostatními v rámci Prohlížeče Tor.

    Historie chatu není uložena v OnionShare. Historie chatu zmizí, když zavřete Prohlížeč Tor." } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/da.json000066400000000000000000000446641521174352300271070ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} er ikke en læsbar fil.", "other_page_loaded": "Adresse indlæst", "close_on_autostop_timer": "Stoppede fordi timer med automatisk stop løb ud", "closing_automatically": "Stoppede fordi overførslen er færdig", "large_filesize": "Advarsel: Det kan tage timer at sende en stor deling", "systray_menu_exit": "Afslut", "gui_drag_and_drop": "Træk og slip filer og mapper her for at begynde at dele", "gui_add": "Tilføj", "gui_choose_items": "Vælg", "gui_share_start_server": "Begynd at dele", "gui_share_stop_server": "Stop deling", "gui_copy_url": "Kopiér adresse", "gui_canceled": "Annulleret", "gui_copied_url": "OnionShare-adressen blev kopieret til udklipsholderen", "gui_please_wait": "Starter ... klik for at annullere.", "gui_quit_warning_quit": "Afslut", "zip_progress_bar_format": "Komprimerer: %p%", "gui_settings_window_title": "Indstillinger", "gui_settings_autoupdate_label": "Søg efter ny version", "gui_settings_autoupdate_option": "Giv mig besked når der findes en ny version", "gui_settings_autoupdate_timestamp": "Sidste søgning: {}", "gui_settings_autoupdate_timestamp_never": "Aldrig", "gui_settings_autoupdate_check_button": "Søg efter ny version", "gui_settings_connection_type_label": "Hvordan skal OnionShare oprette forbindelse til Tor?", "gui_settings_connection_type_bundled_option": "Brug den Tor-version som er indbygget i OnionShare", "gui_settings_connection_type_automatic_option": "Prøv autokonfiguration med Tor Browser", "gui_settings_connection_type_control_port_option": "Opret forbindelse med kontrolport", "gui_settings_connection_type_socket_file_option": "Opret forbindelse med sokkelfil", "gui_settings_connection_type_test_button": "Test forbindelsen til Tor", "gui_settings_control_port_label": "Kontrolport", "gui_settings_socket_file_label": "Sokkelfil", "gui_settings_socks_label": "SOCKS-port", "gui_settings_authenticate_no_auth_option": "Ingen autentifikation, eller cookieautentifikation", "gui_settings_authenticate_password_option": "Adgangskode", "gui_settings_password_label": "Adgangskode", "gui_settings_tor_bridges": "Opret forbindelse med en Tor-bro?", "gui_settings_tor_bridges_invalid": "Ingen at de broer du tilføjede virker. Dobbelttjek dem eller tilføj andre.", "gui_settings_button_save": "Gem", "gui_settings_button_cancel": "Annuller", "gui_settings_button_help": "Hjælp", "settings_error_unknown": "Kan ikke oprette forbindelse til Tor-kontroller da dine indstillingerne ikke giver mening.", "settings_error_automatic": "Kunne ikke oprette forbindelse til Tor-kontrolleren. Kører Tor Browser (tilgængelige fra torproject.org) i baggrunden?", "settings_error_socket_port": "Kan ikke oprette forbindelse til Tor-kontrolleren på {}:{}.", "settings_error_socket_file": "Kan ikke oprette forbindelse til Tor-kontrolleren med sokkelfilen {}.", "settings_error_auth": "Forbundet til {}:{}, men kan ikke autentificere. Er det fordi det ikke er en Tor-kontroller?", "settings_error_missing_password": "Forbundet til Tor-kontroller, men den kræver en adgangskode for at autentificere.", "settings_error_unreadable_cookie_file": "Forbundet til Tor-kontrolleren, men adgangskoden kan være forkert, eller din bruger har ikke tilladelse til at læse cookiefilen.", "settings_error_bundled_tor_not_supported": "Brug af den Tor-version som kom med OnionShare virker ikke i udviklertilstand på Windows eller macOS.", "settings_error_bundled_tor_timeout": "For længe om at oprette forbindelse til Tor. Måske har du ikke forbindelse til internettet, eller går dit systems ur forkert?", "settings_error_bundled_tor_broken": "OnionShare kunne ikke oprette forbindelse til Tor:\n{}", "settings_test_success": "Forbundet til Tor-kontrolleren.\n\nTor version: {}\nUnderstøtter kortvarige oniontjenester: {}.\nUnderstøtter klientautentifikation: {}.\nUnderstøtter næstegenerations .onion-adresser: {}.", "error_tor_protocol_error": "Der opstod en fejl med Tor: {}", "connecting_to_tor": "Opretter forbindelse til Tor-netværket", "update_available": "Der findes en ny OnionShare. Klik her for at hente den.

    Du bruger {} og den seneste er {}.", "update_error_check_error": "Kunne ikke søge efter nye version: Måske har du ikke oprettet forbindelse til Tor eller også er OnionShare-webstedet nede?", "update_error_invalid_latest_version": "Kunne ikke søge efter ny version: OnionShare-webstedet siger at den seneste version er den ugenkendelige '{}' …", "update_not_available": "Du kører den seneste OnionShare.", "gui_tor_connection_ask": "Åbn indstillingerne for at rette forbindelsen til Tor?", "gui_tor_connection_ask_open_settings": "Ja", "gui_tor_connection_ask_quit": "Afslut", "gui_tor_connection_error_settings": "Prøv at ændre måden hvorpå OnionShare opretter forbindelse til Tor-netværket, i indstillingerne.", "gui_tor_connection_canceled": "Kunne ikke oprette forbindelse til Tor.\n\nSørg for at du har forbindelse til internettet, og åbn herefter OnionShare igen for at opsætte dens forbindelse til Tor.", "gui_tor_connection_lost": "Der er ikke oprettet forbindelse til Tor.", "gui_server_started_after_autostop_timer": "Timeren med automatisk stop løb ud inden serveren startede. Opret venligst en ny deling.", "gui_server_autostop_timer_expired": "Timeren med automatisk stop er allerede løbet ud. Juster den venligst for at begynde at dele.", "gui_copied_url_title": "OnionShare-adresse kopieret", "gui_url_label_persistent": "Delingen stopper ikke automatisk.

    Enhver efterfølgende deling bruger den samme adresse igen (hvis du vil bruge engangsadresser, så deaktivér \"Brug vedvarende adresse\", i indstillingerne).", "gui_url_label_stay_open": "Delingen stopper ikke automatisk.", "gui_url_label_onetime": "Delingen stopper efter den er færdig for første gang.", "gui_url_label_onetime_and_persistent": "Delingen stopper ikke automatisk.

    Enhver efterfølgende deling bruger den samme adresse igen (hvis du vil bruge engangsadresser, så deaktivér \"Brug vedvarende adresse\", i indstillingerne).", "gui_file_info": "{} filer, {}", "gui_file_info_single": "{} fil, {}", "gui_share_stop_server_autostop_timer": "Stop deling ({})", "gui_receive_start_server": "Start modtagetilstand", "gui_receive_stop_server": "Stop modtagetilstand", "gui_receive_stop_server_autostop_timer": "Stop modtagetilstand ({} tilbage)", "gui_status_indicator_share_stopped": "Stoppet", "gui_status_indicator_share_working": "Starter …", "gui_status_indicator_share_started": "Deler", "gui_status_indicator_receive_stopped": "Stoppet", "gui_status_indicator_receive_working": "Starter …", "gui_status_indicator_receive_started": "Modtager", "systray_page_loaded_title": "Side indlæst", "gui_settings_language_label": "Foretrukne sprog", "gui_settings_language_changed_notice": "Genstart OnionShare for at skifte til det nye sprog.", "gui_settings_meek_lite_expensive_warning": "Advarsel: meek_lite-broerne er meget dyre at køre for Tor-projektet.

    Brug dem kun hvis du ikke er i stand til at oprette forbindelse til Tor direkte, via obfs4-transporter eller andre normale broer.", "gui_share_url_description": "Alle med OnionShare-adressen kan downloade dine filer, med Tor Browser: ", "gui_receive_url_description": "Alle med OnionShare-adressen kan uploade filer til din computer, med Tor Browser: ", "history_in_progress_tooltip": "{} igangværende", "history_completed_tooltip": "{} færdige", "gui_receive_mode_warning": "Modtagetilstand lader folk uploade filer til din computer.

    Nogle filer kan potentielt tage kontrol over din computer hvis du åbner dem. Åbn kun ting fra folk du har tillid til, eller hvis du ved hvad du gør.", "gui_add_files": "Tilføj filer", "gui_add_folder": "Tilføj mappe", "error_cannot_create_data_dir": "Kunne ikke oprette OnionShare-datamappe: {}", "systray_page_loaded_message": "OnionShare-adresse indlæst", "systray_share_started_title": "Deling startet", "systray_share_started_message": "Starter på at sende filer til nogen", "systray_share_completed_title": "Deling færdig", "systray_share_completed_message": "Færdig med at sende filer", "systray_share_canceled_title": "Deling annulleret", "systray_share_canceled_message": "Nogen annullerede modtagelsen af dine filer", "systray_receive_started_title": "Modtagelse startet", "systray_receive_started_message": "Nogen sender filer til dig", "gui_all_modes_history": "Historik", "gui_all_modes_clear_history": "Ryd alle", "gui_all_modes_transfer_started": "Startede {}", "gui_all_modes_transfer_finished_range": "Overførte {} - {}", "gui_all_modes_transfer_finished": "Overførte {}", "gui_all_modes_progress_complete": "%p%, {0:s} forløbet.", "gui_all_modes_progress_starting": "{0:s}, %p% (udregner)", "gui_all_modes_progress_eta": "{0:s}, anslået ankomsttid: {1:s}, %p%", "gui_share_mode_no_files": "Der er endnu ikke sendt nogle filer", "gui_share_mode_autostop_timer_waiting": "Færdiggør afsendelse …", "gui_receive_mode_no_files": "Der er endnu ikke modtaget nogle filer", "gui_receive_mode_autostop_timer_waiting": "Færdiggør modtagelse …", "gui_all_modes_transfer_canceled_range": "Annullerede {} - {}", "gui_all_modes_transfer_canceled": "Annullerede {}", "gui_stop_server_autostop_timer_tooltip": "Timer med automatisk stop slutter {}", "gui_start_server_autostart_timer_tooltip": "Timer med automatisk start slutter {}", "gui_waiting_to_start": "Planlagt til start om {}. Klik for at annullere.", "gui_server_autostart_timer_expired": "Det planlagte tidspunkt er allerede passeret. Juster det venligst for at begynde at dele.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Timeren med automatisk stop må ikke være det samme som eller tidligere end timeren med automatisk start. Juster den venligst for at begynde at dele.", "gui_status_indicator_share_scheduled": "Planlagt …", "gui_status_indicator_receive_scheduled": "Planlagt …", "days_first_letter": "d", "hours_first_letter": "t", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_website_url_description": "Alle med OnionShare-adressen kan besøge dit websted med Tor Browser: ", "gui_website_mode_no_files": "Der er endnu ikke delt noget websted", "incorrect_password": "Forkert adgangskode", "history_requests_tooltip": "{}-webforespørgsler", "mode_settings_website_disable_csp_checkbox": "Deaktivér Content Security Policy-header (giver dit websted mulighed for at bruge tredjepartsressourcer)", "mode_settings_share_autostop_sharing_checkbox": "Stop deling efter filerne er blevet sendt (fravælg for at gøre det muligt at downloade individuelle filer)", "mode_settings_autostop_timer_checkbox": "Stop oniontjeneste på det planlagte tidspunkt", "mode_settings_autostart_timer_checkbox": "Start oniontjeneste på det planlagte tidspunkt", "mode_settings_persistent_checkbox": "Åbn altid dette faneblad når OnionShare startes", "gui_quit_warning_description": "Deling er aktiv i nogle af dine faneblade. Hvis du afslutter, så lukkes alle dine faneblade. Er du sikker på, at du vil afslutte?", "gui_close_tab_warning_website_description": "Luk faneblad som er vært for et websted?", "gui_close_tab_warning_receive_description": "Luk faneblad som modtager filer?", "gui_close_tab_warning_share_description": "Luk faneblad som sender filer?", "gui_close_tab_warning_persistent_description": "Luk det vedvarende faneblad og mist den onionadresse som det bruger?", "gui_new_tab_website_button": "Vær vært for et websted", "gui_new_tab_receive_button": "Modtag filer", "gui_new_tab_share_button": "Del filer", "gui_new_tab_tooltip": "Åbn et nyt faneblad", "mode_settings_receive_data_dir_browse_button": "Gennemse", "mode_settings_receive_data_dir_label": "Gem filer i", "mode_settings_public_checkbox": "Brug ikke en adgangskode", "mode_settings_advanced_toggle_hide": "Skjul avancerede indstillinger", "mode_settings_advanced_toggle_show": "Vis avancerede indstillinger", "gui_quit_warning_cancel": "Annuller", "gui_quit_warning_title": "Afslut OnionShare?", "gui_close_tab_warning_cancel": "Annuller", "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_title": "Luk faneblad?", "gui_new_tab": "Nyt faneblad", "gui_tab_name_chat": "Chat", "gui_tab_name_website": "Websted", "gui_tab_name_receive": "Modtag", "gui_tab_name_share": "Del", "gui_new_tab_chat_button": "Chat anonymt", "gui_open_folder_error": "Kunne ikke åbne mappen med xdg-open. Filen er her: {}", "gui_qr_code_dialog_title": "QR-kode til OnionShare", "gui_show_qr_code": "Vis QR-kode", "gui_receive_flatpak_data_dir": "Da du installerede OnionShare med Flatpak, så skal du gemme filer til en mappe i ~/OnionShare.", "gui_chat_stop_server": "Stop chatserver", "gui_chat_start_server": "Start chatserver", "gui_file_selection_remove_all": "Fjern alle", "gui_remove": "Fjern", "gui_main_page_share_button": "Begynd at dele", "gui_main_page_receive_button": "Begynd at modtage", "gui_main_page_website_button": "Begynd at være vært", "gui_main_page_chat_button": "Begynd at chatte", "gui_chat_url_description": "Alle med denne OnionShare-adresse kan deltage i chatrummet med Tor Browser: ", "error_port_not_available": "OnionShare-port ikke tilgængelig", "gui_rendezvous_cleanup": "Venter på at Tor-kredsløb lukker for at være sikker på, at dine filer er blevet overført.\n\nDet kan tage nogle minutter.", "gui_rendezvous_cleanup_quit_early": "Afslut tidligt", "history_receive_read_message_button": "Læs meddelelse", "mode_settings_receive_webhook_url_checkbox": "Brug underretningswebhook", "mode_settings_receive_disable_files_checkbox": "Deaktivér upload af filer", "mode_settings_receive_disable_text_checkbox": "Deaktivér indsendelse af tekst", "mode_settings_title_label": "Tilpasset titel", "gui_color_mode_changed_notice": "Genstart OnionShare for at se de nye farver.", "gui_status_indicator_chat_started": "Chatter", "gui_status_indicator_chat_scheduled": "Planlagt …", "gui_status_indicator_chat_working": "Starter …", "gui_status_indicator_chat_stopped": "Stoppet", "gui_settings_version_label": "Du bruger OnionShare {}", "gui_autoconnect_failed_to_connect_to_tor": "Kunne ikke oprette forbindelse til Tor", "gui_please_wait_no_button": "Starter …", "gui_settings_bridge_custom_placeholder": "skriv adresse:port (én per linje)", "gui_reveal": "Vis", "gui_settings_bridge_use_checkbox": "Brug en bro", "gui_copied_client_auth": "Privat nøgle kopieret til udklipsholder", "gui_settings_bridge_moat_button": "Anmod om en ny bro", "gui_settings_bridge_radio_builtin": "Vælg en indbygget bro", "gui_settings_bridge_none_radio_option": "Brug ikke broer", "gui_qr_label_auth_string_title": "Privat nøgle", "gui_hide": "Skjul", "gui_enable_autoconnect_checkbox": "Opret automatisk forbindelse til Tor", "gui_copied_client_auth_title": "Privat nøgle kopieret", "gui_copy_client_auth": "Kopiér privat nøgle", "gui_qr_label_url_title": "OnionShare-adresse", "gui_general_settings_window_title": "Generelt", "gui_settings_bridge_moat_radio_option": "Anmod om bro fra torproject.org", "gui_settings_controller_extras_label": "Indstillinger for Tor", "gui_url_instructions": "Send først OnionShare-adressen herunder:", "gui_autoconnect_no_bridge": "Prø", "gui_autoconnect_circumventing_censorship": "Finder en løsning på forbindelsesproblemer …", "gui_settings_theme_auto": "Automatisk", "moat_solution_empty_error": "Indtast tegnene fra billedet", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Omgår censur …", "gui_url_instructions_public_mode": "Send OnionShare-adressen nedenfor:", "moat_contact_label": "Kontakter BridgeDB …", "moat_captcha_error": "Forkert svar. Prøv venligst igen.", "mode_tor_not_connected_label": "OnionShare har ikke forbindelse til Tor-netværket", "gui_settings_theme_dark": "Mørkt", "gui_settings_theme_light": "Lyst", "gui_settings_theme_label": "Tema", "gui_autoconnect_start": "Opret forbindelse til Tor", "gui_settings_help_label": "Brug for hjælp? Se docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Send til tilpasset Content Security Policy-header", "gui_close_tab_warning_chat_description": "Luk faneblad som er vært for en chatserver?", "gui_autoconnect_trying_to_connect_to_tor": "Opretter forbindelse til Tor …", "gui_tor_settings_window_title": "Indstillinger for Tor", "moat_captcha_label": "Besvar CAPTCHA'en for at anmode om en bro.", "moat_captcha_reload": "Genindlæs", "moat_captcha_submit": "Indsend", "moat_captcha_placeholder": "Indtast tegnene fra billedet", "moat_bridgedb_error": "Kunne ikke kotnakte BridgeDB.", "gui_autoconnect_connection_error_msg": "Sørg for at du har forbindelse til internettet.", "gui_autoconnect_configure": "Netværksindstillinger", "gui_autoconnect_try_again_without_a_bridge": "Prøv igen uden broer", "gui_autoconnect_bridge_setting_options": "Indstillinger for broer", "waitress_web_server_error": "Der opstod et problem ved start af webserveren", "gui_client_auth_instructions": "Send herefter den private nøgle for at give adgang til din OnionShare-tjeneste:", "gui_share_url_public_description": "Alle med OnionShare-adressen kan downloade dine filer med Tor Browser: ", "gui_chat_url_public_description": "Alle med denne OnionShare-adresse kan deltage i chatrummet med Tor Browser: ", "gui_website_url_public_description": "Alle med OnionShare-adressen kan besøge dit websted med Tor Browser: ", "gui_receive_url_public_description": "Alle med OnionShare-adressen kan uploade filer til din computer med Tor Browser: " } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/de.json000066400000000000000000000546431521174352300271110ustar00rootroot00000000000000{ "other_page_loaded": "Seite geladen", "closing_automatically": "Gestoppt, da die Übertragung erfolgreich beendet wurde", "large_filesize": "Achtung: Das Senden von großen Dateien kann mehrere Stunden dauern", "gui_drag_and_drop": "Dateien und Ordner hierher ziehen, um sie zu teilen", "gui_add": "Hinzufügen", "gui_choose_items": "Auswählen", "gui_share_start_server": "Teilen beginnen", "gui_share_stop_server": "Freigabe beenden", "gui_copy_url": "Adresse kopieren", "gui_copied_url": "OnionShare-Adresse wurde in die Zwischenablage kopiert", "gui_please_wait": "Startet… Klicken zum Abbrechen.", "systray_menu_exit": "Beenden", "gui_settings_authenticate_password_option": "Passwort", "gui_settings_password_label": "Passwort", "gui_settings_button_save": "Speichern", "gui_settings_button_cancel": "Abbrechen", "gui_settings_button_help": "Hilfe", "gui_canceled": "Abgebrochen", "gui_quit_warning_quit": "Beenden", "gui_settings_window_title": "Einstellungen", "gui_settings_autoupdate_timestamp": "Letzte Überprüfung: {}", "gui_settings_autoupdate_timestamp_never": "Niemals", "gui_settings_connection_type_label": "Wie soll sich OnionShare mit Tor verbinden?", "not_a_readable_file": "{0:s} ist keine lesbare Datei.", "close_on_autostop_timer": "Angehalten, da der automatische Timer abgelaufen ist", "gui_share_stop_server_autostop_timer": "Freigabe beenden ({})", "gui_settings_connection_type_control_port_option": "Verbinde über den Steuerungs-Port", "gui_settings_connection_type_socket_file_option": "Verbinde über eine Socket-Datei", "gui_settings_control_port_label": "Steuerungs-Port", "gui_settings_socket_file_label": "Socket-Datei", "gui_settings_socks_label": "SOCKS-Port", "gui_settings_authenticate_no_auth_option": "Keine Authentifizierung oder Authentifizierung per Cookie", "settings_error_auth": "Mit {}:{} verbinden aber nicht authentifiziert. Eventuell handelt es sich nicht um einen Tor-Controller?", "settings_error_missing_password": "Mit dem Tor-Controller verbunden, aber er benötigt ein Passwort zur Authentifizierung.", "connecting_to_tor": "Verbinde mit dem Tor-Netzwerk", "gui_tor_connection_ask_quit": "Beenden", "gui_tor_connection_lost": "Verbindung mit Tor getrennt.", "gui_receive_start_server": "Empfangsmodus starten", "gui_receive_stop_server": "Empfangsmodus stoppen", "gui_receive_stop_server_autostop_timer": "Empfangsmodus stoppen ({} verbleibend)", "gui_copied_url_title": "OnionShare-Adresse kopiert", "zip_progress_bar_format": "Komprimiere: %p%", "gui_settings_autoupdate_label": "Suche nach neuer Version", "gui_settings_autoupdate_option": "Benachrichtige mich, wenn eine neue Version verfügbar ist", "gui_settings_autoupdate_check_button": "Suche nach neuer Version", "gui_settings_connection_type_automatic_option": "Versuche automatische Konfiguration mittels Tor-Browser", "gui_settings_connection_type_test_button": "Verbindung mit Tor testen", "gui_settings_tor_bridges": "Mittels einer Tor-Brücke verbinden?", "gui_settings_meek_lite_expensive_warning": "Achtung: Die „Meek-Azure“-Brücken sind für das Tor-Projekt sehr kostspielig.

    Nutze sie nur, wenn du dich nicht direkt, per obfs4-Transport oder über andere, normale Brücken mit dem Tor-Netzwerk verbinden kannst.", "gui_settings_tor_bridges_invalid": "Keine der ausgewählten Brücken funktioniert. Überprüfe sie oder gib andere an.", "settings_error_unknown": "Kann nicht mit dem Tor-Controller verbinden, weil deine Einstellungen keinen Sinn ergeben.", "settings_error_automatic": "Kann nicht mit dem Tor-Controller verbinden. Läuft der Tor-Browser (kann von https://www.torproject.org/ heruntergeladen werden) im Hintergrund?", "settings_error_socket_port": "Kann unter {}:{} nicht mit dem Tor-Controller verbinden.", "settings_error_unreadable_cookie_file": "Verbindung mit dem Tor-Controller hergestellt, aber dein Passwort ist falsch oder dein Nutzer darf die Cookie-Datei nicht lesen.", "settings_error_bundled_tor_not_supported": "Im Entwicklermodus auf Windows oder macOS kannst du nicht die Tor-Version nutzen, die mit OnionShare geliefert wird.", "settings_error_bundled_tor_timeout": "Die Verbindung zum Tor-Netzwerk braucht zu lang. Bist du vielleicht nicht mit dem Internet verbunden oder geht die Uhr auf deinem System falsch?", "settings_error_bundled_tor_broken": "OnionShare konnte sich nicht mit Tor verbinden:\n{}", "settings_test_success": "Verbunden mit dem Tor-Controller.\n\nTor-Version: {}\nUnterstützt vergängliche Onion-Dienste: {}.\nUnterstützt Client-Authorisierung: {}.\nUnterstützt .onion-Adressen der nächsten Generation: {}.", "error_tor_protocol_error": "Es gab einen Fehler mit Tor: {}", "update_available": "Es gibt eine neue Version von OnionShare. Klicke hier, um sie herunterzuladen.

    Du benutzt {}, und die neueste Version ist {}.", "update_error_check_error": "Konnte nicht nach neueren Versionen suchen: Bist du vielleicht nicht mit dem Tor-Netzwerk verbunden oder ist die OnionShare-Webseite offline?", "update_error_invalid_latest_version": "Konnte nicht nach neueren Versionen suchen: Laut OnionShare-Webseite ist die neueste Version die nicht bestimmbare Version '{}'…", "update_not_available": "Du benutzt die neueste Version von OnionShare.", "gui_tor_connection_ask": "Einstellungen öffnen, um die Verbindung zum Tor-Netzwerk zu reparieren?", "gui_tor_connection_ask_open_settings": "Ja", "gui_tor_connection_error_settings": "Versuche in den Einstellungen zu ändern, wie sich OnionShare mit dem Tor-Netzwerk verbindet.", "gui_tor_connection_canceled": "Konnte keine Verbindung mit Tor herstellen.\n\nStelle sicher, dass du mit dem Internet verbunden bist, öffne OnionShare erneut und richte die Verbindung mit Tor ein.", "gui_share_url_description": "Jeder kann mit dieser OnionShare-Adresse und dem privaten Schlüssel deine Dateien mit dem Tor-Browser herunterladen: ", "gui_receive_url_description": "Jeder mit dieser OnionShare-Adresse und dem privaten Schlüssel kann mit dem Tor-Browser Dateien auf deinen Computer hochladen: ", "gui_url_label_persistent": "Diese Freigabe wird nicht automatisch beendet.

    Jede folgende Freigabe wird die Adresse erneut nutzen. (Um Adressen nur einmal zu nutzen, schalte „Diese Registerkarte immer öffnen, wenn OnionShare gestartet wird“ in den Einstellungen aus.)", "gui_url_label_stay_open": "Diese Freigabe wird nicht automatisch beendet.", "gui_url_label_onetime": "Diese Freigabe wird nach dem ersten vollständigen Download beendet.", "gui_status_indicator_share_working": "Starte…", "gui_status_indicator_share_started": "Teilen", "gui_status_indicator_receive_stopped": "Angehalten", "gui_status_indicator_receive_working": "Starte…", "gui_status_indicator_receive_started": "Empfange", "gui_file_info": "{} Dateien, {}", "gui_file_info_single": "{} Datei, {}", "history_completed_tooltip": "{} abgeschlossen", "gui_receive_mode_warning": "Im Empfangsmodus können Personen Dateien auf deinen Computer laden.

    Einige Dateien können die Kontrolle über deinen Computer übernehmen, wenn du sie öffnest. Öffne nur Dateien von Personen, denen du vertraust, oder wenn du genau weißt, was du tust.", "gui_settings_language_label": "Sprache", "gui_settings_language_changed_notice": "Starte OnionShare neu, um zur neuen Sprache zu wechseln.", "gui_settings_connection_type_bundled_option": "Die integrierte Tor-Version von OnionShare nutzen", "settings_error_socket_file": "Kann nicht mittels des Tor-Controller-Socket {} verbinden.", "gui_server_started_after_autostop_timer": "Der Autostop-Timer ist abgelaufen, bevor der Server gestartet werden konnte. Bitte starte das Teilen erneut.", "gui_server_autostop_timer_expired": "Der Autostopp-Timer ist bereits abgelaufen. Bitte ändere diesen, um das Teilen zu starten.", "gui_status_indicator_share_stopped": "Angehalten", "history_in_progress_tooltip": "{} läuft", "systray_page_loaded_title": "Seite geladen", "gui_add_files": "Dateien hinzufügen", "gui_add_folder": "Ordner hinzufügen", "gui_url_label_onetime_and_persistent": "Diese Freigabe wird nicht automatisch stoppen. >br>
    Jede nachfolgende Freigabe wird die gleiche Adresse nutzen. (Um jedes Mal eine andere Adresse zu nutzen, schalte \"Diese Registerkarte immer öffnen, wenn OnionShare gestartet wird\" in den Einstellungen aus.)", "error_cannot_create_data_dir": "Der Ordner für die OnionShare-Dateien konnte nicht erstellt werden: {}", "systray_page_loaded_message": "OnionShare-Adresse geladen", "systray_share_started_title": "Freigabe gestartet", "systray_share_started_message": "Upload von Dateien begonnen", "systray_share_completed_title": "Freigabe erfolgt", "systray_share_completed_message": "Dateien erfolgreich versandt", "systray_share_canceled_title": "Freigabe abgebrochen", "systray_share_canceled_message": "Jemand hat den Download deiner Dateien abgebrochen", "systray_receive_started_title": "Empfange", "systray_receive_started_message": "Jemand sendet dir Dateien", "gui_all_modes_history": "Verlauf", "gui_all_modes_clear_history": "Liste leeren", "gui_all_modes_transfer_started": "{} gestartet", "gui_all_modes_transfer_finished_range": "{} - {} übertragen", "gui_all_modes_transfer_finished": "{} übertragen", "gui_all_modes_transfer_canceled_range": "{} - {} abgebrochen", "gui_all_modes_transfer_canceled": "{} abgebrochen", "gui_all_modes_progress_starting": "{0:s}, %p% (berechne)", "gui_share_mode_no_files": "Noch keine Dateien versendet", "gui_share_mode_autostop_timer_waiting": "Senden abschließen…", "gui_receive_mode_no_files": "Noch keine Dateien empfangen", "gui_receive_mode_autostop_timer_waiting": "Empfang beenden…", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_all_modes_progress_complete": "%p%, {0:s} vergangen.", "gui_waiting_to_start": "Geplant in {} zu starten. Klicken zum Abbrechen.", "gui_stop_server_autostop_timer_tooltip": "Automatischer Stopptimer endet um {}", "gui_start_server_autostart_timer_tooltip": "Auto-Start-Timer endet um {}", "gui_server_autostart_timer_expired": "Die geplante Zeit ist bereits abgelaufen. Bitte passe diese an, um das Teilen zu starten.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Die automatische Stoppzeit kann nicht gleich oder früher als die Startzeit sein. Bitte passe die Zeiten an, um das Teilen zu starten.", "gui_status_indicator_share_scheduled": "Geplant…", "gui_status_indicator_receive_scheduled": "Geplant…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_website_url_description": "Jeder kann mit dieser OnionShare-Adresse und dem privaten Schlüssel deine Webseite mit dem Tor-Browser ansehen: ", "gui_website_mode_no_files": "Noch keine Webseite freigegeben", "incorrect_password": "Falsches Passwort", "history_requests_tooltip": "{} Web-Anfragen", "mode_settings_share_autostop_sharing_checkbox": "Dateifreigabe beenden, sobald alle Dateien versendet wurden (abwählen, um das Herunterladen einzelner Dateien zu erlauben)", "mode_settings_website_disable_csp_checkbox": "Content-Security-Policy-Header deaktivieren (ermöglicht es, Ressourcen von Drittanbietern auf deiner Onion-Webseite einzubinden)", "mode_settings_receive_data_dir_browse_button": "Durchsuchen", "mode_settings_receive_data_dir_label": "Dateien speichern unter", "mode_settings_autostop_timer_checkbox": "Onion-Dienst zu einem festgelegten Zeitpunkt stoppen", "mode_settings_autostart_timer_checkbox": "Onion-Dienst zu einem festgelegten Zeitpunkt starten", "mode_settings_public_checkbox": "Dies ist ein öffentlicher OnionShare-Dienst (deaktiviert den privaten Schlüssel)", "mode_settings_persistent_checkbox": "Diesen Tab immer öffnen, wenn OnionShare gestartet wird (die Onion-Adresse bleibt gleich)", "mode_settings_advanced_toggle_hide": "Erweiterte Einstellungen ausblenden", "mode_settings_advanced_toggle_show": "Erweiterte Einstellungen anzeigen", "gui_quit_warning_cancel": "Abbrechen", "gui_quit_warning_description": "Alle Tabs beenden und schließen, obwohl das Teilen in einigen aktiv ist?", "gui_quit_warning_title": "OnionShare beenden?", "gui_close_tab_warning_cancel": "Abbrechen", "gui_close_tab_warning_close": "Schließen", "gui_close_tab_warning_website_description": "Tab schließen, der eine Webseite hostet?", "gui_close_tab_warning_receive_description": "Tab schließen, der Dateien empfängt?", "gui_close_tab_warning_share_description": "Tab schließen, der Dateien sendet?", "gui_close_tab_warning_persistent_description": "Permanenten Tab schließen und die verwendete Onion-Adresse verlieren?", "gui_close_tab_warning_title": "Tab schließen?", "gui_new_tab_website_button": "Webseite veröffentlichen", "gui_new_tab_receive_button": "Dateien empfangen", "gui_new_tab_share_button": "Dateien teilen", "gui_new_tab_tooltip": "Einen neuen Reiter öffnen", "gui_new_tab": "Neuer Reiter", "gui_tab_name_website": "Webseite", "gui_tab_name_chat": "Chat", "gui_tab_name_receive": "Empfangen", "gui_tab_name_share": "Teilen", "gui_file_selection_remove_all": "Alle entfernen", "gui_remove": "Entfernen", "gui_new_tab_chat_button": "Anonym chatten", "gui_qr_code_dialog_title": "OnionShare QR-Code", "gui_show_qr_code": "QR-Code anzeigen", "gui_chat_stop_server": "Chatserver stoppen", "gui_chat_start_server": "Chatserver starten", "gui_main_page_chat_button": "Chat starten", "gui_main_page_website_button": "Webseiten-Freigabe starten", "gui_main_page_receive_button": "Empfangsmodus starten", "gui_main_page_share_button": "Freigabe starten", "gui_open_folder_error": "Ordner konnte mit xdg-open nicht geöffnet werden. Die Datei befindet sich hier: {}", "gui_receive_flatpak_data_dir": "Da OnionShare durch Flatpak installiert wurde, müssen Dateien im Verzeichnis ~/OnionShare gespeichert werden.", "gui_chat_url_description": "Jeder mit dieser OnionShare-Adresse und dem privaten Schlüssel kann diesem Chatroom beitreten, indem er den Tor-Browser benutzt: ", "error_port_not_available": "OnionShare-Port nicht verfügbar", "gui_rendezvous_cleanup": "Warte darauf, dass alle Tor-Verbindungen beendet wurden, um den Dateitransfer sicherzustellen.\n\nDies kann einige Minuten dauern.", "gui_rendezvous_cleanup_quit_early": "Vorzeitig beenden", "gui_color_mode_changed_notice": "Starte OnionShare neu, um die neuen Farben zu sehen.", "history_receive_read_message_button": "Nachricht gelesen", "mode_settings_receive_webhook_url_checkbox": "Benutze Benachrichtigungs-WebHook", "mode_settings_receive_disable_files_checkbox": "Datei-Übermittlung deaktivieren", "mode_settings_receive_disable_text_checkbox": "Text-Übermittlung deaktivieren", "mode_settings_title_label": "Benutzerdefinierter Titel", "gui_status_indicator_chat_started": "Chatted", "gui_status_indicator_chat_scheduled": "Geplant…", "gui_status_indicator_chat_working": "Startet…", "gui_status_indicator_chat_stopped": "Angehalten", "gui_settings_theme_dark": "Dunkel", "gui_settings_theme_light": "Hell", "gui_settings_theme_auto": "Automatisch", "gui_settings_theme_label": "Design", "gui_client_auth_instructions": "Sende anschließend den privaten Schlüssel, um den Zugriff auf deinen OnionShare-Dienst zu ermöglichen:", "gui_url_instructions_public_mode": "Sende die OnionShare-Adresse unten:", "gui_url_instructions": "Sende zunächst die folgende OnionShare-Adresse:", "gui_chat_url_public_description": "Jeder mit dieser OnionShare-Adresse kann diesem Chatroom beitreten, indem er den Tor-Bowser benutzt: ", "gui_receive_url_public_description": "Jeder mit dieser OnionShare-Adresse kann mit dem Tor-Browser Dateien auf deinen Computer hochladen: ", "gui_website_url_public_description": "Jeder mit dieser OnionShare-Adresse kann deine Webseite mit dem Tor-Browser ansehen: ", "gui_share_url_public_description": "Jeder mit dieser OnionShare-Adresse kann deine Dateien mit dem Tor-Browser herunterladen: ", "gui_server_doesnt_support_stealth": "Sorry, diese Version von Tor unterstützt kein Stealth (Client-Authentifizierung). Bitte versuche es mit einer neueren Version von Tor oder benutze den „öffentlichen“ Modus, wenn es nicht privat sein muss.", "gui_please_wait_no_button": "Starte…", "gui_hide": "Ausblenden", "gui_reveal": "Zeigen", "gui_qr_label_auth_string_title": "Privater Schlüssel", "gui_qr_label_url_title": "OnionShare-Adresse", "gui_copied_client_auth": "Privater Schlüssel in die Zwischenablage kopiert", "gui_copied_client_auth_title": "Privater Schlüssel kopiert", "gui_copy_client_auth": "Privaten Schlüssel kopieren", "gui_dragdrop_sandbox_flatpak": "Um die Flatpak Sandbox sicherer zu machen, wird Drag und Drop nicht unterstützt. Bitte nutze stattdessen die Buttons \"Dateien hinzufügen\" und \"Ordner hinzufügen\", um Dateien auszuwählen.", "gui_tor_settings_window_title": "Tor Einstellungen", "gui_settings_controller_extras_label": "Tor-Einstellungen", "gui_settings_bridge_use_checkbox": "Benutze eine Brücke", "gui_settings_bridge_radio_builtin": "Wähle eine eingebaute Brücke", "gui_settings_bridge_none_radio_option": "Keine Brücken benutzen", "gui_settings_bridge_moat_button": "Neue Brücke verwenden", "gui_settings_bridge_custom_placeholder": "Schreibe im Format adresse:port (eine pro Zeile)", "gui_settings_moat_bridges_invalid": "Du hast noch keine Brücke von torproject.org angefragt.", "gui_settings_stop_active_tabs_label": "Es laufen noch Dienste in deinen Tabs.\nDu musst alle Dienste beenden, bevor du die Tor-Einstellungen ändern kannst.", "gui_settings_version_label": "Du verwendest OnionShare {}", "gui_settings_help_label": "Du benötigst Hilfe? Gehe zu docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Sende einen benutzerdefinierten Content Security-Policy-Header", "moat_contact_label": "Kontaktiere BridgeDB…", "moat_captcha_label": "Löse Sie das CAPTCHA, um eine Brücke anzufordern.", "moat_captcha_placeholder": "Gib die Zeichen auf dem Bild ein", "moat_captcha_submit": "Absenden", "moat_captcha_reload": "Neu laden", "moat_bridgedb_error": "BridgeDB konnte nicht kontaktiert werden.", "moat_captcha_error": "Falsche Lösung. Bitte versuche es erneut.", "mode_tor_not_connected_label": "OnionShare ist nicht mit dem Tor-Netzwerk verbunden", "gui_settings_bridge_moat_radio_option": "Verwende eine Brücke von torproject.org", "moat_solution_empty_error": "Gib die Zeichen aus dem Bild ein", "gui_settings_bridge_custom_radio_option": "Stelle eine Brücke aus einer dir bekannten vertraulichen Quelle bereit", "gui_settings_tor_bridges_label": "Brücken helfen dir, das Tor-Netzwerk an Orten zu verwenden, wo es blockiert wird. Je nachdem, wo du bist, funktioniert eine Brücke besser als eine andere.", "gui_autoconnect_bridge_detect_manual": "Manuelles Auswählen meines Landes für die Brücken-Einstellungen", "gui_autoconnect_description": "OnionShare stützt sich auf das Tor-Netzwerk, das von Tausenden von Freiwilligen auf der ganzen Welt betrieben wird.", "gui_enable_autoconnect_checkbox": "Automatisch mit Tor verbinden", "gui_autoconnect_failed_to_connect_to_tor": "Verbindung zu Tor fehlgeschlagen", "gui_autoconnect_connection_error_msg": "Stelle sicher, dass du mit dem Internet verbunden bist.", "gui_autoconnect_bridge_description": "Es ist auch möglich, dass dein Internet zensiert wird. Vielleicht kannst du dies mit einer Brücke umgehen.", "gui_autoconnect_bridge_detect_automatic": "Automatisches Ermitteln meines Landes anhand meiner IP-Adresse für die Brücken-Einstellungen", "gui_autoconnect_bridge_setting_options": "Brücken-Einstellungen", "gui_autoconnect_start": "Mit Tor verbinden", "gui_autoconnect_configure": "Netzwerkeinstellungen", "gui_autoconnect_no_bridge": "Erneuter Versuch ohne Brücken", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Brücken von der API zur Umgehung der Tor-Zensur anfordern…", "gui_autoconnect_circumventing_censorship_got_bridges": "Brücken errichtet. Wiederherstellung der Verbindung zu Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "Verbindung zur Tor-API konnte nicht hergestellt werden. Stelle sicher, dass du mit dem Internet verbunden bist, bevor du es erneut versuchst.", "gui_autoconnect_circumventing_censorship_starting_meek": "Meek-Brücke für Domain-Fronting…", "gui_autoconnect_trying_to_connect_to_tor": "Verbinden mit Tor…", "gui_autoconnect_circumventing_censorship": "Beheben von Verbindungsproblemen…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Zensur umgehen…", "gui_general_settings_window_title": "Allgemein", "gui_autoconnect_try_again_without_a_bridge": "Erneuter Versuch ohne Brücken", "waitress_web_server_error": "Beim Starten des Webservers ist ein Problem aufgetreten", "gui_close_tab_warning_chat_description": "Tab schließen, der einen Chat-Server hostet?", "gui_chat_mode_explainer": "Im Chat-Modus kannst du interaktiv mit anderen im Tor-Browser chatten.

    Der Chatverlauf wird nicht in OnionShare gespeichert. Der Chatverlauf verschwindet, wenn du den Tor-Browser schließt.", "error_generic": "Es ist ein unerwarteter Fehler bei OnionShare aufgetreten:\n{}", "gui_settings_license_label": "OnionShare ist unter der GPL v3 lizenziert.
    Lizenzen von Drittanbietern können hier eingesehen werden:
    https://github.com/onionshare/onionshare/tree/main/licenses", "mode_settings_persistent_autostart_on_launch_checkbox": "Diesen Onion-Dienst automatisch starten, wenn OnionShare startet" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/el.json000066400000000000000000000772531521174352300271230ustar00rootroot00000000000000{ "not_a_readable_file": "Το {0:s} δεν είναι αναγνώσιμο αρχείο.", "other_page_loaded": "Η διεύθυνση φορτώθηκε", "close_on_autostop_timer": "Τερματίστηκε λόγω αυτόματης διακοπής", "closing_automatically": "Τερματίστηκε λόγω ολοκλήρωσης της λήψης", "large_filesize": "Προειδοποίηση: Η αποστολή μεγάλου όγκου δεδομένων μπορεί να διαρκέσει ώρες", "systray_menu_exit": "Έξοδος", "gui_drag_and_drop": "Μεταφορά και απόθεση αρχείων και φακέλων για έναρξη διαμοιρασμού", "gui_add": "Προσθήκη", "gui_choose_items": "Επιλογή", "gui_share_start_server": "Εκκίνηση διαμοιρασμού", "gui_share_stop_server": "Τερματισμός διαμοιρασμού", "gui_share_stop_server_autostop_timer": "Διακοπή διαμοιρασμού ({})", "gui_receive_start_server": "Εκκίνηση λειτουργίας λήψης", "gui_receive_stop_server": "Τερματισμός λειτουργίας λήψης", "gui_receive_stop_server_autostop_timer": "Διακοπή λειτουργίας λήψης (απομένουν {})", "gui_copy_url": "Αντιγραφή διεύθυνσης", "gui_canceled": "Ακυρώθηκε", "gui_copied_url_title": "Η διεύθυνση OnionShare αντιγράφτηκε", "gui_copied_url": "Η διεύθυνση OnionShare αντιγράφτηκε στο πρόχειρο", "gui_please_wait": "Ξεκινάμε... Κάντε κλικ για ακύρωση.", "gui_quit_warning_quit": "Έξοδος", "zip_progress_bar_format": "Γίνεται συμπίεση: %p%", "gui_settings_window_title": "Ρυθμίσεις", "gui_settings_autoupdate_label": "Έλεγχος για νέα έκδοση", "gui_settings_autoupdate_option": "Ενημερώστε με μόλις γίνει διαθέσιμη μια νέα έκδοση", "gui_settings_autoupdate_timestamp": "Τελευταίος έλεγχος: {}", "gui_settings_autoupdate_timestamp_never": "Ποτέ", "gui_settings_autoupdate_check_button": "Έλεγχος για νέα έκδοση", "gui_settings_connection_type_label": "Πώς να συνδέεται το OnionShare με το Tor;", "gui_settings_connection_type_bundled_option": "Χρησιμοποιήστε την έκδοση του Tor που είναι ενσωματωμένη στο OnionShare", "gui_settings_connection_type_automatic_option": "Προσπάθεια αυτόματης παραμετροποίησης με τον Tor Browser", "gui_settings_connection_type_control_port_option": "Σύνδεση μέσω θύρας ελέγχου", "gui_settings_connection_type_socket_file_option": "Σύνδεση μέσω αρχείου μετάβασης", "gui_settings_connection_type_test_button": "Έλεγχος σύνδεσης με το Tor", "gui_settings_control_port_label": "Πύλη ελέγχου", "gui_settings_socket_file_label": "Αρχείο μετάβασης", "gui_settings_socks_label": "Πύλη SOCKS", "gui_settings_authenticate_no_auth_option": "Χωρίς επαλήθευση ή επαλήθευση με cookie", "gui_settings_authenticate_password_option": "Κωδικός", "gui_settings_password_label": "Κωδικός", "gui_settings_tor_bridges": "Σύνδεση με χρήση γέφυρας Tor;", "gui_settings_meek_lite_expensive_warning": "Προσοχή: Οι γέφυρες meek_azure επιβαρύνουν τη λειτουργία του Tor Project.

    Χρησιμοποιήστε τες μόνο αν δεν μπορείτε να συνδεθείτε κατ' ευθείαν στο Tor μέσω obfs4 transports ή άλλων κανονικών γεφυρών.", "gui_settings_tor_bridges_invalid": "Καμία γέφυρα που προσθέσατε δεν λειτουργεί. Ελέγξτε ξανά ή προσθέστε άλλες.", "gui_settings_button_save": "Αποθήκευση", "gui_settings_button_cancel": "Άκυρο", "gui_settings_button_help": "Βοήθεια", "settings_error_unknown": "Αποτυχία σύνδεσης στον ελεγκτή Tor, γιατί οι ρυθμίσεις σας δεν βγάζουν κανένα νόημα.", "settings_error_automatic": "Δεν ήταν δυνατή η σύνδεση στον ελεγκτή Tor. Λειτουργεί ο Tor Browser (διαθέσιμος στο torproject.org) στο παρασκήνιο;", "settings_error_socket_port": "Δεν ήταν δυνατή η σύνδεση στον ελεγκτή Tor στις {}:{}.", "settings_error_socket_file": "Δεν ήταν δυνατή η σύνδεση στον ελεγκτή Tor χρησιμοποιώντας το αρχείο socket {}.", "settings_error_auth": "Εγινε σύνδεση με {}:{}, αλλα δεν μπορεί να γίνει πιστοποίηση. Ίσως δεν είναι ελεγκτής Tor;", "settings_error_missing_password": "Έγινε σύνδεση με τον ελεγκτή Tor, αλλά απαιτείται κωδικός για πιστοποίηση.", "settings_error_unreadable_cookie_file": "Έγινε σύνδεση με τον ελεγκτή Tor, αλλα ο κωδικός ενδέχεται να είναι λανθασμένος, ή δεν σας επιτρέπεται να διαβάζετε αρχεία cookie.", "settings_error_bundled_tor_not_supported": "Η χρήση της έκδοσης Tor που περιέχεται στο OnionShare δεν είναι συμβατή με το περιβάλλον προγραμματιστή σε Windows ή macOS.", "settings_error_bundled_tor_timeout": "Η σύνδεση με Tor καθυστερεί αρκετά. Ίσως δεν είστε συνδεδεμένοι στο Διαδίκτυο ή το ρολόι του συστήματος δεν είναι ρυθμισμένο σωστά;", "settings_error_bundled_tor_broken": "Το OnionShare δεν μπορεί να συνδεθεί με το Tor στο παρασκήνιο:\n{}", "settings_test_success": "Εγινε σύνδεση με τον ελεγκτή Tor.\n\nΕκδοση Tor: {}\nΥποστηρίζει εφήμερες υπηρεσίες onion: {}.\nΥποστηρίζει πιστοποίηση πελάτη: {}.\nΥποστηρίζει διευθύνσεις .onion νέας γενιάς: {}.", "error_tor_protocol_error": "Προέκυψε σφάλμα με το Tor: {}", "connecting_to_tor": "Γίνεται σύνδεση στο δίκτυο Tor", "update_available": "Υπάρχει διαθέσιμη ενημέρωση. Κάντε κλικ εδώ για να την αποκτήσετε.

    Χρησιμοποιείτε την έκδοση {}, ενώ η πιο πρόσφατη είναι η {}.", "update_error_check_error": "Δεν ήταν δυνατός ο έλεγχος για ενημερώσεις: ίσως δεν είστε συνδεδεμένος στο Tor ή ο ιστότοπος OnionShare είναι εκτός λειτουργίας;", "update_error_invalid_latest_version": "Δεν ήταν δυνατός ο έλεγχος για ενημερώσεις: η ιστοσελίδα OnionShare αναφέρει ότι η πιο πρόσφατη έκδοση είναι η μη αναγνωρίσιμη \"{}\"…", "update_not_available": "Χρησιμοποιείτε την πιο πρόσφατη έκδοση του OnionShare.", "gui_tor_connection_ask": "Θα θέλατε να ανοίξετε τις ρυθμίσεις για να φτιάξετε την σύνδεσή σας με το Tor;", "gui_tor_connection_ask_open_settings": "Ναι", "gui_tor_connection_ask_quit": "Έξοδος", "gui_tor_connection_error_settings": "Ίσως να ήταν καλή ιδέα να αλλάξετε τον τρόπο σύνδεσης του OnionShare με το δίκτυο Tor από τις ρυθμίσεις.", "gui_tor_connection_canceled": "Δεν ήταν δυνατή η σύνδεση στο δίκτυο του Tor.\n\nΕλέγξτε ότι είστε συνδεδεμένος/η στο Διαδίκτυο, επανεκκινήστε το OnionShare και ρυθμίστε την σύνδεση με το Tor.", "gui_tor_connection_lost": "Έγινε αποσύνδεση από το δίκτυο του Tor.", "gui_server_started_after_autostop_timer": "Το χρονόμετρο αυτόματης διακοπής τελείωσε πριν την εκκίνηση του server. Παρακαλώ κάντε ένα νέο διαμοιρασμό.", "gui_server_autostop_timer_expired": "Το χρονόμετρο αυτόματης διακοπής έχει ήδη τελειώσει. Παρακαλώ ρυθμίστε το για να ξεκινήσετε το διαμοιρασμό.", "gui_share_url_description": "Οποιοσδήποτε με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί να κατεβάσει τα αρχεία σας χρησιμοποιώντας το Tor Browser: ", "gui_receive_url_description": "Οποιοσδήποτε με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί να ανεβάσει αρχεία στον υπολογιστή σας χρησιμοποιώντας το Tor Browser: ", "gui_url_label_persistent": "Αυτή η κοινή χρήση δεν θα σταματήσει αυτόματα.

    Κάθε επόμενη κοινή χρήση επαναχρησιμοποιεί τη διεύθυνση. (Για να χρησιμοποιήσετε διευθύνσεις μιας χρήσης, απενεργοποιήστε το «Να ανοίγει πάντα αυτή η καρτέλα όταν ξεκινάει το OnionShare» στις ρυθμίσεις.)", "gui_url_label_stay_open": "Αυτή η σελίδα διαμοιρασμού δεν θα πάψει να λειτουργεί αυτόματα.", "gui_url_label_onetime": "Αυτός ο διαμοιρασμός θα σταματήσει μετά την πρώτη λήψη.", "gui_url_label_onetime_and_persistent": "Αυτή η κοινή χρήση δεν θα σταματήσει αυτόματα.

    Κάθε επόμενη κοινή χρήση θα επαναχρησιμοποιεί τη διεύθυνση. (Για να χρησιμοποιήσετε διευθύνσεις μιας χρήσης, απενεργοποιήστε το «Να ανοίγει πάντα αυτή η καρτέλα όταν ξεκινάει το OnionShare» στις ρυθμίσεις.)", "gui_status_indicator_share_stopped": "Σταμάτησε", "gui_status_indicator_share_working": "Εκκίνηση…", "gui_status_indicator_share_started": "Γίνεται αποστολή", "gui_status_indicator_receive_stopped": "Σταμάτησε", "gui_status_indicator_receive_working": "Γίνεται εκκίνηση…", "gui_status_indicator_receive_started": "Γίνεται λήψη", "gui_file_info": "{} αρχεία, {}", "gui_file_info_single": "{} αρχείο, {}", "history_in_progress_tooltip": "{} σε εξέλιξη", "history_completed_tooltip": "{} ολοκληρώθηκε", "gui_receive_mode_warning": "Η λειτουργία λήψης, επιτρέπει σε τρίτους/ες να ανεβάζουν αρχεία στον υπολογιστή σας.

    Μερικά αρχεία μπορούν δυνητικά να αποκτήσουν έλεγχο του υπολογιστή σας εάν τα ανοίξετε. Να ανοίγετε αρχεία μόνο από άτομα που εμπιστεύεστε ή εάν ξέρετε τι κάνετε.", "systray_page_loaded_title": "Η σελίδα φορτώθηκε", "gui_settings_language_label": "Γλώσσα", "gui_settings_language_changed_notice": "Επανεκκινήστε το OnionShare για να γίνει αλλαγή στη νέα γλώσσα.", "gui_add_files": "Προσθήκη αρχείων", "gui_add_folder": "Προσθήκη φακέλου", "error_cannot_create_data_dir": "Δεν ήταν δυνατή η δημιουργία φακέλου δεδομένων OnionShare: {}", "systray_page_loaded_message": "Η διεύθυνση OnionShare φορτώθηκε", "systray_share_started_title": "Ο διαμοιρασμός ξεκίνησε", "systray_share_started_message": "Η αποστολή αρχείων σε κάποιον/α ξεκίνησε", "systray_share_completed_title": "Ο διαμοιρασμός ολοκληρώθηκε", "systray_share_completed_message": "Η αποστολή αρχείων ολοκληρώθηκε", "systray_share_canceled_title": "Ο διαμοιρασμός ακυρώθηκε", "systray_share_canceled_message": "Κάποιος ακύρωσε την λήψη των αρχείων σας", "systray_receive_started_title": "Η λήψη ξεκίνησε", "systray_receive_started_message": "Κάποιος/α σας στέλνει αρχεία", "gui_all_modes_history": "Ιστορικό", "gui_all_modes_clear_history": "Καθαρισμός όλων", "gui_all_modes_transfer_started": "Ξεκινησε {}", "gui_all_modes_transfer_finished_range": "Μεταφέρθηκαν {} - {}", "gui_all_modes_transfer_finished": "Μεταφέρθηκαν {}", "gui_all_modes_progress_complete": "%p%, πέρασαν {0:s}.", "gui_all_modes_progress_starting": "{0:s}, %p% (γίνεται υπολογισμός)", "gui_all_modes_progress_eta": "{0:s}, Εκτιμώμενος χρόνος: {1:s}, %p%", "gui_share_mode_no_files": "Δεν έχουν αποσταλεί ακόμα αρχεία", "gui_share_mode_autostop_timer_waiting": "Ολοκλήρωση αποστολής…", "gui_receive_mode_no_files": "Δεν έχει γίνει λήψη αρχείων ακόμα", "gui_receive_mode_autostop_timer_waiting": "Ολοκλήρωση λήψης…", "gui_all_modes_transfer_canceled_range": "Ακυρώθηκε {} - {}", "gui_all_modes_transfer_canceled": "Ακυρώθηκε {}", "gui_stop_server_autostop_timer_tooltip": "Το χρονόμετρο αυτόματης διακοπής λήγει σε {}", "gui_start_server_autostart_timer_tooltip": "Το χρονόμετρο αυτόματης εκκίνησης λήγει σε {}", "gui_waiting_to_start": "Προγραμματισμένο να ξεκινήσει σε {}. Κάντε κλικ για ακύρωση.", "gui_server_autostart_timer_expired": "Η προγραμματισμένη ώρα έχει ήδη παρέλθει. Παρακαλώ ρυθμίστε τη για να ξεκινήσετε το διαμοιρασμό.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Η ώρα αυτόματης διακοπής δεν μπορεί να είναι ίδια ή νωρίτερα από την ώρα έναρξης. Παρακαλούμε ρυθμίστε τη για έναρξη του διαμοιρασμού.", "gui_status_indicator_share_scheduled": "Δρομολόγηση…", "gui_status_indicator_receive_scheduled": "Προγραμματισμένο…", "days_first_letter": "ημ", "hours_first_letter": "ώ", "minutes_first_letter": "λ", "seconds_first_letter": "δ", "gui_website_url_description": "Οποιοσδήποτε με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί να επισκεφτεί την ιστοσελίδα σας χρησιμοποιώντας το Tor Browser: ", "gui_website_mode_no_files": "Δεν έχει γίνει διαμοιρασμός ιστοσελίδας ακόμα", "incorrect_password": "Λάθος κωδικός", "history_requests_tooltip": "{} αιτήματα δικτύου", "gui_open_folder_error": "Δεν είναι δυνατό το άνοιγμα του φακέλου με xdg-open. Το αρχείο βρίσκετε : {}", "gui_receive_flatpak_data_dir": "Επειδή έχετε εγκαταστήσει το OnionShare μέσω Flatpak, θα πρέπει να αποθηκεύσετε τα αρχεία μέσα σε έναν φάκελο στο ~/OnionShare.", "gui_chat_stop_server": "Τερματισμός διακομιστή συνομιλίας", "gui_chat_start_server": "Έναρξη διακομιστή συνομιλίας", "mode_settings_website_disable_csp_checkbox": "Μην στέλνετε την προεπιλεγμένη κεφαλίδα Πολιτικής Ασφάλειας Περιεχομένου (επιτρέπει στην ιστοσελίδα σας να χρησιμοποιεί πόρους τρίτων)", "mode_settings_receive_data_dir_browse_button": "Επιλογή", "mode_settings_receive_data_dir_label": "Αποθήκευση αρχείων σε", "mode_settings_share_autostop_sharing_checkbox": "Τερματισμός κοινής χρήσης με την ολοκλήρωση αρχείων (αποεπιλέξτε για λήψη μεμονωμένων αρχείων)", "mode_settings_autostop_timer_checkbox": "Προγραμματισμένος τερματισμός", "mode_settings_autostart_timer_checkbox": "Προγραμματισμένη εκκίνηση", "mode_settings_public_checkbox": "Δημόσια υπηρεσία OnionShare (απενεργοποιεί το ιδιωτικό κλειδί)", "mode_settings_persistent_checkbox": "Ανοίγετε πάντα αυτή την καρτέλα όταν ξεκινάει το OnionShare (η διεύθυνση κρεμμυδιού θα παραμείνει η ίδια)", "mode_settings_advanced_toggle_hide": "Απόκρυψη προχωρημένων ρυθμίσεων", "mode_settings_advanced_toggle_show": "Εμφάνιση προχωρημένων ρυθμίσεων", "gui_quit_warning_cancel": "Άκυρο", "gui_quit_warning_description": "Έξοδος και κλείσιμο όλων των καρτελών ακόμη και των ενεργών;", "gui_quit_warning_title": "Έξοδος από το OnionShare;", "gui_close_tab_warning_cancel": "Άκυρο", "gui_close_tab_warning_close": "Οκ", "gui_close_tab_warning_website_description": "Κλείσιμο της καρτέλας φιλοξενίας ιστότοπου;", "gui_close_tab_warning_receive_description": "Κλείσιμο της καρτέλας λήψης αρχείων;", "gui_close_tab_warning_share_description": "Κλείσιμο της καρτέλας αποστολής αρχείων;", "gui_close_tab_warning_persistent_description": "Κλείσιμο της προσωρινής καρτέλας και απώλεια της διεύθυνσης onion που χρησιμοποιείτε;", "gui_close_tab_warning_title": "Κλείσιμο καρτέλας;", "gui_tab_name_chat": "Συνομιλία", "gui_tab_name_website": "Ιστότοπος", "gui_tab_name_receive": "Λήψη", "gui_tab_name_share": "Κοινή χρήση", "gui_main_page_chat_button": "Έναρξη συνομιλίας", "gui_main_page_website_button": "Έναρξη φιλοξενίας", "gui_main_page_receive_button": "Έναρξη λήψης", "gui_main_page_share_button": "Έναρξη διαμοιρασμού", "gui_new_tab_chat_button": "Συνομιλήστε ανώνυμα", "gui_new_tab_website_button": "Φιλοξενία ιστότοπου", "gui_new_tab_receive_button": "Λήψη αρχείων", "gui_new_tab_share_button": "Διαμοιρασμός αρχείων", "gui_new_tab_tooltip": "Άνοιγμα νέας καρτέλας", "gui_new_tab": "Νέα καρτέλα", "gui_qr_code_dialog_title": "Κώδικας QR OnionShare", "gui_show_qr_code": "Προβολή κώδικα QR", "gui_file_selection_remove_all": "Αφαίρεση όλων", "gui_remove": "Αφαίρεση", "error_port_not_available": "Η θύρα OnionShare δεν είναι διαθέσιμη", "gui_rendezvous_cleanup_quit_early": "Πρόωρη έξοδος", "gui_rendezvous_cleanup": "Αναμονή για τερματισμό των κυκλωμάτων του Tor για να βεβαιωθείτε ότι τα αρχεία σας έχουν μεταφερθεί.\n\nΑυτό μπορεί να διαρκέσει λίγα λεπτά.", "gui_chat_url_description": "Οποιοσδήποτε με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί να συμμετέχει στο δωμάτιο συνομιλίας χρησιμοποιώντας το Tor Browser: ", "gui_color_mode_changed_notice": "Επανεκκινήστε το OnionShare για να δείτε τα νέα χρώματα.", "history_receive_read_message_button": "Ανάγνωση μηνύματος", "mode_settings_receive_webhook_url_checkbox": "Χρήση ειδοποίησης webhook", "mode_settings_receive_disable_files_checkbox": "Απενεργοποίηση της μεταφόρτωσης αρχείων", "mode_settings_receive_disable_text_checkbox": "Απενεργοποίηση υποβολής κειμένου", "mode_settings_title_label": "Προσαρμοσμένος τίτλος", "gui_status_indicator_chat_started": "Σε συνομιλία", "gui_status_indicator_chat_scheduled": "Δρομολόγηση…", "gui_status_indicator_chat_working": "Εκκίνηση…", "gui_status_indicator_chat_stopped": "Σταμάτησε", "gui_copied_client_auth_title": "Το ιδιωτικό κλειδί αντιγράφηκε", "gui_qr_label_url_title": "Διεύθυνση OnionShare", "gui_reveal": "Εμφάνιση", "gui_hide": "Απόκρυψη", "gui_share_url_public_description": "Οποιοσδήποτε με αυτή τη διεύθυνση OnionShare μπορεί να κατεβάσει τα αρχεία σας χρησιμοποιώντας το Tor Browser: ", "gui_website_url_public_description": "Οποιοσδήποτε με αυτή τη διεύθυνση OnionShare μπορεί να επισκεφθεί την ιστοσελίδα σας χρησιμοποιώντας το Tor Browser: ", "gui_chat_url_public_description": "Οποιοσδήποτε με αυτή τη διεύθυνση OnionShare μπορεί να συμμετέχει στο δωμάτιο συνομιλίας χρησιμοποιώντας το Tor Browser: ", "gui_url_instructions_public_mode": "Στείλτε την παρακάτω διεύθυνση OnionShare:", "gui_settings_theme_label": "Θέμα", "gui_copy_client_auth": "Αντιγραφή ιδιωτικού κλειδιού", "gui_copied_client_auth": "Το ιδιωτικό κλειδί αντιγράφηκε στο πρόχειρο", "gui_qr_label_auth_string_title": "Ιδιωτικό κλειδί", "gui_please_wait_no_button": "Εκκίνηση…", "gui_server_doesnt_support_stealth": "Λυπούμαστε, αυτή η έκδοση Tor, δεν υποστηρίζει το stealth (πιστοποίηση πελάτη). Παρακαλούμε δοκιμάστε μια νεότερη έκδοση του Tor ή χρησιμοποιήστε τη λειτουργία «δημόσιο» αν δε χρειάζεται να είναι ιδιωτική.", "gui_receive_url_public_description": "Οποιοσδήποτε με αυτή τη διεύθυνση OnionShare μπορεί να ανεβάσει αρχεία στον υπολογιστή σας, χρησιμοποιώντας το Tor Browser: ", "gui_settings_theme_auto": "Αυτόματο", "gui_settings_theme_dark": "Σκοτεινό", "gui_url_instructions": "Αρχικά, στείλτε την παρακάτω διεύθυνση OnionShare:", "gui_settings_theme_light": "Φωτεινό", "gui_client_auth_instructions": "Στη συνέχεια, στείλτε το ιδιωτικό κλειδί για πρόσβαση στην υπηρεσία OnionShare:", "gui_dragdrop_sandbox_flatpak": "Για να γίνει πιο ασφαλές το sandbox του Flatpak, δεν υποστηρίζεται η μεταφορά και απόθεση. Χρησιμοποιήστε τα κουμπιά \"Προσθήκη αρχείων\" και \"Προσθήκη φακέλου\" για να επιλέξετε αρχεία.", "moat_captcha_label": "Λύστε το CAPTCHA για να αιτηθείτε μια γέφυρα.", "gui_settings_tor_bridges_label": "Οι γέφυρες βοηθούν να αποκτήσετε πρόσβαση στο δίκτυο Tor όπου είναι αποκλεισμένο. Ανάλογα με το πού βρίσκεστε, μια γέφυρα μπορεί να λειτουργεί καλύτερα από μια άλλη.", "moat_captcha_submit": "Υποβολή", "moat_solution_empty_error": "Εισαγάγετε τους χαρακτήρες από την εικόνα", "moat_contact_label": "Επικοινωνία με BridgeDB…", "gui_tor_settings_window_title": "Ρυθμίσεις του Tor", "gui_settings_controller_extras_label": "Ρυθμίσεις Tor", "gui_settings_bridge_use_checkbox": "Χρήση γέφυρας", "gui_settings_bridge_radio_builtin": "Επιλέξτε μια ενσωματωμένη γέφυρα", "gui_settings_bridge_none_radio_option": "Χωρίς χρήση γεφυρών", "gui_settings_bridge_moat_radio_option": "Αιτηθείτε μια γέφυρα από torproject.org", "gui_settings_bridge_moat_button": "Αίτημα για νέα γέφυρα", "gui_settings_bridge_custom_radio_option": "Προτείνετε μια γέφυρα για την οποία ενημερωθήκατε από αξιόπιστη πηγή", "gui_settings_bridge_custom_placeholder": "πληκτρολογήστε διεύθυνση: πόρτα (μια ανά γραμμή)", "gui_settings_moat_bridges_invalid": "Δεν έχετε αιτηθεί ακόμα γέφυρα από το torproject.org.", "gui_settings_stop_active_tabs_label": "Υπάρχουν υπηρεσίες που εκτελούνται σε ορισμένες από τις καρτέλες σας.\nΠρέπει να σταματήσετε όλες τις υπηρεσίες για να αλλάξετε τις ρυθμίσεις του Tor.", "gui_settings_version_label": "Χρησιμοποιείτε το OnionShare {}", "gui_settings_help_label": "Χρειάζεστε βοήθεια; Δείτε το docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Αποστολή προσαρμοσμένης κεφαλίδας Πολιτικής Ασφαλείας Περιεχομένου", "moat_captcha_placeholder": "Εισαγάγετε τους χαρακτήρες από την εικόνα", "moat_captcha_reload": "Επαναφόρτωση", "moat_bridgedb_error": "Δεν είναι δυνατή η επικοινωνία με BridgeDB.", "moat_captcha_error": "Η λύση δεν είναι σωστή. Παρακαλούμε δοκιμάστε ξανά.", "mode_tor_not_connected_label": "Το OnionShare δεν είναι συνδεδεμένο με το δίκτυο Tor", "gui_autoconnect_description": "Το OnionShare βασίζεται στο δίκτυο Tor, το οποίο υποστηρίζεται από χιλιάδες εθελοντές σε όλο τον κόσμο.", "gui_enable_autoconnect_checkbox": "Αυτόματη σύνδεση στο Tor", "gui_autoconnect_failed_to_connect_to_tor": "Η σύνδεση με το Tor απέτυχε", "gui_autoconnect_trying_to_connect_to_tor": "Σύνδεση στο Tor…", "gui_autoconnect_connection_error_msg": "Σιγουρευτείτε ότι είστε συνδεδεμένοι στο διαδίκτυο.", "gui_autoconnect_bridge_description": "Είναι πιθανό το διαδίκτυο σας να λογοκρίνεται. Ίσως, μπορείτε να το παρακάμψετε χρησιμοποιώντας μια γέφυρα.", "gui_autoconnect_bridge_detect_automatic": "Αυτόματος προσδιορισμός της χώρας από τη διεύθυνση IP μου για τις ρυθμίσεις γέφυρας", "gui_autoconnect_bridge_detect_manual": "Μη αυτόματη επιλογή της χώρας μου για τις ρυθμίσεις γέφυρας", "gui_autoconnect_bridge_setting_options": "Ρυθμίσεις γέφυρας", "gui_autoconnect_start": "Σύνδεση στο Tor", "gui_autoconnect_configure": "Ρυθμίσεις δικτύου", "gui_autoconnect_no_bridge": "Προσπαθήστε ξανά χωρίς γέφυρα", "gui_autoconnect_try_again_without_a_bridge": "Προσπαθήστε ξανά χωρίς γέφυρα", "gui_autoconnect_circumventing_censorship": "Προσπάθεια επίλυσης προβλημάτων σύνδεσης…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Παράκαμψη λογοκρισίας…", "gui_autoconnect_circumventing_censorship_starting_meek": "Καθιέρωση γέφυρας meek για συγκάλυψη ονόματος τομέα…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Αίτημα γεφυρών από Tor Censorship Circumvention API…", "gui_autoconnect_circumventing_censorship_got_bridges": "Οι γέφυρες λήφθηκαν. Επανασύνδεση στο Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "Δεν ήταν δυνατή η σύνδεση στο Tor API. Βεβαιωθείτε ότι είστε συνδεδεμένοι στο διαδίκτυο πριν προσπαθήσετε ξανά.", "gui_general_settings_window_title": "Γενικά", "waitress_web_server_error": "Παρουσιάστηκε πρόβλημα έναρξης του διακομιστή ιστού", "gui_close_tab_warning_chat_description": "Κλείσιμο της καρτέλας που φιλοξενεί έναν διακομιστή συνομιλίας;", "gui_chat_mode_explainer": "Η λειτουργία συνομιλίας σάς επιτρέπει να συνομιλείτε διαδραστικά με άλλους, στο Tor Browser.

    Το ιστορικό συνομιλίας δεν αποθηκεύεται στο OnionShare. Το ιστορικό συνομιλιών θα διαγραφεί όταν κλείσετε το Tor Browser.", "error_generic": "Υπήρξε ένα απροσδόκητο σφάλμα με το OnionShare:\n{}", "mode_settings_persistent_autostart_on_launch_checkbox": "Αυτόματη εκκίνηση αυτής της υπηρεσίας κρεμμυδιού όταν ξεκινάει το OnionShare", "gui_settings_license_label": "Το OnionShare είναι αδειοδοτημένο σύμφωνα με τις άδειες GPL v3.
    Third-party μπορούν να προβλεφθούν εδώ:
    https://github.com/onionshare/onionshare/tree/main/licenses" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/en.json000066400000000000000000000502471521174352300271170ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} is not a readable file.", "other_page_loaded": "Address loaded", "incorrect_password": "Incorrect password", "close_on_autostop_timer": "Stopped because the auto-stop timer ran out", "closing_automatically": "Stopped because the transfer is complete", "large_filesize": "Warning: Sending a large share could take hours", "gui_drag_and_drop": "Drag and drop files and folders to start sharing", "gui_add": "Add", "gui_add_files": "Add Files", "gui_add_folder": "Add Folder", "gui_remove": "Remove", "gui_dragdrop_sandbox_flatpak": "To make the Flatpak sandbox more secure, drag and drop is not supported. Use the \"Add Files\" and \"Add Folder\" buttons to select files instead.", "gui_file_selection_remove_all": "Remove All", "gui_choose_items": "Choose", "gui_share_start_server": "Start sharing", "gui_share_stop_server": "Stop sharing", "gui_share_stop_server_autostop_timer": "Stop Sharing ({})", "gui_chat_start_server": "Start chat server", "gui_chat_stop_server": "Stop chat server", "gui_stop_server_autostop_timer_tooltip": "Auto-stop timer ends at {}", "gui_start_server_autostart_timer_tooltip": "Auto-start timer ends at {}", "gui_receive_start_server": "Start Receive Mode", "gui_receive_stop_server": "Stop Receive Mode", "gui_receive_stop_server_autostop_timer": "Stop Receive Mode ({} remaining)", "gui_receive_flatpak_data_dir": "Because you installed OnionShare using Flatpak, you must save files to a folder in ~/OnionShare.", "gui_copy_url": "Copy Address", "gui_copy_client_auth": "Copy Private Key", "gui_canceled": "Canceled", "gui_copied_url_title": "OnionShare Address Copied", "gui_copied_url": "OnionShare address copied to clipboard", "gui_copied_client_auth_title": "Private Key Copied", "gui_copied_client_auth": "Private Key copied to clipboard", "gui_show_qr_code": "Show QR Code", "gui_qr_code_dialog_title": "OnionShare QR Code", "gui_qr_label_url_title": "OnionShare Address", "gui_qr_label_auth_string_title": "Private Key", "gui_reveal": "Reveal", "gui_hide": "Hide", "gui_waiting_to_start": "Scheduled to start in {}. Click to cancel.", "gui_please_wait_no_button": "Starting…", "gui_please_wait": "Starting… Click to cancel.", "zip_progress_bar_format": "Compressing: %p%", "gui_tor_settings_window_title": "Tor Settings", "gui_autoconnect_description": "OnionShare relies on the volunteer-operated Tor network.", "gui_enable_autoconnect_checkbox": "Auto-connect to Tor", "gui_autoconnect_failed_to_connect_to_tor": "Could not connect to Tor", "gui_autoconnect_trying_to_connect_to_tor": "Connecting to Tor…", "gui_autoconnect_connection_error_msg": "Make sure you are connected to the Internet.", "gui_autoconnect_bridge_description": "You might be able to connect using a bridge if your Internet connection is censored.", "gui_autoconnect_bridge_detect_automatic": "Determine my country from my IP address for bridge settings", "gui_autoconnect_bridge_detect_manual": "Select my country for bridge settings manually", "gui_autoconnect_bridge_setting_options": "Bridge Settings", "gui_autoconnect_start": "Connect to Tor", "gui_autoconnect_configure": "Network Settings", "gui_autoconnect_no_bridge": "Try again without bridges", "gui_autoconnect_try_again_without_a_bridge": "Try again without bridges", "gui_autoconnect_circumventing_censorship": "Resolving connectivity issues…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Circumventing censorship…", "gui_autoconnect_circumventing_censorship_starting_meek": "Establishing meek bridge for domain-fronting…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Requesting bridges from the Tor censorship circumvention API…", "gui_autoconnect_circumventing_censorship_got_bridges": "Bridges established. Reconnecting to Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "Could not connect to the Tor API. Make sure you are connected to the Internet before trying again.", "gui_settings_window_title": "Settings", "gui_general_settings_window_title": "General", "gui_settings_autoupdate_label": "Check for new version", "gui_settings_autoupdate_option": "Notify me when a new version is available", "gui_settings_autoupdate_timestamp": "Last checked: {}", "gui_settings_autoupdate_timestamp_never": "Never", "gui_settings_autoupdate_check_button": "Check for New Version", "gui_settings_connection_type_label": "How should OnionShare connect to Tor?", "gui_settings_connection_type_bundled_option": "Use the Tor version built into OnionShare", "gui_settings_connection_type_automatic_option": "Attempt auto-configuration with Tor Browser", "gui_settings_controller_extras_label": "Tor settings", "gui_settings_connection_type_control_port_option": "Connect using control port", "gui_settings_connection_type_socket_file_option": "Connect using socket file", "gui_settings_connection_type_test_button": "Test Connection to Tor", "gui_settings_control_port_label": "Control port", "gui_settings_socket_file_label": "Socket file", "gui_settings_socks_label": "SOCKS port", "gui_settings_authenticate_no_auth_option": "No authentication, or cookie authentication", "gui_settings_authenticate_password_option": "Password", "gui_settings_password_label": "Password", "gui_settings_tor_bridges": "Connect using a Tor bridge?", "gui_settings_tor_bridges_label": "Bridges help your traffic enter the Tor Network if Tor access is blocked. Depending on where you connect from, one bridge may work better than another.", "gui_settings_bridge_use_checkbox": "Use a bridge", "gui_settings_bridge_radio_builtin": "Select a built-in bridge", "gui_settings_bridge_none_radio_option": "Don't use bridges", "gui_settings_meek_lite_expensive_warning": "Warning: The meek-azure bridges are very costly for the Tor Project to run.

    Only use them if unable to connect to Tor directly, via obfs4 transports, or other normal bridges.", "gui_settings_bridge_moat_radio_option": "Request a bridge from torproject.org", "gui_settings_bridge_moat_button": "Request a New Bridge", "gui_settings_bridge_custom_radio_option": "Provide a bridge you learned about from a trusted source", "gui_settings_bridge_custom_placeholder": "type address:port (one per line)", "gui_settings_moat_bridges_invalid": "You have not requested a bridge from torproject.org yet.", "gui_settings_tor_bridges_invalid": "None of the bridges you added work. Double-check them or add others.", "gui_settings_stop_active_tabs_label": "There are services running in some of your tabs.\nYou must stop all services to change your Tor settings.", "gui_settings_button_save": "Save", "gui_settings_button_cancel": "Cancel", "gui_settings_button_help": "Help", "gui_settings_version_label": "You are using OnionShare {}", "gui_settings_help_label": "Need help? See docs.onionshare.org", "gui_settings_license_label": "OnionShare is licensed under the GPL v3.
    Third-party licenses can be viewed here:
    https://github.com/onionshare/onionshare/tree/main/licenses", "settings_test_success": "Connected to the Tor controller.\n\nTor version: {}\nSupports ephemeral onion services: {}.\nSupports client authentication: {}.\nSupports next-gen .onion addresses: {}.", "connecting_to_tor": "Connecting to the Tor network", "update_available": "New OnionShare out. Click here to get it.

    You are using {} and the latest is {}.", "update_error_invalid_latest_version": "Could not check for new version: The OnionShare website is saying the latest version is the unrecognizable '{}'…", "update_error_check_error": "Could not check for new version: Maybe you're not connected to Tor, or the OnionShare website is down?", "update_not_available": "You are running the latest OnionShare.", "gui_tor_connection_ask": "Open the settings to sort out connection to Tor?", "gui_tor_connection_ask_open_settings": "Yes", "gui_tor_connection_ask_quit": "Quit", "gui_tor_connection_error_settings": "Try changing how OnionShare connects to the Tor network in the settings.", "gui_tor_connection_canceled": "Could not connect to Tor.\n\nMake sure you are connected to the Internet, then re-open OnionShare and set up its connection to Tor.", "gui_tor_connection_lost": "Disconnected from Tor.", "gui_server_started_after_autostop_timer": "The auto-stop timer ran out before the server started. Please make a new share.", "gui_server_autostop_timer_expired": "The auto-stop timer already ran out. Please adjust it to start sharing.", "gui_server_autostart_timer_expired": "The scheduled time has already passed. Please adjust it to start sharing.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "The auto-stop time can't be the same or earlier than the auto-start time. Please adjust it to start sharing.", "gui_server_doesnt_support_stealth": "Sorry, this version of Tor doesn't support stealth (client authentication). Please try with a newer version of Tor, or use 'public' mode if it doesn't need to be private.", "gui_share_url_description": "Anyone with this OnionShare address and private key can download your files using the Tor Browser: ", "gui_share_url_public_description": "Anyone with this OnionShare address can download your files using the Tor Browser: ", "gui_website_url_description": "Anyone with this OnionShare address and private key can visit your website using the Tor Browser: ", "gui_website_url_public_description": "Anyone with this OnionShare address can visit your website using the Tor Browser: ", "gui_receive_url_description": "Anyone with this OnionShare address and private key can upload files to your computer using the Tor Browser: ", "gui_receive_url_public_description": "Anyone with this OnionShare address can upload files to your computer using the Tor Browser: ", "gui_chat_url_description": "Anyone with this OnionShare address and private key can join this chat room using the Tor Browser: ", "gui_chat_url_public_description": "Anyone with this OnionShare address can join this chat room using the Tor Browser: ", "gui_url_label_persistent": "This share will not auto-stop.

    Every subsequent share reuses the address. (To use one-time addresses, turn off \"Always open this tab when OnionShare is started\" in the settings.)", "gui_url_label_stay_open": "This share will not auto-stop.", "gui_url_label_onetime": "This share will stop after first completion.", "gui_url_label_onetime_and_persistent": "This share will not auto-stop.

    Every subsequent share will reuse the address. (To use one-time addresses, turn off \"Always open this tab when OnionShare is started\" in the settings.)", "gui_url_instructions": "First, send the OnionShare address below:", "gui_url_instructions_public_mode": "Send the OnionShare address below:", "gui_client_auth_instructions": "Next, send the private key to allow access to your OnionShare service:", "gui_status_indicator_share_stopped": "Stopped", "gui_status_indicator_share_working": "Starting…", "gui_status_indicator_share_scheduled": "Scheduled…", "gui_status_indicator_share_started": "Sharing", "gui_status_indicator_receive_stopped": "Stopped", "gui_status_indicator_receive_working": "Starting…", "gui_status_indicator_receive_scheduled": "Scheduled…", "gui_status_indicator_receive_started": "Receiving", "gui_status_indicator_chat_stopped": "Stopped", "gui_status_indicator_chat_working": "Starting…", "gui_status_indicator_chat_scheduled": "Scheduled…", "gui_status_indicator_chat_started": "Chatting", "gui_file_info": "{} files, {}", "gui_file_info_single": "{} file, {}", "history_in_progress_tooltip": "{} in progress", "history_completed_tooltip": "{} completed", "history_requests_tooltip": "{} web requests", "error_cannot_create_data_dir": "Could not create OnionShare data folder: {}", "gui_receive_mode_warning": "Receive mode lets people upload files to your computer.

    Some files can potentially take control of your computer if you open them. Only open things from people you trust, or if you know what you are doing.", "gui_chat_mode_explainer": "Chat mode lets you chat interactively with others, in Tor Browser.

    Chat history is not stored in OnionShare. The chat history will disappear when you close Tor Browser.", "gui_open_folder_error": "Could not open the folder with xdg-open. The file is here: {}", "gui_settings_language_label": "Language", "gui_settings_theme_label": "Theme", "gui_settings_theme_auto": "Auto", "gui_settings_theme_light": "Light", "gui_settings_theme_dark": "Dark", "gui_settings_language_changed_notice": "Restart OnionShare to change to the new language.", "gui_color_mode_changed_notice": "Restart OnionShare to see the new colors.", "systray_menu_exit": "Quit", "systray_page_loaded_title": "Page Loaded", "systray_page_loaded_message": "OnionShare address loaded", "systray_share_started_title": "Sharing Started", "systray_share_started_message": "Starting to send files to someone", "systray_share_completed_title": "Sharing Complete", "systray_share_completed_message": "Finished sending files", "systray_share_canceled_title": "Sharing Canceled", "systray_share_canceled_message": "Someone canceled receiving your files", "systray_receive_started_title": "Receiving Started", "systray_receive_started_message": "Someone is sending files to you", "gui_all_modes_history": "History", "gui_all_modes_clear_history": "Clear All", "gui_all_modes_transfer_started": "Started {}", "gui_all_modes_progress_complete": "%p%, {0:s} elapsed.", "gui_all_modes_progress_starting": "{0:s}, %p% (calculating)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "No Files Sent Yet", "gui_share_mode_autostop_timer_waiting": "Finishing sending…", "gui_website_mode_no_files": "No Website Shared Yet", "gui_receive_mode_no_files": "No Files Received Yet", "gui_receive_mode_autostop_timer_waiting": "Finishing receiving…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_new_tab": "New Tab", "gui_new_tab_tooltip": "Open a new tab", "gui_new_tab_share_button": "Share Files", "gui_new_tab_receive_button": "Receive Files", "gui_new_tab_website_button": "Host a Website", "gui_new_tab_chat_button": "Chat Anonymously", "gui_main_page_share_button": "Start Sharing", "gui_main_page_receive_button": "Start Receiving", "gui_main_page_website_button": "Start Hosting", "gui_main_page_chat_button": "Start Chatting", "gui_tab_name_share": "Share", "gui_tab_name_receive": "Receive", "gui_tab_name_website": "Website", "gui_tab_name_chat": "Chat", "gui_close_tab_warning_title": "Close tab?", "gui_close_tab_warning_persistent_description": "Close persistent tab and lose the onion address it is using?", "gui_close_tab_warning_share_description": "Close tab that is sending files?", "gui_close_tab_warning_receive_description": "Close tab that is receiving files?", "gui_close_tab_warning_chat_description": "Close tab that is hosting a chat server?", "gui_close_tab_warning_website_description": "Close tab that is hosting a website?", "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_cancel": "Cancel", "gui_quit_warning_title": "Quit OnionShare?", "gui_quit_warning_description": "Quit and close all tabs, even though sharing is active in some of them?", "gui_quit_warning_quit": "Quit", "gui_quit_warning_cancel": "Cancel", "mode_settings_advanced_toggle_show": "Show advanced settings", "mode_settings_advanced_toggle_hide": "Hide advanced settings", "mode_settings_title_label": "Custom title", "mode_settings_persistent_checkbox": "Always open this tab when OnionShare is started (the onion address will stay the same)", "mode_settings_persistent_autostart_on_launch_checkbox": "Automatically start this onion service when OnionShare starts", "mode_settings_public_checkbox": "This is a public OnionShare service (disables private key)", "mode_settings_autostart_timer_checkbox": "Start onion service at scheduled time", "mode_settings_autostop_timer_checkbox": "Stop onion service at scheduled time", "mode_settings_share_autostop_sharing_checkbox": "Stop sharing after files have been sent (uncheck to allow downloading individual files)", "mode_settings_receive_data_dir_label": "Save files to", "mode_settings_receive_data_dir_browse_button": "Browse", "mode_settings_receive_disable_text_checkbox": "Disable submitting text", "mode_settings_receive_disable_files_checkbox": "Disable uploading files", "mode_settings_receive_webhook_url_checkbox": "Use notification webhook", "mode_settings_website_disable_csp_checkbox": "Don't send default Content Security Policy header (allows your website to use third-party resources)", "mode_settings_website_custom_csp_checkbox": "Send a custom Content Security Policy header", "gui_all_modes_transfer_finished_range": "Transferred {} - {}", "gui_all_modes_transfer_finished": "Transferred {}", "gui_all_modes_transfer_canceled_range": "Canceled {} - {}", "gui_all_modes_transfer_canceled": "Canceled {}", "settings_error_unknown": "Can't connect to Tor controller because your settings don't make sense.", "settings_error_automatic": "Could not connect to the Tor controller. Is Tor Browser (available from torproject.org) running in the background?", "settings_error_socket_port": "Can't connect to the Tor controller at {}:{}.", "settings_error_socket_file": "Can't connect to the Tor controller using socket file {}.", "settings_error_auth": "Connected to {}:{}, but can't authenticate. Maybe this isn't a Tor controller?", "settings_error_missing_password": "Connected to Tor controller, but it requires a password to authenticate.", "settings_error_unreadable_cookie_file": "Connected to the Tor controller, but password may be wrong, or your user is not permitted to read the cookie file.", "settings_error_bundled_tor_not_supported": "Using the Tor version that comes with OnionShare does not work in developer mode on Windows or macOS.", "settings_error_bundled_tor_timeout": "Taking too long to connect to Tor. Maybe you aren't connected to the Internet, or have an inaccurate system clock?", "settings_error_bundled_tor_broken": "OnionShare could not connect to Tor:\n{}", "gui_rendezvous_cleanup": "Waiting for Tor circuits to close to be sure your files have transferred.\n\nThis might take a few minutes.", "gui_rendezvous_cleanup_quit_early": "Quit Early", "error_port_not_available": "OnionShare port not available", "history_receive_read_message_button": "Read Message", "error_tor_protocol_error": "There was an error with Tor: {}", "error_generic": "There was an unexpected error with OnionShare:\n{}", "moat_contact_label": "Contacting BridgeDB…", "moat_captcha_label": "Solve the CAPTCHA to request a bridge.", "moat_captcha_placeholder": "Enter the characters from the image", "moat_captcha_submit": "Submit", "moat_captcha_reload": "Reload", "moat_bridgedb_error": "Could not contact BridgeDB.", "moat_captcha_error": "Incorrect solution. Please try again.", "moat_solution_empty_error": "Enter the characters from the image", "mode_tor_not_connected_label": "OnionShare is not connected to the Tor network", "waitress_web_server_error": "There was a problem starting the web server" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/eo.json000066400000000000000000000051471521174352300271170ustar00rootroot00000000000000{ "gui_hide": "Kaŝi", "gui_settings_button_save": "Konservi", "gui_settings_button_cancel": "Rezigni", "gui_settings_button_help": "Helpo", "gui_status_indicator_share_working": "Komencanta…", "gui_status_indicator_share_started": "Disvastiganta", "gui_status_indicator_receive_working": "Komencanta…", "gui_status_indicator_receive_started": "Ricevado", "gui_status_indicator_chat_working": "Komencanta…", "gui_settings_theme_auto": "Mem", "gui_settings_theme_light": "Hela", "gui_settings_theme_dark": "Malhela", "systray_menu_exit": "Lasi", "gui_all_modes_history": "Historio", "gui_all_modes_clear_history": "Forviŝi ĉiujn", "gui_close_tab_warning_close": "Bone", "gui_close_tab_warning_cancel": "Rezigni", "gui_quit_warning_quit": "Lasi", "gui_quit_warning_cancel": "Rezigni", "mode_settings_receive_data_dir_browse_button": "Foliumi", "moat_captcha_submit": "Sendu", "moat_captcha_reload": "Reŝargi", "incorrect_password": "Nekorekta pasvorto", "closing_automatically": "Haltis aŭtomate ĉar la elŝuto finiĝis", "gui_add": "Aldoni", "gui_remove": "Forigi", "gui_file_selection_remove_all": "Forigu ĉiujn", "gui_choose_items": "Elekti", "gui_copy_url": "Kopii retejan adreson", "gui_canceled": "Nuligita", "gui_please_wait_no_button": "Komencanta…", "gui_settings_window_title": "Agordoj", "gui_general_settings_window_title": "Ĝenerala", "gui_settings_autoupdate_timestamp_never": "Neniam", "gui_settings_connection_type_label": "Kiel OnionShare devus konektiĝi al Tor?", "gui_settings_connection_type_control_port_option": "Konekti per kontrolpordo", "gui_settings_connection_type_socket_file_option": "Konekti per socket-dosiero", "gui_settings_control_port_label": "Kontrolpordo", "gui_settings_socket_file_label": "Socket-dosiero", "gui_settings_authenticate_password_option": "Pasvorto", "gui_settings_password_label": "Pasvorto", "gui_tor_connection_ask_open_settings": "jes", "gui_tor_connection_ask_quit": "Lasi", "gui_settings_language_label": "Lingvo", "gui_settings_theme_label": "Etoso", "gui_new_tab": "Nova langeto", "gui_new_tab_tooltip": "Malfermi novan langeton", "gui_main_page_share_button": "Komenci disvastigadon", "gui_tab_name_share": "Kunhavigi", "gui_tab_name_receive": "Ricevi", "gui_tab_name_website": "Retejo", "gui_tab_name_chat": "Babili", "gui_status_indicator_share_stopped": "Haltita", "gui_status_indicator_receive_stopped": "Haltita", "gui_status_indicator_chat_stopped": "Haltita" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/es.json000066400000000000000000000546111521174352300271230ustar00rootroot00000000000000{ "other_page_loaded": "Dirección cargada", "closing_automatically": "Detenido porque la transferencia ya se completó", "gui_drag_and_drop": "Arrastra y suelta archivos y carpetas para comenzar a compartir", "gui_add": "Agregar", "gui_choose_items": "Seleccionar", "gui_share_start_server": "Comienza a compartir", "gui_share_stop_server": "Dejar de compartir", "gui_copy_url": "Copiar Dirección", "gui_copied_url": "Dirección OnionShare copiada al portapapeles", "close_on_autostop_timer": "Detenido porque se llegó al final del cronómetro de parada automática", "large_filesize": "Advertencia: Enviar un recurso compartido grande podría llevar horas", "gui_copied_url_title": "Dirección OnionShare Copiada", "gui_please_wait": "Comenzando… Clic para cancelar.", "zip_progress_bar_format": "Comprimiendo: %p%", "gui_settings_window_title": "Configuración", "gui_settings_autoupdate_label": "Comprobar nuevas versiones", "gui_settings_autoupdate_option": "Notifícame cuando haya una versión nueva disponible", "gui_settings_autoupdate_check_button": "Comprobar Nueva Versión", "gui_settings_connection_type_bundled_option": "Usa la versión de Tor incluida en OnionShare", "gui_settings_connection_type_automatic_option": "Intentar la configuración automática con el Navegador Tor", "gui_settings_connection_type_test_button": "Probar la conexión a Tor", "gui_settings_tor_bridges": "¿Conectar usando un puente Tor?", "gui_settings_tor_bridges_invalid": "No funciona ninguno de los puentes que agregaste. Vuelve a comprobarlos o añade otros.", "not_a_readable_file": "El archivo {0:s} no se puede leer.", "systray_menu_exit": "Salir", "gui_share_stop_server_autostop_timer": "Dejar de compartir ({})", "gui_receive_start_server": "Iniciar Modo de Recepción", "gui_receive_stop_server": "Detener Modo de Recepción", "gui_receive_stop_server_autostop_timer": "Detener Modo de Recepción (quedan {})", "gui_canceled": "Cancelado", "settings_error_unknown": "No se puede conectar al controlador Tor porque tu configuración no tiene sentido.", "settings_error_automatic": "No se puede conectar al controlador Tor. ¿Se está ejecutando el Navegador Tor (disponible en torproject.org) en segundo plano?", "settings_error_socket_port": "No se puede conectar al controlador Tor en {}:{}.", "settings_error_socket_file": "No se puede conectar al controlador Tor usando el archivo de socket {}.", "settings_error_auth": "Conectado con {}:{}, pero no se puede autenticar. ¿Quizás este no sea un controlador Tor?", "settings_error_missing_password": "Conectado al controlador Tor, pero se requiere una contraseña para autenticar.", "settings_error_unreadable_cookie_file": "Conectado al controlador Tor, pero la contraseña puede ser errónea, o a tu usuario no tiene permiso para leer el archivo cookie.", "settings_error_bundled_tor_not_supported": "La versión de Tor que viene con OnionShare no funciona en el modo de desarrollador en Windows o macOS.", "settings_error_bundled_tor_timeout": "La conexión con Tor está demorando demasiado. ¿Quizás el equipo está desconectado de Internet o el reloj no está en hora?", "settings_error_bundled_tor_broken": "OnionShare no pudo conectarse a Tor:\n{}", "settings_test_success": "Se conectó con el controlador Tor.\n\nVersión de Tor: {}.\nAdmite servicios cebolla efímeros: {}.\nAdmite autenticación de cliente: {}.\nAdmite direcciones .onion de nueva generación: {}.", "error_tor_protocol_error": "Hubo un error con Tor: {}", "connecting_to_tor": "Conectando a la red Tor", "update_available": "Nueva versión de OnionShare. Clic aquí para bajarlo.

    Estás usando {} y el más reciente es {}.", "update_error_check_error": "No se pudo comprobar si hay versiones nuevas: ¿Tal vez no estás conectado a Tor, o el sitio web de OnionShare está caído?", "update_error_invalid_latest_version": "No se pudo comprobar si hay versiones nuevas: El sitio web de OnionShare dice que la última versión es la irreconocible '{}'…", "update_not_available": "Estás usando la última versión de OnionShare.", "gui_tor_connection_ask": "¿Abrir la configuración para arreglar la conexión a Tor?", "gui_tor_connection_ask_open_settings": "Sí", "gui_tor_connection_ask_quit": "Salir", "gui_tor_connection_error_settings": "Prueba a cambiar la forma en que OnionShare se conecta a la red Tor en la configuración.", "gui_tor_connection_canceled": "No se pudo conectar a Tor.\n\nAsegúrate de haber conectado a Internet, vuelve a abrir OnionShare y configura su conexión a Tor.", "gui_tor_connection_lost": "Se desconectó de Tor.", "gui_server_started_after_autostop_timer": "El temporizador de parada automática expiró antes de que se iniciara el servidor. Por favor vuelve a compartirlo.", "gui_server_autostop_timer_expired": "El temporizador de parada automática ya expiró. Por favor ajústalo para comenzar a compartir.", "gui_share_url_description": "Cualquiera con esta dirección OnionShare y la clave privada puede descargar tus archivos usando el Navegador Tor: ", "gui_receive_url_description": "Cualquiera con esta dirección de OnionShare y clave privada puede subir archivos a tu ordenador usando el Navegador Tor: ", "gui_url_label_persistent": "Este recurso compartido no se detendrá automáticamente.

    Cada recurso compartido posterior reutiliza la dirección. (Para usar direcciones de un solo uso, desactive “Abrir siempre esta pestaña al iniciar OnionShare” en los ajustes.)", "gui_url_label_stay_open": "Este recurso compartido no se detendrá automáticamente.", "gui_url_label_onetime": "Este recurso compartido se detendrá después de completar la primera descarga.", "gui_url_label_onetime_and_persistent": "Este recurso compartido no se detendrá automáticamente.

    Cada recurso compartido subsiguiente reutilizará la dirección. (Para usar direcciones una sola vez, apaga la opción “Siempre abrir esta lengüeta cuando OnionShare arranque” en los ajustes.)", "gui_status_indicator_share_stopped": "Detenido", "gui_status_indicator_share_working": "Comenzando.…", "gui_status_indicator_share_started": "Compartiendo", "gui_status_indicator_receive_stopped": "Detenido", "gui_status_indicator_receive_working": "Comenzando.…", "gui_status_indicator_receive_started": "Recibiendo", "gui_file_info": "{} archivos, {}", "gui_file_info_single": "{} archivo, {}", "gui_quit_warning_quit": "Salir", "gui_settings_autoupdate_timestamp": "Última comprobación: {}", "gui_settings_autoupdate_timestamp_never": "Nunca", "gui_settings_connection_type_label": "¿Cómo debería conectarse OnionShare a Tor?", "gui_settings_connection_type_control_port_option": "Conectar usando el puerto de control", "gui_settings_connection_type_socket_file_option": "Conectar usando un archivo de socket", "gui_settings_control_port_label": "Puerto de control", "gui_settings_socket_file_label": "Archivo de socket", "gui_settings_socks_label": "Puerto SOCKS", "gui_settings_authenticate_no_auth_option": "Sin autenticación, o autenticación por cookies", "gui_settings_authenticate_password_option": "Contraseña", "gui_settings_password_label": "Contraseña", "gui_settings_meek_lite_expensive_warning": "Advertencia: Los puentes meek-azure son muy costosos de mantener para el Proyecto Tor.

    Utilízalos solo si no puedes conectarte a Tor directamente, a través de transportes obfs4 u otros puentes normales.", "gui_settings_button_save": "Guardar", "gui_settings_button_cancel": "Cancelar", "gui_settings_button_help": "Ayuda", "history_in_progress_tooltip": "{} en curso", "history_completed_tooltip": "{} completado", "gui_receive_mode_warning": "El modo de recepción permite que otras personas suban archivos a tu ordenador.

    Algunos archivos, potencialmente, podrían tomar el control de tu ordenador si los abres. Abre solo cosas de personas en las que confías, o si sabes lo que estás haciendo.", "systray_page_loaded_title": "Página Cargada", "gui_settings_language_label": "Idioma", "gui_settings_language_changed_notice": "Reiniciar OnionShare para cambiar al nuevo idioma.", "gui_add_files": "Agregar Archivos", "gui_add_folder": "Agregar Carpeta", "error_cannot_create_data_dir": "No se pudo crear carpeta de datos OnionShare: {}", "systray_page_loaded_message": "Dirección OnionShare cargada", "systray_share_started_title": "Compartición iniciada", "systray_share_started_message": "Se empezó a enviar archivos a alguien", "systray_share_completed_title": "Compartición completada", "systray_share_completed_message": "Finalizó el envío de archivos", "systray_share_canceled_title": "Compartición cancelada", "systray_share_canceled_message": "Alguien canceló la recepción de tus archivos", "systray_receive_started_title": "Recepción iniciada", "systray_receive_started_message": "Alguien te está enviando archivos", "gui_all_modes_history": "Historial", "gui_all_modes_clear_history": "Limpiar todo", "gui_all_modes_transfer_started": "Iniciado {}", "gui_all_modes_transfer_finished_range": "Transferido {} - {}", "gui_all_modes_transfer_finished": "Transferido {}", "gui_all_modes_progress_complete": "%p%, {0:s} transcurridos.", "gui_all_modes_progress_starting": "{0:s}, %p% (calculando)", "gui_all_modes_progress_eta": "{0:s}, Tiempo estimado: {1:s}, %p%", "gui_share_mode_no_files": "No se enviaron archivos todavía", "gui_share_mode_autostop_timer_waiting": "Terminando el envío…", "gui_receive_mode_no_files": "Todavía no se ha recibido ningún archivo", "gui_receive_mode_autostop_timer_waiting": "Terminando de recibir…", "gui_all_modes_transfer_canceled_range": "Cancelado {} - {}", "gui_all_modes_transfer_canceled": "Cancelado {}", "gui_stop_server_autostop_timer_tooltip": "El temporizador de parada automática finaliza a las {}", "gui_start_server_autostart_timer_tooltip": "El temporizador de inicio automático finaliza a las {}", "gui_waiting_to_start": "Inicio programado en {}. Clic para cancelar.", "gui_server_autostart_timer_expired": "La hora programada ya ha pasado. Modifícala para comenzar a compartir.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "La hora de inicio automático no puede ser igual ni anterior a la de parada automática. Ajústala para comenzar a compartir.", "gui_status_indicator_share_scheduled": "Programado…", "gui_status_indicator_receive_scheduled": "Programado…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_website_url_description": "Cualquiera con esta dirección de OnionShare y clave privada puede visitar tu sitio web usando el Navegador Tor: ", "gui_website_mode_no_files": "Aún no se han compartido sitios web", "incorrect_password": "Contraseña incorrecta", "history_requests_tooltip": "{} solicitudes web", "mode_settings_autostop_timer_checkbox": "Detener el servicio cebolla a una hora determinada", "mode_settings_autostart_timer_checkbox": "Iniciar el servicio cebolla a una hora determinada", "mode_settings_public_checkbox": "Este es un servicio público OnionShare (Deshabilita clave privada)", "mode_settings_persistent_checkbox": "Abre siempre esta pestaña cuando se inicia OnionShare (la dirección cebolla permanecerá la misma)", "mode_settings_advanced_toggle_hide": "Ocultar la configuración avanzada", "mode_settings_advanced_toggle_show": "Mostrar configuración avanzada", "gui_quit_warning_cancel": "Cancelar", "gui_quit_warning_description": "El modo compartir está activo en algunas de tus pestañas. Si sales, todas tus pestañas se cerrarán. ¿Estás seguro/a de que quieres salir?", "gui_quit_warning_title": "¿Salir de OnionShare?", "gui_close_tab_warning_cancel": "Cancelar", "gui_close_tab_warning_close": "De acuerdo", "gui_close_tab_warning_website_description": "¿Cerrar la pestaña que está alojando un sitio web?", "gui_close_tab_warning_receive_description": "¿Cerrar la pestaña que está recibiendo archivos?", "gui_close_tab_warning_share_description": "¿Cerrar la pestaña que está enviando archivos?", "gui_close_tab_warning_persistent_description": "¿Cerrar la pestaña persistente y perder la dirección de cebolla que está usando?", "gui_close_tab_warning_title": "¿Cerrar la pestaña?", "gui_new_tab_website_button": "Alojar un sitio web", "gui_new_tab_receive_button": "Recibir archivos", "gui_new_tab_share_button": "Compartir archivos", "gui_new_tab_tooltip": "Abrir una pestaña nueva", "gui_new_tab": "Nueva pestaña", "mode_settings_website_disable_csp_checkbox": "No enviar encabezado predeterminado de Política de Seguridad de Contenido (permite que tu sitio web utilice recursos de terceros)", "mode_settings_receive_data_dir_browse_button": "Navegar", "mode_settings_receive_data_dir_label": "Guardar archivos en", "mode_settings_share_autostop_sharing_checkbox": "Dejar de compartir tras el envío de archivos (desmarcar para permitir la descarga de archivos individuales)", "gui_tab_name_chat": "Chat", "gui_tab_name_website": "Sitio web", "gui_tab_name_receive": "Recibir", "gui_tab_name_share": "Compartir", "gui_new_tab_chat_button": "Chatear Anónimamente", "gui_open_folder_error": "No se pudo abrir la carpeta con xdg-open. El archivo está aquí: {}", "gui_qr_code_dialog_title": "Código QR de OnionShare", "gui_show_qr_code": "Mostrar Código QR", "gui_receive_flatpak_data_dir": "Al instalar OnionShare usando Flatpak, debes guardar los archivos en una carpeta en ~/OnionShare.", "gui_chat_stop_server": "Detener el servidor de chat", "gui_chat_start_server": "Iniciar el servidor de chat", "gui_file_selection_remove_all": "Eliminar Todo", "gui_remove": "Remover", "gui_main_page_chat_button": "Empezar a charlar", "gui_main_page_website_button": "Empezar a alojar", "gui_main_page_receive_button": "Empezar a recibir", "gui_main_page_share_button": "Empezar a compartir", "gui_chat_url_description": "Cualquiera con esta dirección de OnionShare y la clave privada puede unirse a esta sala de chat usando el Navegador Tor: ", "error_port_not_available": "Puerto OnionShare no disponible", "gui_rendezvous_cleanup_quit_early": "Salir Antes", "gui_rendezvous_cleanup": "Esperando a que los circuitos Tor se cierren para asegurar que tus archivos se han transferido.\n\nEsto puede llevar unos pocos minutos.", "gui_color_mode_changed_notice": "Reiniciar OnionShare para ver los nuevos colores.", "mode_settings_receive_webhook_url_checkbox": "Usar webhook de notificaciones", "history_receive_read_message_button": "Leer mensaje", "mode_settings_receive_disable_files_checkbox": "Deshabilitar la subida de archivos", "mode_settings_receive_disable_text_checkbox": "Deshabilitar el envío de texto", "mode_settings_title_label": "Título personalizado", "gui_status_indicator_chat_started": "Chateando", "gui_status_indicator_chat_scheduled": "Programado…", "gui_status_indicator_chat_working": "Iniciando…", "gui_status_indicator_chat_stopped": "Detenido", "gui_reveal": "Mostrar", "gui_settings_theme_label": "Tema", "gui_url_instructions": "Primero, envía la siguiente dirección de OnionShare:", "gui_qr_label_url_title": "Dirección de OnionShare", "gui_server_doesnt_support_stealth": "Lo sentimos, esta versión de Tor no soporta stealth (Autenticación de Cliente). Por favor prueba con una versión de Tor más reciente o utiliza el modo 'público' si no necesita ser privado.", "gui_website_url_public_description": "Cualquiera con esta dirección de OnionShare puede visitar tu sitio web utilizando el Navegador Tor: ", "gui_share_url_public_description": "Cualquiera con esta dirección de OnionShare puede descargar tus archivos usando el Navegador Tor: ", "gui_please_wait_no_button": "Iniciando…", "gui_hide": "Ocultar", "gui_copy_client_auth": "Copiar la Clave Privada", "gui_qr_label_auth_string_title": "Clave Privada", "gui_copied_client_auth": "Clave Privada copiada en el portapapeles", "gui_copied_client_auth_title": "Clave Privada copiada", "gui_client_auth_instructions": "Después, envía la clave privada para permitir el acceso a tu servicio de OnionShare:", "gui_chat_url_public_description": "Cualquiera con esta dirección de OnionShare puede unirse a esta sala de chat usando el Navegador Tor: ", "gui_receive_url_public_description": "Cualquiera con esta dirección OnionShare puede subir archivos a tu ordenador usando el Navegador Tor: ", "gui_settings_theme_dark": "Oscuro", "gui_settings_theme_light": "Claro", "gui_settings_theme_auto": "Automático", "gui_url_instructions_public_mode": "Enviar la siguiente dirección de OnionShare:", "gui_dragdrop_sandbox_flatpak": "Para hacer que la zona de prueba de Flatpak sea más segura, no se soporta arrastrar y colocar. En su lugar, usa los botones \"Agregar Archivos\" y \"Agregar Carpeta\" para seleccionar archivos.", "gui_tor_settings_window_title": "Configuraciones de Tor", "gui_settings_controller_extras_label": "Configuraciones de Tor", "gui_settings_tor_bridges_label": "Los puentes te ayudan a acceder a la red Tor en lugares donde Tor está bloqueado. Dependiendo de dónde estés, un puente podría funcionar mejor que otro.", "gui_settings_bridge_use_checkbox": "Usar un puente", "gui_settings_bridge_radio_builtin": "Seleccionar un puente predefinido", "gui_settings_bridge_none_radio_option": "No usar un puente", "gui_settings_bridge_moat_radio_option": "Solicita un puente desde torproject.org", "gui_settings_bridge_moat_button": "Solicitar un Nuevo Puente", "gui_settings_bridge_custom_radio_option": "Indica un puente que conociste a través de una fuente confiable", "gui_settings_bridge_custom_placeholder": "escribe dirección:puerto (una por línea)", "gui_settings_moat_bridges_invalid": "Aún no has solicitado un puente desde torproject.org.", "gui_settings_stop_active_tabs_label": "Estos son servicios ejecutándose en algunas de tus pestañas.\nDebes detenerlos todos para cambiar tus configuraciones de Tor.", "gui_settings_version_label": "Estás usando OnionShare {}", "gui_settings_help_label": "¿Necesitas ayuda? Mira docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Enviar un encabezado personaizado de Política de Seguridad de Contenido", "moat_contact_label": "Contactando BridgeDB…", "moat_captcha_label": "Resuelve el CAPTCHA para solicitar un puente.", "moat_captcha_placeholder": "Ingresa los caracteres en la imagen", "moat_captcha_submit": "Enviar", "moat_captcha_reload": "Recargar", "moat_bridgedb_error": "No se pudo contactar BridgeDB.", "moat_captcha_error": "Solución incorrecta. Por favor, inténtalo de nuevo.", "moat_solution_empty_error": "Introduce los caracteres de la imagen", "mode_tor_not_connected_label": "OnionShare no está conectado a la red Tor", "gui_autoconnect_bridge_detect_automatic": "Determinar automáticamente mi país a partir de mi dirección IP para la configuración del puente", "gui_autoconnect_description": "OnionShare se basa en la Red Tor, colaborada por miles de voluntarios en todo el mundo.", "gui_enable_autoconnect_checkbox": "Conectar a Tor automáticamente", "gui_autoconnect_failed_to_connect_to_tor": "No se pudo conectar a Tor", "gui_autoconnect_trying_to_connect_to_tor": "Intentado conectar con Tor…", "gui_autoconnect_connection_error_msg": "Asegúrate de estar conectado a Internet.", "gui_autoconnect_bridge_description": "También es posible que tu Internet esté siendo censurado. Es posible que puedas eludir esto usando un puente.", "gui_autoconnect_bridge_detect_manual": "Seleccionar manualmente mi país para la configuración del puente", "gui_autoconnect_bridge_setting_options": "Configuración del Puente", "gui_autoconnect_start": "Conectar a Tor", "gui_autoconnect_configure": "Configuración de la red", "gui_autoconnect_no_bridge": "Inténtalo de nuevo sin puente", "gui_autoconnect_try_again_without_a_bridge": "Inténtalo de nuevo sin Puente", "gui_autoconnect_circumventing_censorship": "Intentando resolver problemas de conectividad…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Iniciando el proceso de elusión de censura…", "gui_autoconnect_circumventing_censorship_starting_meek": "Comenzando puente Meek para domain-fronting…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Pidiendo puentes a la API de elusión de la censura de Tor…", "gui_autoconnect_circumventing_censorship_got_bridges": "¡Puentes conseguidos! Intentando reconectar a Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "No se pudo conectar a la API de Tor. Asegúrate de estar conectado a Internet antes de volver a intentarlo.", "gui_general_settings_window_title": "General", "waitress_web_server_error": "Hubo un problema al iniciar el servidor web", "gui_close_tab_warning_chat_description": "¿Cerrar la pestaña que aloja un servidor de chat?", "gui_chat_mode_explainer": "El modo de chat te permite chatear de forma interactiva con otros, en el navegador Tor.

    El historial del chat no se almacena en OnionShare. El historial de chat desaparecerá cuando cierres el navegador Tor.", "mode_settings_persistent_autostart_on_launch_checkbox": "Inicia automáticamente este servicio cebolla cuando arranque OnionShare", "error_generic": "Hubo un error inesperado con OnionShare:\n{}", "gui_settings_license_label": "OnionShare tiene licencia GPL v3.
    Las licencias de terceros se pueden consultar aquí:
    https://github.com/onionshare/onionshare/tree/main/licenses" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/fa.json000066400000000000000000000707621521174352300271070ustar00rootroot00000000000000{ "not_a_readable_file": "‎{0:s} یک فایل ناخوانا است.", "other_page_loaded": "نشانی بارگذاری‌شده", "close_on_autostop_timer": "متوقف شد چون مهلت زمان‌سنج توقف خودکار به پایان رسید", "closing_automatically": "متوقف شد چون انتقال کامل شد", "large_filesize": "هشدار: یک اشتراک‌گذاری با حجم بالا ممکن است ساعت‌ها طول بکشد", "systray_menu_exit": "خروج", "gui_drag_and_drop": "برای شروع اشتراک‌گذاری فایل‌ها و پوشه‌ها را بکشید و رها کنید", "gui_add": "افزودن", "gui_choose_items": "انتخاب", "gui_share_start_server": "شروع اشتراک‌گذاری", "gui_share_stop_server": "توقف اشتراک‌گذاری", "gui_share_stop_server_autostop_timer": "توقف اشتراک‌گذاری ({})", "gui_receive_start_server": "شروع حالت دریافت", "gui_receive_stop_server": "توقف حالت دریافت", "gui_receive_stop_server_autostop_timer": "توقف حالت دریافت ({} باقی‌مانده)", "gui_copy_url": "رونوشت از نشانی", "gui_canceled": "لغوشده", "gui_copied_url_title": "نشانی OnionShare رونویسی شد", "gui_copied_url": "نشانی OnionShare در کلیپ‌بورد رونویسی شد", "gui_please_wait": "در حال شروع... برای لغو کلیک کنید.", "gui_quit_warning_quit": "خروج", "zip_progress_bar_format": "فشرده‌سازی: %p%", "gui_settings_window_title": "تنظیمات", "gui_settings_autoupdate_label": "بررسی وجود نسخهٔ جدید", "gui_settings_autoupdate_option": "هنگامی که نسخهٔ جدید در دسترس بود من را خبر کن", "gui_settings_autoupdate_timestamp": "آخرین بررسی: {}", "gui_settings_autoupdate_timestamp_never": "هرگز", "gui_settings_autoupdate_check_button": "بررسی وجود نسخهٔ جدید", "gui_settings_connection_type_label": "چگونه OnionShare باید به Tor وصل شود؟", "gui_settings_connection_type_bundled_option": "از نسخهٔ Tor توکار در OnionShare استفاده شود", "gui_settings_connection_type_automatic_option": "کوشش برای پیکربندی خودکار با مرورگر Tor", "gui_settings_connection_type_control_port_option": "اتصال از طریق درگاه کنترل", "gui_settings_connection_type_socket_file_option": "اتصال از طریق فایل سوکت", "gui_settings_connection_type_test_button": "اتصال آزمایشی به Tor", "gui_settings_control_port_label": "درگاه کنترل", "gui_settings_socket_file_label": "فایل سوکت‌", "gui_settings_socks_label": "درگاه SOCKS", "gui_settings_authenticate_no_auth_option": "بدون اصالت‌سنجی، یا اصالت‌سنجی کوکی", "gui_settings_authenticate_password_option": "گذرواژه", "gui_settings_password_label": "گذرواژه", "gui_settings_tor_bridges": "با استفاده از پل Tor وصل شود؟", "gui_settings_meek_lite_expensive_warning": "هشدار: پل‌های meek_lite برای پروژهٔ Tor برای اجرا بسیار پرهزینه هستند.

    فقط درصورتی که نمی‌توانید مستقیماً به Tor وصل شوید، از طریق obfs4، از آن‌ها یا دیگر پل‌ها استفاده کنید.", "gui_settings_tor_bridges_invalid": "هیچ‌یک از پل‌هایی که افزوده‌اید کار نمی‌کنند. دوباره آن‌ها را بررسی کرده یا پل‌هایی دیگر بیافزایید.", "gui_settings_button_save": "ذخیره", "gui_settings_button_cancel": "لغو", "gui_settings_button_help": "راهنما", "settings_error_unknown": "اتصال به کنترل‌کننده Tor به‌دلیل نامفهوم بودن تنظیمات شما امکان‌پذیر نبود.", "settings_error_automatic": "اتصال به کنترل‌کننده Tor امکان‌پذیر نبود. آیا مرورگر Tor (در دسترس از طریق torproject.org) درحال اجرا در پس‌زمینه است؟", "settings_error_socket_port": "اتصال به کنترل‌کننده Tor در {}:{} امکان‌پذیر نیود.", "settings_error_socket_file": "اتصال به کنترل‌کننده Tor از طریق فایل سوکت با استفاده از {} امکان‌پذیر نبود.", "settings_error_auth": "متصل به {}:{}، اما نتوانست اصالت‌سنجی کند. شاید این یک کنترل‌کننده Tor نیست؟", "settings_error_missing_password": "متصل به کنترل‌کننده Tor، اما نیاز به یک گذرواژه برای اصالت‌سنجی دارد.", "settings_error_unreadable_cookie_file": "به کنترل‌کننده Tor متصل است، اما شاید گذرواژه اشتباه باشد، یا کاربر شما اجازهٔ خواندن فایل کوکی را ندارد.", "settings_error_bundled_tor_not_supported": "استفاده از نسخهٔ Torی که با OnionShare می‌آید، درحالت توسعه‌دهنده روی ویندوز یا macOS کار نمی‌کند.", "settings_error_bundled_tor_timeout": "اتصال به Tor زمان زیادی می‌برد. شاید به اینترنت متصل نیستید، یا ساعت سیستم شما دقیق نیست؟", "settings_error_bundled_tor_broken": "OnionShare نتوانست به Tor وصل شود:\n{}", "settings_test_success": "به واپایشگر تور وصل شده.\n\nنگارش تور: {}\nپشتیبانی از حدمات پیازی ناپایدار: {}.\nپشتیبانی از هویت‌سنجی کارخواه: {}.\nپشتیبانی از نشانی‌های نسل بعدی ‪.onion‬: {}.", "error_tor_protocol_error": "خطایی در ارتباط با Tor وجود داشت: {}", "connecting_to_tor": "وصل شدن به شبکهٔ تور", "update_available": "پیازرسان جدید منتشر شده. برای گرفتنش این‌جا بزنید..

    از {} استفاده می‌کنید و جدیدترین نگارش {} است.", "update_error_check_error": "نتوانست نگارش جدید را بررسی کند: شاید به تور وصل نیستید یا پایگاه وب پیازرسان پایین است؟", "update_error_invalid_latest_version": "نتوانست نگارش جدید را بررسی کند:‌ پایگاه وب پیازرسان می‌گوید جدیدترین نگارش قابل تشخیص نیست «{}»…", "update_not_available": "از جدیدترین نگارش پیازرسان استفاده می‌کنید.", "gui_tor_connection_ask": "گشودن تنظیمات برای ساماندهی اتّصال به تور؟", "gui_tor_connection_ask_open_settings": "بله", "gui_tor_connection_ask_quit": "خروج", "gui_tor_connection_error_settings": "دگرگونی چگونگی وصل شدن پیازرسان به شبکهٔ تور در تنظیمات.", "gui_tor_connection_canceled": "نتوانست به تور وصل شود.\n\nمطمئن شوید که به اینترنت وصلید. سپس پیازرسان را دوباره گشوده و اتّصالش به تور را برپا کنید.", "gui_tor_connection_lost": "قطع شده از تور.", "gui_server_started_after_autostop_timer": "زمان‌سنج توقف خودکار، قبل از شروع سرور به پایان رسید. لطفاً یک اشتراک‌گذاری جدید درست کنید.", "gui_server_autostop_timer_expired": "زمان‌سنج توقف خودکار به پایان رسید. لطفاً برای شروع اشتراک‌گذاری، آن را تنظیم کنید.", "gui_share_url_description": "هرکسی با این نشانی OnionShare و کلید خصوصی می‌تواند توسط مرورگر Tor ‌‍‎‏‪‫ فایل‌های شما را بارگیری کند‮:‭", "gui_receive_url_description": "هرکسی با این نشانی OnionShare و کلید خصوصی می‌تواند توسط مرورگر Tor ‌‍‎‏‪‫ فایل‌هایی را روی رایانهٔ شما بارگذاری کند‮:‭", "gui_url_label_persistent": "این اشتراک‌گذاری به‌صورت خودکار متوقف نمی‌شود.

    هر اشتراک‌گذاری بعدی هم از همین نشانی استفاده می‌کنند. (برای استفاده از نشانی‌های یک‌بارمصرف، گزینهٔ «این زبانه همیشه هنگام شروع OnionShare باز شود» را در تنظیمات غیرفعال کنید.)", "gui_url_label_stay_open": "این اشتراک‌گذاری به‌صورت خودکار متوقف نخواهد شد.", "gui_url_label_onetime": "این اشتراک‌گذاری پس از اولین تکمیل متوقف خواهد شد.", "gui_url_label_onetime_and_persistent": "این اشتراک‌گذاری به‌صورت خودکار متوقف نخواهد شد.

    هر اشتراک‌گذاری بعدی نیز از همین نشانی استفاده خواهند کرد. (برای استفاده از نشانی‌های یک‌بارمصرف گزینهٔ «این زبانه همیشه هنگام شروع OnionShare باز شود» را در تنظیمات خاموش کنید.)", "gui_status_indicator_share_stopped": "متوقف شد", "gui_status_indicator_share_working": "درحال شروع…", "gui_status_indicator_share_started": "درحال اشتراک‌گذاری", "gui_status_indicator_receive_stopped": "متوقف شد", "gui_status_indicator_receive_working": "درحال شروع…", "gui_status_indicator_receive_started": "درحال دریافت", "gui_file_info": "{} فایل‌ها، {}", "gui_file_info_single": "{} فایل، {}", "history_in_progress_tooltip": "{} درحال اجرا", "history_completed_tooltip": "{} کامل شد", "gui_receive_mode_warning": "حالت دریافت به سایر افراد اجازه می‌دهد تا فایل‌ها را روی رایانهٔ شما بارگذاری کنند.

    اگر برخی فایل‌ها را باز کنید بالقوه می‌توانند کنترل رایانهٔ شما را در دست بگیرند. فقط چیزهایی را باز کنید که از طرف افرادی که به آن‌ها اعتماد دارید باشد، یا اگر نسبت به آنچه انجام می‌دهید آگاهید.", "systray_page_loaded_title": "صفحه بارگذاری شد", "gui_settings_language_label": "زبان", "gui_settings_language_changed_notice": "برای اعمال تغییرات روی زبان جدید، OnionShare را راه‌اندازی مجدد کنید.", "gui_add_files": "افزودن فایل‌ها", "gui_add_folder": "افزودن پوشه", "error_cannot_create_data_dir": "ایجاد پوشهٔ دادهٔ OnionShare انجام نشد: {}", "systray_page_loaded_message": "نشانی OnionShare بارگذاری شد", "systray_share_started_title": "اشتراک‌گذاری شروع شد", "systray_share_started_message": "درحال شروع ارسال فایل‌ها به شخصی", "systray_share_completed_title": "اشتراک‌گذاری تکمیل شد", "systray_share_completed_message": "ارسال فایل‌ها به پایان رسید", "systray_share_canceled_title": "اشتراک‌گذاری لغو شد", "systray_share_canceled_message": "شخصی دریافت فایل‌های شما را لغو کرد", "systray_receive_started_title": "دریافت شروع شد", "systray_receive_started_message": "شخصی درحال ارسال فایل به شماست", "gui_all_modes_history": "تاریخچه", "gui_all_modes_clear_history": "پاک‌سازی همه", "gui_all_modes_transfer_started": "{} شروع شد", "gui_all_modes_transfer_finished_range": "{} - {} منتقل شد", "gui_all_modes_transfer_finished": "{} منتقل شد", "gui_all_modes_progress_complete": "‎%p%، ‏‎{0:s} سپری شد.", "gui_all_modes_progress_starting": "‎{0:s}, ‏%p% (درحال محاسبه)", "gui_all_modes_progress_eta": "{0:s}، تخمین: {1:s}, %p%", "gui_share_mode_no_files": "هنوز هیچ فایلی فرستاده نشده است", "gui_share_mode_autostop_timer_waiting": "درحال به پایان رساندن ارسال…", "gui_receive_mode_no_files": "هنوز هیچ فایلی دریافت نشده است", "gui_receive_mode_autostop_timer_waiting": "درحال به پایان رساندن دریافت…", "gui_all_modes_transfer_canceled_range": "{} - {} لغو شد", "gui_all_modes_transfer_canceled": "{} لغو شد", "gui_stop_server_autostop_timer_tooltip": "زمان‌سنج توقف خودکار در {} به پایان می‌رسد", "gui_start_server_autostart_timer_tooltip": "زمان‌سنج شروع خودکار در {} به پایان می‌رسد", "gui_waiting_to_start": "برای شروع در {} زمان‌بندی شده است. برای لغو، کلیک کنید.", "gui_server_autostart_timer_expired": "زمان برنامه‌ریزی‌شده سپری شده است. لطفاً برای شروع اشتراک‌گذاری، آن را تنظیم کنید.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "زمان توقف خودکار نمی‌توان یکسان و یا زودتر از زمان شروع خودکار باشد. لطفاً برای شروع اشتراک‌گذاری، آن را تنظیم کنید.", "gui_status_indicator_share_scheduled": "زمان‌بندی‌شده…", "gui_status_indicator_receive_scheduled": "زمان‌بندی‌شده…", "days_first_letter": "ر", "hours_first_letter": "س", "minutes_first_letter": "د", "seconds_first_letter": "ث", "gui_website_url_description": "هرکسی با این نشانی OnionShare می‌تواند توسط مرورگر Tor‏ از وب‌سایت شما بازدید کند‮:‭", "gui_website_mode_no_files": "هنوز سایتی اشتراک‌گذاری نشده است", "incorrect_password": "گذرواژهٔ نادرست", "history_requests_tooltip": "{} درخواست‌های وب", "gui_new_tab_share_button": "اشتراک‌‌گذاری فایل‌ها", "gui_file_selection_remove_all": "حذف همه", "gui_chat_start_server": "شروع سرور گفت‌وگو", "gui_tor_settings_window_title": "تنظیمات Tor", "gui_settings_controller_extras_label": "تنظیمات Tor", "gui_settings_bridge_use_checkbox": "استفاده از یک پل", "gui_settings_bridge_radio_builtin": "انتخاب یک پل توکار", "gui_settings_bridge_moat_radio_option": "درخواست یک پل از torproject.org", "gui_settings_bridge_moat_button": "درخواست یک پل جدید", "gui_settings_moat_bridges_invalid": "شما تاکنون از torproject.org درخواست پل نکرده‌اید.", "gui_url_instructions_public_mode": "نشانی OnionShare زیر را ارسال کنید:", "gui_client_auth_instructions": "سپس، کلید خصوصی برای اجازهٔ دسترسی به سرویس OnionShare خود را ارسال کنید:", "gui_tab_name_receive": "دریافت", "mode_settings_advanced_toggle_hide": "پنهان‌سازی تنظیمات پیشرفته", "gui_rendezvous_cleanup_quit_early": "خروج زودهنگام", "moat_captcha_submit": "ثبت و ارسال", "moat_solution_empty_error": "نویسه‌های در تصویر را وارد کنید", "gui_please_wait_no_button": "درحال شروع…", "gui_copy_client_auth": "رونوشت از کلید خصوصی", "gui_copied_client_auth": "کلید خصوصی در کلیپ‌بورد رونویسی شد", "gui_qr_label_url_title": "نشانی OnionShare", "gui_show_qr_code": "نمایش کد QR", "gui_copied_client_auth_title": "کلید خصوصی رونویسی شد", "gui_hide": "مخفی‌کردن", "gui_reveal": "آشکارکردن", "gui_status_indicator_chat_started": "درحال گپ‌زدن", "gui_url_instructions": "ابتدا، نشانی OnionShare زیر را ارسال کنید:", "gui_status_indicator_chat_stopped": "متوقف شد", "gui_status_indicator_chat_working": "درحال شروع…", "gui_color_mode_changed_notice": "برای مشاهدهٔ رنگ‌های جدید OnionShare را راه‌اندازی مجدد کنید.", "gui_new_tab": "زبانهٔ جدید", "gui_new_tab_tooltip": "بازکردن زبانهٔ جدید", "gui_new_tab_receive_button": "دریافت فایل‌ها", "gui_main_page_website_button": "شروع میزبانی", "gui_main_page_chat_button": "شروع گپ‌زدن", "gui_tab_name_website": "وب‌سایت", "gui_tab_name_share": "اشتراک‌گذاری", "gui_tab_name_chat": "گپ‌زدن", "gui_close_tab_warning_title": "بستن زبانه؟", "gui_close_tab_warning_close": "قبول", "gui_quit_warning_cancel": "لغو", "mode_settings_autostart_timer_checkbox": "شروع سرویس Onion در زمان برنامه‌ربزی‌شده", "mode_settings_autostop_timer_checkbox": "توقف سرویس Onion در زمان برنامه‌ریزی‌شده", "mode_settings_receive_data_dir_label": "ذخیرهٔ فایل‌ها در", "mode_settings_receive_data_dir_browse_button": "مرور", "mode_settings_receive_disable_text_checkbox": "غیرفعال‌سازی ثبت و ارسال متن", "gui_settings_theme_label": "پوسته", "gui_settings_theme_auto": "خودکار", "gui_autoconnect_bridge_detect_manual": "کشور من زا برای تنظیمات پل به‌صورت دستی انتخاب کن", "gui_dragdrop_sandbox_flatpak": "برای امنیت بیشتر جعبه‌شنی Flatpak، قابلیت کشیدن و رها‌کردن پشتیبانی نمی‌شود. درعوض برای انتخاب فایل از دکمه‌های «افزودن فایل‌ها» و «افزودن پوشه‌ها» استفاده کنید.", "gui_receive_flatpak_data_dir": "چون شما OnionShare را با استفاده از Flatpac نصب کرده‌اید، بایستی فایل‌ها را در پوشه‌ای در ‎~/OnionShare ذخیره کنید.", "gui_qr_label_auth_string_title": "کلید خصوصی", "gui_autoconnect_bridge_setting_options": "تنظیمات پل", "gui_close_tab_warning_cancel": "لغو", "gui_qr_code_dialog_title": "کد QR برای OnionShare", "gui_chat_stop_server": "توقف سرور گفت‌وگو", "gui_remove": "حذف", "gui_autoconnect_circumventing_censorship": "درحال حل مشکلات برقراری اتصال…", "gui_autoconnect_try_again_without_a_bridge": "دوباره بدون پل امتحان کنید", "gui_autoconnect_no_bridge": "دوباره بدون پل امتحان کنید", "gui_settings_tor_bridges_label": "اگر دسترسی Tor بسته شده باشد، پل‌ها به ورود ترافیک شما به شبکهٔ Tor کمک می‌کنند. بسته به اینکه از کجا وصل می‌شوید، یک پل ممکن است نسبت به پل دیگر بهتر عمل کند.", "gui_settings_bridge_none_radio_option": "عدم استفاده از پل‌ها", "gui_settings_bridge_custom_radio_option": "ارائه پلی که در مورد آن از یک منبع قابل اعتماد یاد گرفته‌اید", "gui_settings_bridge_custom_placeholder": "نشانی را به‌صورت address:port تایپ کنید (یکی در هر خط)", "gui_settings_stop_active_tabs_label": "خدماتی روی برخی زبانه‌های شما درحال اجرا هستند.\nبرای تغییر تنظیمات Tor باید همهٔ خدمات را متوقف کنید.", "gui_settings_version_label": "شما درحال استفاده از OnionShar{}‎ هستید", "gui_settings_help_label": "به کمک نیاز دارید؟ docs.onionshare.org را ببینید", "gui_server_doesnt_support_stealth": "متأسفیم، این نسخهٔ Tor از stealth (اصالت‌سنجی کلاینت) پشتیبانی نمی‌کند. لطفاً با نسخهٔ جدید‌تر Tor سعی کنید، یا چنانچه نیاز به خصوصی‌بودن نیست، از حالت ‹عمومی› استفاده کنید.", "gui_website_url_public_description": "هرکسی با این نشانی OnionShare می‌تواند توسط مرورگر Tor ‌‍‎‏‪‫ از وب‌سایت شما بازدید کند‮:‭", "gui_share_url_public_description": "هرکسی با این نشانی OnionShare می‌تواند توسط مرورگر Tor ‌‍‎‏‪‫ فایل‌های شما را بارگیری کند‏‎‎‏‪‫‬‭‮:‭", "gui_receive_url_public_description": "هرکسی با این نشانی OnionShare می‌تواند توسط مرورگر Tor ‌‍‎‏‪‫ فایل‌هایی را در رایانهٔ شما بارگذاری کند‏‎‎‏‪‫‬‭‮:‭", "gui_chat_url_description": "هرکسی با این نشانی OnionShare و کلید خصوصی می‌تواند توسط مرورگر Tor ‌‍‎‏‪‫ به این اتاق گفت‌وگو بپیوندد‮:‭", "gui_chat_url_public_description": "هرکسی با این نشانی OnionShare می‌تواند توسط مرورگر Tor ‌‍‎‏‪‫ به این اتاق گفت‌وگو بپیوندد‮:‭", "mode_settings_public_checkbox": "این سرویس OnionShare عمومی است (کلید خصوصی را غیرفعال می‌کند)", "mode_settings_receive_disable_files_checkbox": "غیرفعال‌سازی بارگذاری فایل‌ها", "gui_status_indicator_chat_scheduled": "زمان‌بندی‌شده…", "gui_new_tab_website_button": "میزبانی یک وب‌سایت", "gui_open_folder_error": "نمی‌توان فایل را با xdg-open باز کرد. فایل اینجاست:{}", "gui_close_tab_warning_receive_description": "زبانه‌ای که درحال دریافت فایل‌ها است بسته شود؟", "gui_close_tab_warning_share_description": "زبانه‌ای که درحال ارسال فایل‌ها است بسته شود؟", "gui_close_tab_warning_website_description": "زبانه‌ای که درحال میزبانی از یک وب‌سایت است بسته شود؟", "gui_settings_theme_light": "روشن", "gui_settings_theme_dark": "تاریک", "gui_quit_warning_title": "خروج از OnionShare؟", "gui_new_tab_chat_button": "به‌صورت ناشناس گپ بزنید", "gui_main_page_receive_button": "شروع دریافت", "mode_settings_advanced_toggle_show": "نمایش تنظیمات پیشرفته", "mode_settings_title_label": "عنوان سفارشی", "gui_close_tab_warning_persistent_description": "زبانهٔ ماندگار بسته شود و نشانی Onion مورد استفاده آن از دست برود؟", "mode_settings_persistent_checkbox": "این زبانه همیشه هنگام شروع OnionShare باز شود (نشانی Onion یکسان خواهد ماند)", "mode_settings_receive_webhook_url_checkbox": "استفاده از اعلان Webhook", "mode_settings_website_disable_csp_checkbox": "سرآیند پیش‌فرض سیاست امنیت محتوا را ارسال نکنید (به وب‌سایت شما اجازه از منابع شخص ثالث استفاده کند)", "mode_settings_website_custom_csp_checkbox": "ارسال یک سرآیند سفارشی سیاست امنیت محتوا", "gui_rendezvous_cleanup": "درحال انتظار برای بسته‌شدن مدار Tor تا مطمئن شود فایل‌های شما منتقل شده‌اند.\n\nشاید چند دقیقه طول بکشد.", "moat_contact_label": "درحال برقراری ارتباط با BridgeDB…", "error_port_not_available": "درگاه OnionShare در دسترس نیست", "history_receive_read_message_button": "خواندن پیام", "moat_captcha_label": "برای درخواست یک پل، CAPTCHA را حل کنید.", "moat_captcha_reload": "بارگذاری مجدد", "moat_bridgedb_error": "با BridgeDB ارتباط برقرار نشد.", "moat_captcha_error": "راه‌حل نادرست. لطفاً دوباره تلاش کنید.", "moat_captcha_placeholder": "نویسه‌های در تصویر را وارد کنید", "mode_tor_not_connected_label": "OnionShare به شبکهٔ Tor وصل نیست", "gui_quit_warning_description": "خروج و بستن همه‌ی زبانه‌ها، هرچند اشتراک‌گذاری در برخی از آن‌ها فعال است؟", "mode_settings_share_autostop_sharing_checkbox": "توقف اشتراک‌گذاری پس از اینکه فایل‌ها ارسال شدند (برای اجازه بارگیری تکی فایل‌ها، تیک را بردارید)", "gui_main_page_share_button": "شروع اشتراک‌گذاری", "gui_autoconnect_description": "OnionShare به داوطلب‌گردان‌بودن شبکهٔ Tor متکی است.", "gui_enable_autoconnect_checkbox": "اتصال خودکار به Tor", "gui_autoconnect_failed_to_connect_to_tor": "اتصال به Tor ممکن نیست", "gui_autoconnect_connection_error_msg": "مطمئن شوید که به اینترنت متصل هستید.", "gui_autoconnect_trying_to_connect_to_tor": "درحال اتصال به Tor…", "gui_autoconnect_bridge_description": "اگر اتصال اینترنت شما سانسور شده است شاید با استفاده از یک پل قادر به اتصال باشید.", "gui_autoconnect_bridge_detect_automatic": "کشورم را از روی نشانی IP من برای تنظیمات پل تعیین کن", "gui_autoconnect_start": "اتصال به Tor", "gui_autoconnect_configure": "تنظیمات شبکه", "gui_autoconnect_circumventing_censorship_starting_circumvention": "درحال دور زدن سانسور…", "gui_autoconnect_circumventing_censorship_starting_meek": "درحال ایجاد پل meek برای دامنهٔ صوری…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "درحال درخواست چند پل از API مربوط به دور زدن سانسور Tor…", "gui_autoconnect_circumventing_censorship_got_bridges": "پل ایجاد شد. درحال اتصال مجدد به Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "نتوانست به Tor API وصل شود. پیش از تلاش دوباره از اتصال خود به اینترنت مطمئن شوید.", "gui_general_settings_window_title": "عمومی", "gui_chat_mode_explainer": "حالت گپ‌زدن اجازه می‌دهد تا با دیگران به‌صورت تعاملی در مرورگر Tor گپ بزنید.

    تاریخچهٔ گپ‌زدن در OnionShare ذخیره نشده است. تاریخچهٔ گپ‌زدن هنگام بستن مرورگر Tor ناپدید خواهد شد.", "waitress_web_server_error": "مشکلی با شروع سرور وب وجود داشت", "gui_close_tab_warning_chat_description": "بستن زبانه‌ای که یک سرور گپ را میزبانی می‌کند؟", "mode_settings_persistent_autostart_on_launch_checkbox": "هنگام شروع OnionShare، این سرویس Onion به‌طور خودکار شروع شود", "gui_settings_license_label": "پیازرسان با نگارش ۳ پروانهٔ GPL منتشر شده.
    می‌توانید پروانه‌های نرم‌افزاری سوم‌شخص را در این‌جا ببینید:
    https://github.com/onionshare/onionshare/tree/main/licenses", "error_generic": "خطای غیرمنتظره‌ای در OnionShare رخ داد:\n{}" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/fi.json000066400000000000000000000535461521174352300271200ustar00rootroot00000000000000{ "other_page_loaded": "URL-osoite ladattu", "closing_automatically": "Lähetys valmis. Suljetaan automaattisesti", "large_filesize": "Varoitus: Ison tiedoston lähetys saattaa kestää tunteja", "gui_drag_and_drop": "Vedä ja pudota tiedostot tänne aloittaaksesi jakamisen", "gui_add": "Lisää", "gui_choose_items": "Valitse", "gui_share_start_server": "Aloita jakaminen", "gui_share_stop_server": "Lopeta jakaminen", "gui_copy_url": "Kopioi URL-osoite", "gui_canceled": "Peruutettu", "gui_copied_url": "OnionShare-osoite kopioitu leikepöydälle", "gui_please_wait": "Käynnistyy... Peruuta napsauttamalla.", "zip_progress_bar_format": "Pakataan: %p%", "not_a_readable_file": "{0:s} ei ole luettava tiedosto.", "close_on_autostop_timer": "Automaattinen lopetusajastin pysäytti toiminnon", "gui_add_files": "Lisää tiedostoja", "gui_add_folder": "Lisää kansio", "gui_share_stop_server_autostop_timer": "Lopeta jakaminen ({})", "gui_receive_start_server": "Aloita vastaanottotila", "gui_receive_stop_server": "Lopeta vastaanottotila", "gui_receive_stop_server_autostop_timer": "Lopeta vastaanottotila ({} jäljellä)", "gui_copied_url_title": "OnionShare-osoite kopioitu", "gui_quit_warning_quit": "Lopeta", "gui_settings_window_title": "Asetukset", "gui_settings_autoupdate_label": "Tarkista päivitykset", "gui_settings_autoupdate_option": "Ilmoita minulle, kun uusi versio on saatavilla", "gui_settings_autoupdate_timestamp": "Viimeksi tarkistettu: {}", "gui_settings_autoupdate_timestamp_never": "ei koskaan", "gui_settings_autoupdate_check_button": "Tarkista päivitykset", "gui_settings_connection_type_label": "Miten OnionSharen kuuluisi yhdistää Tor:iin?", "gui_settings_connection_type_bundled_option": "Käytä OnionShareen sisäänrakennettua Tor-versiota", "gui_settings_connection_type_automatic_option": "Kokeile automaattista konfigurointia Tor-selaimella", "gui_settings_connection_type_control_port_option": "Yhdistä käyttämällä control porttia", "gui_settings_connection_type_socket_file_option": "Yhdistä käyttäen socket-tiedostoa", "gui_settings_connection_type_test_button": "Testaa Tor-yhteyttä", "gui_settings_control_port_label": "Control port", "gui_settings_socket_file_label": "Socket-tiedosto", "gui_settings_socks_label": "SOCKS-portti", "gui_settings_authenticate_no_auth_option": "Ei todentamista, tai evästeiden todentamista", "gui_settings_authenticate_password_option": "Salasana", "gui_settings_password_label": "Salasana", "gui_settings_tor_bridges": "Yhdistetäänkö käyttäen Tor-siltaa?", "gui_settings_meek_lite_expensive_warning": "Varoitus: Meek_lite-sillat ovat Tor-projektille erittäin kalliita.

    Käytä niitä vain, jos et pysty muodostamaan yhteyttä suoraan Toriin, obfs4-kuljetusten tai muiden tavallisten silta-solmujen kautta.", "gui_settings_tor_bridges_invalid": "Mikään lisäämistäsi silloista ei toimi. Tarkista ne tai lisää uusia.", "gui_settings_button_save": "Tallenna", "gui_settings_button_cancel": "Peruuta", "gui_settings_button_help": "Ohje", "settings_error_unknown": "Ei voi muodostaa yhteyttä Tor-ohjaimeen, koska asetuksesi eivät ole järkeviä.", "settings_error_automatic": "Tor-ohjaimeen ei voitu muodostaa yhteyttä. Onko Tor Browser (saatavilla osoitteesta torproject.org) avoimena taustalla?", "settings_error_socket_port": "Ei voi muodostaa yhteyttä Tor-ohjaimeen: {}:{}.", "settings_error_socket_file": "Ei voi muodostaa yhteyttä Tor-ohjaimeen käyttämällä socket-tiedostoa {}.", "settings_error_auth": "Yhdistetty osoitteeseen {}:{}, mutta ei voida todentaa. Ehkä tämä ei ole Tor ohjain?", "settings_error_missing_password": "Yhdistetty Tor ohjaimeen, mutta se vaatii salasanan todentamiseen.", "settings_error_unreadable_cookie_file": "Yhdistetty tor ohjaimeen, mutta salasana saattaa olla väärä, tai käyttäjä ei saa lukea evästetiedostoa.", "settings_error_bundled_tor_not_supported": "OnionSharen mukana tulevan Tor version käyttäminen ei toimi Developer-tilassa Windowsissa tai MacOSissa.", "settings_error_bundled_tor_timeout": "Yhdistäminen Tor:iin kestää lian kauan. Ehkä et ole yhteydessä nettiin, tai järjestelmäsi kello on epätarkka?", "settings_error_bundled_tor_broken": "OnionShare ei voinut yhdistää Tor:iin\n{}", "settings_test_success": "Yhditetty Tor ohjaimeen.\n\nTor versio: {}\nTykee lyhytaikaista onion palvelua: {}.\nTukee asiakas todennusta: {}.\nTukee uuden sukupolven .onion osoitteita: {}.", "error_tor_protocol_error": "Tor-verkossa tapahtui virhe: {}", "connecting_to_tor": "Yhdistetään Tor-verkkoon", "update_available": "Uusi OnionShare versio on julkaistu. Paina tästä ladataksesi sen.

    Käytät versiota {} ja uusin versio on {}.", "update_error_check_error": "Ei pystytty tarkistamaan päivityksiä: Ehkä et ole yhteydessä Tor-verkkoon, tai OnionShare-nettisivu on kaatunut?", "update_error_invalid_latest_version": "Päivityksien tarkistaminen epäonnistui: OnionShare-sivuston mukaan uusin versio on tuntematon '{}'…", "update_not_available": "Sinulla on OnionSharen uusin versio.", "gui_tor_connection_ask": "Avaa asetukset Tor-yhteyden selvittämiseksi?", "gui_tor_connection_ask_open_settings": "Kyllä", "gui_tor_connection_ask_quit": "Lopeta", "gui_tor_connection_error_settings": "Yritä muuttaa miten OnionShare yhdistää Tor-verkkoon asetuksista.", "gui_tor_connection_canceled": "Tor-yhteyden muodostus epäonnistui.\n\nVarmista että sinulla on toimiva internet yhteys, jonka jälkeen avaa OnionShare uudelleen ja ota käyttöön sen Tor-yhteys.", "gui_tor_connection_lost": "Tor-yhteys katkaistu.", "gui_server_started_after_autostop_timer": "Automaattinen loputusajastin pysäytti toiminnon ennen palvelimen käynnistymistä. Luo uusi jako.", "gui_server_autostop_timer_expired": "Automaattinen pysäytysajastin päättyi jo. Säädä se jaon aloittamiseksi.", "gui_share_url_description": "Kaikki joilla on tämä OnionShare-osoite voivat ladata tiedostojasi käyttämällä Tor-selainta: ", "gui_receive_url_description": "Kaikki joilla on tämä OnionShare-osoite voivat lähettäätiedostoja tietokoneellesi käyttämällä Tor-selainta: ", "gui_url_label_persistent": "Tätä jakoa ei pysähdy automaattisesti.

    Jokainen seuraava jako käyttää osoitetta uudelleen. (Kertakäyttöisten osoitteiden käyttämiseksi poista käytöstä asetuksista \"Avaa tämä välilehti aina, kun OnionShare käynnistetään\".)", "gui_url_label_stay_open": "Tämä jako ei pysähdy automaattisesti.", "gui_url_label_onetime": "Tämä jako lopetetaan ensimmäisen valmistumisen jälkeen.", "gui_url_label_onetime_and_persistent": "Tätä jakoa ei pysähdy automaattisesti.

    Jokainen seuraava jako käyttää osoitetta uudelleen. (Kertakäyttöisten osoitteiden käyttämiseksi poista käytöstä asetuksista \"Avaa tämä välilehti aina, kun OnionShare käynnistetään\".)", "gui_status_indicator_share_stopped": "Pysäytetty", "gui_status_indicator_share_working": "Aloitetaan…", "gui_status_indicator_share_started": "Jakaminen", "gui_status_indicator_receive_stopped": "Pysäytetty", "gui_status_indicator_receive_working": "Vastaanotetaan…", "gui_status_indicator_receive_started": "Vastaanotetaan", "gui_file_info": "{} tiedostoa, {}", "gui_file_info_single": "{} tiedosto, {}", "history_in_progress_tooltip": "{} meneillään", "history_completed_tooltip": "{} valmistunut", "error_cannot_create_data_dir": "OnionShare-tietokansiota ei voitu luoda: {}", "gui_receive_mode_warning": "Vastaanottotila antaa ihmisille mahdollisuuden ladata tiedostoja tietokoneellesi.

    Jotkin tiedostot voivat hallita tietokonettasi, jos avaat ne. Avaa asioita vain ihmisiltä, joihin luotat, tai jos tiedät, mitä olet tekemässä. ", "gui_settings_language_label": "Haluttu kieli", "gui_settings_language_changed_notice": "Käynnistä OnionShare uudelleen ottaaksesi uuden kielen käyttöön.", "systray_menu_exit": "Lopeta", "systray_page_loaded_title": "Sivu ladattu", "systray_page_loaded_message": "OnionShare-osoite ladattu", "systray_share_started_title": "Jako aloitettu", "systray_share_started_message": "Tiedostojen lähettäminen jollekulle aloitetaan", "systray_share_completed_title": "Jakaminen Valmis", "systray_share_completed_message": "Tiedostojen lähetys valmis", "systray_share_canceled_title": "Jako keskeytetty", "systray_share_canceled_message": "Joku keskeytti tiedostojesi vastaanottamisen", "systray_receive_started_title": "Vastaanottaminen aloitettu", "systray_receive_started_message": "Joku lähettää tiedostoja sinulle", "gui_all_modes_history": "Historia", "gui_all_modes_clear_history": "Tyhjennä kaikki", "gui_all_modes_transfer_started": "Aloitettu {}", "gui_all_modes_transfer_finished_range": "Siirretty {} - {}", "gui_all_modes_transfer_finished": "Siirretty {}", "gui_all_modes_transfer_canceled_range": "Keskeytetty {} - {}", "gui_all_modes_transfer_canceled": "Keskeytetty {}", "gui_all_modes_progress_complete": "%p%, {0:s} kulunut.", "gui_all_modes_progress_starting": "{0:s}, %p% (lasketaan)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Yhtäkään tiedostoa ei ole lähetetty vielä", "gui_share_mode_autostop_timer_waiting": "Viimeistellään lähetystä…", "gui_receive_mode_no_files": "Yhtäkään tiedostoa ei ole vastaanotettu vielä", "gui_receive_mode_autostop_timer_waiting": "Viimeistellään vastaanottoa…", "gui_stop_server_autostop_timer_tooltip": "Automaattinen pysäytysajastin loppuu {} kuluttua", "gui_start_server_autostart_timer_tooltip": "Automaattinen aloitusajastin loppuu {} kuluttua", "gui_waiting_to_start": "Ajastettu aloitus {} kuluttua. Peruuta napsauttamalla.", "gui_server_autostart_timer_expired": "Ajastettu aika on jo mennyt. Säädä se aloittaaksesi jakamisen.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Automaattinen pysätysaika ei voi olla sama tai aikaisempi kuin automaattinen aloitusaika. Säädä se aloittaaksesi jakamisen.", "gui_status_indicator_share_scheduled": "Ajastettu…", "gui_status_indicator_receive_scheduled": "Ajastettu…", "days_first_letter": "pv", "hours_first_letter": "t", "minutes_first_letter": "min", "seconds_first_letter": "s", "gui_website_url_description": "Kaikki voivat käyttää tätä OnionShare-osoitetta vieraillakseen verkkosivullasi käyttäen Tor Browser-verkkoselainta: ", "gui_website_mode_no_files": "Yhtäkään verkkosivustoa ei ole vielä jaettu", "incorrect_password": "väärä salasana", "history_requests_tooltip": "{} verkkopyyntöä", "mode_settings_receive_data_dir_browse_button": "Selaa", "mode_settings_receive_data_dir_label": "Tallenna tiedostot", "mode_settings_share_autostop_sharing_checkbox": "Lopeta jakaminen kun tiedostot on lähetetty (poista valinta malhdollistaaksesi yksittäisten tiedostojen jakamisen)", "mode_settings_public_checkbox": "Älä käytä salasanaa", "mode_settings_persistent_checkbox": "Avaa tämä välilehti aina, kun OnionShare käynnistetään (Onion-osoite pysyy samana)", "mode_settings_advanced_toggle_hide": "Piilota edistyneet asetukset", "mode_settings_advanced_toggle_show": "Näytä edistyneet asetukset", "gui_quit_warning_cancel": "Peruuta", "gui_quit_warning_title": "Lopetetaanko OnionShare?", "gui_close_tab_warning_cancel": "Peruuta", "gui_close_tab_warning_close": "OK", "gui_close_tab_warning_title": "Suljetaanko välilehti?", "gui_new_tab_website_button": "Julkaise nettisivu", "gui_new_tab_receive_button": "Vastaanota tiedostoja", "gui_new_tab_share_button": "Jaa tiedostoja", "gui_new_tab_tooltip": "Avaa uusi välilehti", "gui_new_tab": "Uusi välilehti", "mode_settings_website_disable_csp_checkbox": "Poista 'Sisällön suojauskäytännön' otsikko käytöstä (mahdollistaa kolmansien osapuolien resurssien käytön nettisivussasi)", "mode_settings_autostop_timer_checkbox": "Lopeta onion-palvelu tiettyyn kellon aikaan", "mode_settings_autostart_timer_checkbox": "Aloita onion-palvelu tiettyyn kellon aikaan", "gui_quit_warning_description": "Suljetaanko kaikki välilehdet vaikka joillakin niistä on aktiivisia jakoja?", "gui_close_tab_warning_website_description": "Suljetaanko verkkosivustoa jakeleva välilehti?", "gui_close_tab_warning_receive_description": "Suljetaanko tiedostoja vastaanottava välilehti?", "gui_close_tab_warning_share_description": "Suljetaanko tiedostoja lähettävä välilehti?", "gui_close_tab_warning_persistent_description": "Suljetaanko pysyvä välilehti, jolloin sen käyttämä onion-osoite menetetään?", "gui_main_page_receive_button": "Aloita vastaanottaminen", "gui_main_page_share_button": "Aloita jakaminen", "gui_tab_name_chat": "Keskustelu", "gui_tab_name_website": "Verkkosivu", "gui_tab_name_receive": "Vastaanota", "gui_tab_name_share": "Jaa", "gui_file_selection_remove_all": "Poista kaikki", "gui_remove": "Poista", "mode_settings_receive_webhook_url_checkbox": "Käytä ilmoitusten verkkotoimintokutsua", "history_receive_read_message_button": "Lue viesti", "error_port_not_available": "OnionSharen portti ei saatavilla", "gui_rendezvous_cleanup_quit_early": "Poistu aikaisin", "gui_rendezvous_cleanup": "Odotetaan Tor-kierrosten sulkeutumista tiedostosiirtojesi valmistumisen varmistamiseksi.\n\nTämä voi kestää joitain minuutteja.", "mode_settings_receive_disable_files_checkbox": "Poista käytöstä tiedostojen lataaminen", "mode_settings_receive_disable_text_checkbox": "Poista käytöstä tekstin syöttö", "mode_settings_title_label": "Muokattu otsikko", "gui_main_page_chat_button": "Aloita keskustelu", "gui_main_page_website_button": "Aloita isännöinti", "gui_new_tab_chat_button": "Keskustele anonyymisti", "gui_color_mode_changed_notice": "Käynnistä uudelleen OnionShare, jotta uusi väritila tulee voimaan.", "gui_settings_theme_dark": "Tumma", "gui_settings_theme_light": "Vaalea", "gui_settings_theme_auto": "Automaattinen", "gui_settings_theme_label": "Teema", "gui_open_folder_error": "Kansiota ei voitu avata xdg-open-komennolla. Tiedosto on täällä: {}", "gui_status_indicator_chat_started": "Keskustellaan", "gui_status_indicator_chat_scheduled": "Ajastettu…", "gui_status_indicator_chat_working": "Aloitetaan…", "gui_status_indicator_chat_stopped": "Pysäytetty", "gui_chat_url_description": "Kuka tahansa tällä Onionshare-osoitteella voi liittyä tähän keskusteluryhmään käyttämällä Tor-selainta: ", "gui_please_wait_no_button": "Aloitetaan…", "gui_qr_code_dialog_title": "OnionSharen QR-koodi", "gui_show_qr_code": "Näytä QR-koodi", "gui_receive_flatpak_data_dir": "Koska asensin OnionSharen käyttämällä Flatpakia, sinun täytyy tallentaa tiedostot kansioon sijainnissa ~/OnionShare.", "gui_chat_stop_server": "Pysäytä chat-palvelin", "gui_chat_start_server": "Perusta chat-palvelin", "gui_dragdrop_sandbox_flatpak": "Flatpakin tarjoaman eristystilan turvallisuuden lisäämiseksi raahaa ja pudota -tuki ei ole käytössä. Käytä \"Lisää tiedostoja\"- ja \"Lisää kansio\"-painikkeita lisätäksesi tiedostoja.", "gui_autoconnect_description": "OnionShare ei olisi mahdollinen ilman vapaaehtoisten ylläpitämää Tor-verkkoa.", "gui_share_url_public_description": "Kuka tahansa, jolla on tämä OnionShare-osoite, voi ladata tiedostojasi käyttäen Tor-selainta: ", "gui_website_url_public_description": "Kuka tahansa, jolla on tämä OnionShare-osoite, voi vierailla verkkosivustollasi käyttäen Tor-selainta: ", "gui_chat_url_public_description": "Kuka tahansa, jolla on tämä OnionShare-osoite, voi liittyä tähän keskusteluhuoneeseen käyttäen Tor-selainta: ", "gui_tor_settings_window_title": "Tor-asetukset", "gui_settings_controller_extras_label": "Tor-asetukset", "gui_settings_bridge_radio_builtin": "Valitse sisäänrakennettu silta", "gui_settings_bridge_moat_radio_option": "Pyydä silta torproject.orgilta", "gui_settings_bridge_moat_button": "Pyydä uusi silta", "gui_settings_bridge_custom_placeholder": "kirjoita osoite:portti (yksi per rivi)", "gui_settings_bridge_use_checkbox": "Käytä siltaa", "gui_settings_help_label": "Tarvitsetko apua? Katso docs.onionshare.org", "gui_settings_version_label": "Käytössäsi on OnionShare {}", "moat_captcha_placeholder": "Kirjoita kuvassa näkyvät merkit", "moat_captcha_submit": "Lähetä", "moat_captcha_reload": "Lataa uudelleen", "moat_captcha_error": "Virheellinen ratkaisu. Yritä uudelleen.", "moat_solution_empty_error": "Kirjoita kuvassa näkyvät merkit", "mode_tor_not_connected_label": "OnionShare ei ole yhdistettynä Tor-verkkoon", "gui_copied_client_auth_title": "Yksityinen avain kopioitiin", "gui_qr_label_url_title": "OnionShare-osoite", "gui_copy_client_auth": "Kopioi yksityinen avain", "gui_copied_client_auth": "Yksityinen avain kopioitiin leikepöydälle", "gui_reveal": "Näytä", "gui_hide": "Piilota", "gui_qr_label_auth_string_title": "Yksityinen avain", "gui_receive_url_public_description": "Kuka tahansa, jolla on tämä OnionShare-osoite, voi lähettää tiedostoja tietokoneellesi käyttäen Tor-selainta: ", "gui_settings_bridge_none_radio_option": "Älä käytä siltoja", "gui_enable_autoconnect_checkbox": "Yhdistä automaattisesti Toriin", "gui_autoconnect_failed_to_connect_to_tor": "Toriin ei voitu yhdistää", "gui_autoconnect_no_bridge": "Yritä uudelleen ilman siltoja", "gui_autoconnect_try_again_without_a_bridge": "Yritä uudelleen ilman siltoja", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Kierretään sensuuria…", "gui_autoconnect_bridge_detect_manual": "Valitse maa silta-asetuksia varten manuaalisesti", "gui_autoconnect_trying_to_connect_to_tor": "Yhdistetään Toriin…", "gui_autoconnect_connection_error_msg": "Varmista, että olet yhdistettynä internetiin.", "gui_autoconnect_bridge_setting_options": "Silta-asetukset", "gui_autoconnect_start": "Yhdistä Toriin", "gui_autoconnect_configure": "Verkkoasetukset", "gui_general_settings_window_title": "Yleiset", "gui_autoconnect_bridge_detect_automatic": "Päättele maani IP-osoitteestani silta-asetuksia varten", "moat_captcha_label": "Ratkaise CAPTCHA pyytääksesi siltaa.", "gui_settings_stop_active_tabs_label": "Joissain välilehdissä on käynnissä palveluja.\nSinun täytyy pysäyttää kaikki palvelut muuttaaksesi Tor-asetuksia.", "moat_bridgedb_error": "Yhteyttä BridgeDB:hen ei voitu muodostaa.", "gui_url_instructions_public_mode": "Lähetä OnionShare-osoite alla:", "gui_url_instructions": "Lähetä ensin alla oleva OnionShare-osoite:", "gui_client_auth_instructions": "Seuraavaksi lähetä yksityinen avain salliaksesi pääsyn OnionShare-palveluusi:", "gui_autoconnect_circumventing_censorship": "Selvitetään yhdistettävyysongelmia…", "gui_autoconnect_bridge_description": "Saatat kyetä yhdistämään siltaa käyttäen, jos internetyhteytesi on sensuroitu.", "mode_settings_website_custom_csp_checkbox": "Lähetä mukautettu Content Security Policy -otsake", "moat_contact_label": "Muodostetaan yhteyttä BridgeDB:hen…", "gui_settings_moat_bridges_invalid": "Et ole vielä pyytänyt siltaa torproject.orgilta.", "gui_settings_bridge_custom_radio_option": "Syötä luotettavasta lähteestä saamasi silta", "gui_autoconnect_circumventing_censorship_got_bridges": "Sillat on perustettu. Yhdistetään Toriin uudelleen…", "gui_autoconnect_circumventing_censorship_starting_meek": "Perustetaan meek-siltaa domain-fronting-kiertoon…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Pyydetään siltoja Torin sensuurinkiertorajapinnalta…", "gui_autoconnect_could_not_connect_to_tor_api": "Tor-rajapintaan ei voitu yhdistää. Ennen kuin yrität uudelleen, varmista että olet yhteydessä Internetiin.", "gui_settings_tor_bridges_label": "Sillat voivat auttaa tietoliikennettäsi saavuttamaan Tor-verkon, jos Internet-yhteytesi on estetty. Eri siltojen toimivuus voi vaihdella sijainnistasi riippuen.", "gui_server_doesnt_support_stealth": "Valitettavasti tämä Tor-versio ei tue stealth-ominaisuutta (päätetodennus). Yritä uudelleen uudemmalla Tor-versiolla tai käytä \"julkinen\"-tilaa, jos sen ei tarvitse olla yksityinen.", "gui_close_tab_warning_chat_description": "Suljetaanko keskustelupalvelinta isännöivä välilehti?", "waitress_web_server_error": "Verkkopalvelinta käynnistettäessä ilmeni ongelma", "gui_chat_mode_explainer": "Keskustelutila mahdollistaa keskustelun interaktiivisesti muiden kanssa Tor-selaimessa.

    Keskusteluhistoria ei ole tallennettu OnionShare:en. Keskusteluhistoria katoaa kun suljet Tor-selaimen.", "gui_settings_license_label": "OnionShare on lisensoitu GPL v3:n alaisuudessa.
    Kolmannen osapuolen lisenssejä voi tarkastella täällä:
    https://github.com/onionshare/onionshare/tree/main/licenses", "mode_settings_persistent_autostart_on_launch_checkbox": "Käynnistä tämä Onion-palvelu automaattisesti, kun OnionShare käynnistyy", "error_generic": "OnionSharessa tapahtui odottamaton virhe:\n{}" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/fil.json000066400000000000000000000037651521174352300272720ustar00rootroot00000000000000{ "gui_add": "Magdagdag", "gui_settings_password_label": "Password", "gui_settings_button_cancel": "Kanselahin", "gui_settings_authenticate_password_option": "Password", "gui_tor_connection_ask_quit": "Isara", "gui_tab_name_share": "Ibahagi", "gui_tab_name_website": "Website", "gui_file_selection_remove_all": "Tanggalin Lahat", "systray_menu_exit": "Isara", "gui_settings_button_help": "Tulong", "gui_quit_warning_cancel": "Kanselahin", "gui_settings_theme_light": "Maliwanag", "gui_remove": "Tanggalin", "gui_settings_window_title": "Mga settings", "gui_general_settings_window_title": "Pangkalahatan", "gui_tor_connection_ask_open_settings": "Oo", "gui_status_indicator_share_working": "Sinisimulan…", "gui_new_tab": "Bagong Tab", "gui_main_page_share_button": "Simulan ang Pagbabahagi", "gui_tab_name_chat": "Pag-usap", "gui_settings_theme_auto": "Awto", "gui_settings_theme_dark": "Madilim", "gui_settings_button_save": "I-save", "gui_choose_items": "Pumili", "gui_hide": "Itago", "gui_please_wait_no_button": "Sinisimulan…", "gui_settings_autoupdate_timestamp_never": "Hindi kailanman", "gui_settings_language_label": "Wika", "gui_settings_theme_label": "Tema", "gui_all_modes_clear_history": "Tanggalin Lahat", "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_cancel": "Kanselahin", "gui_quit_warning_quit": "Isara", "mode_settings_receive_data_dir_browse_button": "Maghanap", "moat_captcha_submit": "Submit", "gui_status_indicator_share_started": "Nagbabahagi", "gui_status_indicator_receive_working": "Sinisimulan…", "gui_status_indicator_chat_working": "Sinisimulan…", "gui_all_modes_history": "History", "gui_canceled": "Kinansela", "moat_captcha_reload": "I-restart ang laro", "gui_status_indicator_share_stopped": "Inihinto", "gui_status_indicator_receive_stopped": "Inihinto", "gui_status_indicator_chat_stopped": "Inihinto" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/fr.json000066400000000000000000000571541521174352300271300ustar00rootroot00000000000000{ "other_page_loaded": "L’adresse a été chargée", "closing_automatically": "Arrêté, car le transfert est terminé", "systray_menu_exit": "Fermer", "gui_drag_and_drop": "Glisser-déposer des fichiers et dossiers pour commencer le partage", "gui_add": "Ajouter", "gui_choose_items": "Sélectionner", "gui_share_start_server": "Commencer le partage", "gui_share_stop_server": "Arrêter le partage", "gui_copy_url": "Copier l’adresse", "gui_canceled": "Annulé", "gui_copied_url": "L’adresse OnionShare a été copiée dans le presse-papiers", "gui_please_wait": "Démarrage… Cliquez pour annuler.", "gui_quit_warning_quit": "Fermer", "gui_settings_autoupdate_timestamp_never": "Jamais", "gui_settings_language_changed_notice": "Redémarrez OnionShare afin d’appliquer la nouvelle langue.", "not_a_readable_file": "{0:s} n’est pas un fichier lisible.", "gui_settings_window_title": "Paramètres", "gui_settings_autoupdate_timestamp": "Dernière vérification : {}", "gui_settings_connection_type_label": "Comment OnionShare devrait-il se connecter à Tor ?", "gui_settings_connection_type_control_port_option": "Se connecter en utilisant le port de contrôle", "gui_settings_connection_type_socket_file_option": "Se connecter en utilisant un fichier d’interface de connexion", "gui_settings_socket_file_label": "Fichier d’interface de connexion", "gui_settings_socks_label": "Port SOCKS", "gui_settings_authenticate_no_auth_option": "Pas d’authentification, ou authentification par témoin", "gui_settings_authenticate_password_option": "Mot de passe", "gui_settings_password_label": "Mot de passe", "gui_settings_button_save": "Enregistrer", "gui_settings_button_cancel": "Annuler", "gui_settings_button_help": "Aide", "connecting_to_tor": "Connexion au réseau Tor", "large_filesize": "Avertissement : L’envoi d’un partage volumineux peut prendre des heures", "zip_progress_bar_format": "Compression : %p%", "gui_tor_connection_error_settings": "Dans les paramètres, essayez de changer la façon dont OnionShare se connecte au réseau Tor.", "gui_share_stop_server_autostop_timer": "Arrêter le partage ({})", "gui_copied_url_title": "L’adresse OnionShare a été copiée", "gui_settings_autoupdate_label": "Vérifier la présence d’une nouvelle version", "gui_settings_autoupdate_option": "Me signaler toute nouvelle version", "gui_settings_connection_type_bundled_option": "Utiliser la version de Tor intégrée dans OnionShare", "gui_settings_connection_type_automatic_option": "Essayer la configuration automatique avec le Navigateur Tor", "gui_settings_connection_type_test_button": "Tester la connexion à Tor", "gui_settings_control_port_label": "Port de contrôle", "gui_settings_tor_bridges": "Se connecter en utilisant un pont Tor ?", "gui_settings_tor_bridges_invalid": "Aucun des ponts que vous avez ajoutés ne fonctionne. Vérifiez-les de nouveau ou ajoutez-en d’autres.", "settings_error_unknown": "Impossible de se connecter au contrôleur Tor, car vos paramètres sont incohérents.", "settings_error_automatic": "Impossible de se connecter au contrôleur Tor. Le Navigateur Tor (téléchargeable sur torproject.org/fr) fonctionne-t-il en arrière-plan ?", "settings_error_socket_port": "Impossible de se connecter au contrôleur Tor à {}:{}.", "settings_error_socket_file": "Impossible de se connecter au contrôleur Tor en utilisant le fichier d’interface de connexion {}.", "settings_error_auth": "Connecté à {}:{}, mais il est impossible de s’authentifier. Est-ce bien un contrôleur Tor ?", "settings_error_missing_password": "Vous êtes connecté au contrôleur Tor, mais il exige un mot de passe d’authentification.", "settings_error_unreadable_cookie_file": "Vous êtes connecté au contrôleur Tor, mais le mot de passe est peut-être erroné ou votre utilisateur n’est pas autorisé à lire le fichier témoin.", "settings_error_bundled_tor_not_supported": "Utiliser la version de Tor intégrée à OnionShare ne fonctionne pas en mode développeur sous Windows ou macOS.", "settings_error_bundled_tor_timeout": "La connexion à Tor prend trop de temps. Vous n’êtes peut-être pas connecté à Internet ou votre horloge système est-elle mal réglée ?", "settings_error_bundled_tor_broken": "OnionShare n’a pas réussi à se connecter à Tor :\n{}", "error_tor_protocol_error": "Une erreur est survenue avec Tor : {}", "update_available": "Une nouvelle version d’OnionShare est proposée. Cliquez ici pour l’obtenir.

    Vous utilisez la version {} et {} est la dernière version.", "update_not_available": "Vous utilisez la dernière version d’OnionShare.", "gui_tor_connection_ask_open_settings": "Oui", "gui_tor_connection_ask_quit": "Fermer", "gui_tor_connection_lost": "Vous êtes déconnecté de Tor.", "gui_share_url_description": "Quiconque disposant de cette adresse OnionShare et de cette clé privée peut télécharger vos fichiers en utilisant le Navigateur Tor : ", "gui_receive_url_description": "Quiconque disposant de cette adresse OnionShare et de cette clé privée peut téléverser des fichiers vers votre ordinateur en utilisant le Navigateur Tor : ", "gui_url_label_persistent": "Ce partage ne s’arrêtera pas automatiquement.

    Tout partage subséquent réutilise l’adresse. (Pour des adresses qui ne peuvent être utilisées qu’une fois, désactivez « Toujours ouvrir cet onglet lors du démarrage d’OnionShare » dans les paramètres.)", "gui_url_label_stay_open": "Ce partage ne s’arrêtera pas automatiquement.", "gui_url_label_onetime": "Ce partage s’arrêtera une fois que le premier téléchargement sera terminé.", "gui_url_label_onetime_and_persistent": "Ce partage ne s’arrêtera pas automatiquement.

    Tout partage subséquent réutilise l’adresse. (Pour des adresses qui ne peuvent être utilisées qu’une fois, désactivez « Toujours ouvrir cet onglet lors du démarrage d’OnionShare » dans les paramètres.)", "gui_status_indicator_share_stopped": "Arrêté", "gui_status_indicator_share_working": "Démarrage…", "gui_status_indicator_share_started": "Partage en cours", "gui_status_indicator_receive_stopped": "Arrêté", "gui_status_indicator_receive_working": "Démarrage…", "gui_status_indicator_receive_started": "Réception", "gui_file_info": "{} fichiers, {}", "gui_file_info_single": "{} fichier, {}", "history_in_progress_tooltip": "{} en cours", "history_completed_tooltip": "Terminés :{}", "gui_receive_mode_warning": "Le mode réception permet à d’autres de téléverser des fichiers vers votre ordinateur.

    Certains fichiers pourraient prendre le contrôle de votre ordinateur si vous les ouvrez. N’ouvrez que des fichiers provenant de personnes de confiance ou si vous savez ce que vous faites.", "gui_settings_language_label": "Langue", "gui_receive_start_server": "Démarrer le mode réception", "gui_receive_stop_server": "Arrêter le mode réception", "gui_receive_stop_server_autostop_timer": "Arrêter le mode réception ({} restantes)", "gui_settings_autoupdate_check_button": "Vérifier la présence d’une nouvelle version", "settings_test_success": "Vous êtes connecté au contrôleur Tor.\n\nVersion de Tor : {}\nPrend en charge les services oignon éphémères : {}.\nPrend en charge l’authentification client : {}.\nPrend en charge la nouvelle génération d’adresses .onion : {}.", "update_error_check_error": "Impossible de vérifier l’existence d’une mise à jour : peut-être n’êtes-vous pas connecté à Tor ou le site Web d’OnionShare est-il hors service ?", "update_error_invalid_latest_version": "Impossible de vérifier la présence d’une mise à jour : le site Web d’OnionShare indique que la version la plus récente est la « {} » qui n’est pas reconnue…", "gui_tor_connection_ask": "Ouvrir les paramètres pour résoudre le problème de connexion à Tor ?", "gui_tor_connection_canceled": "Impossible de se connecter à Tor.\n\nAssurez-vous d’être connecté à Internet, puis rouvrez OnionShare et configurez sa connexion à Tor.", "systray_page_loaded_title": "La page a été chargée", "gui_settings_meek_lite_expensive_warning": "Avertissement : L’exploitation de ponts meek_azure demande beaucoup de ressources au Projet Tor.

    Ne les utilisez que si vous ne pouvez pas vous connecter directement à Tor par les transports obfs4 ou autres ponts normaux.", "gui_server_started_after_autostop_timer": "La minuterie d’arrêt automatique est arrivée au bout de son délai avant le démarrage du serveur. Créez un nouveau partage.", "gui_server_autostop_timer_expired": "La minuterie d’arrêt automatique est déjà arrivée au bout de son délai. Réglez-la pour commencer le partage.", "close_on_autostop_timer": "Arrêté, car la minuterie d’arrêt automatique est arrivée au bout de son délai", "gui_add_files": "Ajouter des fichiers", "gui_add_folder": "Ajouter un dossier", "error_cannot_create_data_dir": "Impossible de créer le dossier de données d’OnionShare : {}", "systray_page_loaded_message": "L’adresse OnionShare a été chargée", "systray_share_started_title": "Le partage est commencé", "systray_share_started_message": "L’envoi de fichiers à quelqu’un est commencé", "systray_share_completed_title": "Le partage est achevé", "systray_share_canceled_title": "Le partage a été annulé", "systray_share_canceled_message": "Quelqu’un a annulé la réception de vos fichiers", "systray_receive_started_title": "La réception est commencée", "systray_receive_started_message": "Quelqu’un vous envoie des fichiers", "gui_all_modes_history": "Historique", "gui_all_modes_clear_history": "Tout effacer", "gui_all_modes_transfer_started": "Démarré le {}", "gui_all_modes_transfer_finished_range": "Transféré le {} à {}", "gui_all_modes_transfer_finished": "Transféré le {}", "gui_all_modes_progress_complete": "%p %, {0:s} écoulé.", "gui_all_modes_progress_starting": "{0:s}, %p % (calcul en cours)", "gui_all_modes_progress_eta": "{0:s}, fin prévue : {1:s}, %p %", "gui_share_mode_no_files": "Aucun fichier n’a encore été envoyé", "gui_share_mode_autostop_timer_waiting": "Fin de l’envoi…", "gui_receive_mode_no_files": "Aucun fichier n’a encore été reçu", "gui_receive_mode_autostop_timer_waiting": "Fin de la réception…", "systray_share_completed_message": "L’envoi de fichiers est terminé", "gui_all_modes_transfer_canceled": "Annulé le {}", "gui_all_modes_transfer_canceled_range": "Annulé {} à {}", "gui_stop_server_autostop_timer_tooltip": "La minuterie d’arrêt automatique se termine à {}", "gui_start_server_autostart_timer_tooltip": "La minuterie de démarrage automatique se termine à {}", "gui_waiting_to_start": "Programmé pour démarrer dans {}. Cliquez pour annuler.", "gui_server_autostart_timer_expired": "L’heure programmée est déjà passée. réglez-la pour démarrer le partage.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "L’heure d’arrêt automatique ne peut pas être identique ou antérieur à l’heure de démarrage automatique. Réglez-la pour démarrer le partage.", "gui_status_indicator_share_scheduled": "Programmé…", "gui_status_indicator_receive_scheduled": "Programmé…", "days_first_letter": "j", "hours_first_letter": "h", "minutes_first_letter": "min", "seconds_first_letter": "s", "gui_website_url_description": "Quiconque disposant de cette adresse OnionShare et de cette clé privée peut visiter votre site Web en utilisant le Navigateur Tor : ", "gui_website_mode_no_files": "Aucun site Web n’a encore été partagé", "incorrect_password": "Le mot de passe est erroné", "history_requests_tooltip": "{} requêtes Web", "gui_close_tab_warning_title": "Fermer l’onglet ?", "gui_new_tab_website_button": "Héberger un site Web", "gui_new_tab_receive_button": "Recevoir des fichiers", "gui_new_tab_share_button": "Partager des fichiers", "gui_new_tab_tooltip": "Ouvrir un nouvel onglet", "gui_new_tab": "Nouvel onglet", "gui_close_tab_warning_persistent_description": "Fermer l’onglet persistant et perdre l’adresse oignon qu’il utilise ?", "mode_settings_autostop_timer_checkbox": "Arrêter un service oignon à une heure prédéterminée", "mode_settings_autostart_timer_checkbox": "Démarrer un service oignon à une heure prédéterminée", "mode_settings_website_disable_csp_checkbox": "Ne pas envoyer l’en-tête Politique de sécurité de contenu par défaut (permet à votre site Web d’utiliser des ressources tierces)", "mode_settings_receive_data_dir_browse_button": "Parcourir", "mode_settings_receive_data_dir_label": "Enregistrer les fichiers dans", "mode_settings_share_autostop_sharing_checkbox": "Cesser le partage une fois que les fichiers ont été envoyés (décocher afin de permettre le téléchargement de fichiers individuels)", "mode_settings_public_checkbox": "Ce service OnionShare est public (il désactive la clé privée)", "mode_settings_persistent_checkbox": "Toujours ouvrir cet onglet lors du démarrage d’OnionShare (l’adresse oignon restera la même)", "mode_settings_advanced_toggle_hide": "Cacher les paramètres avancés", "mode_settings_advanced_toggle_show": "Afficher les paramètres avancés", "gui_quit_warning_cancel": "Annuler", "gui_quit_warning_description": "Quitter et fermer tous les onglets, même si le partage est actif pour certains d’eux ?", "gui_quit_warning_title": "Quitter OnionShare ?", "gui_close_tab_warning_cancel": "Annuler", "gui_close_tab_warning_close": "Valider", "gui_close_tab_warning_website_description": "Fermer l’onglet qui héberge un site Web ?", "gui_close_tab_warning_receive_description": "Fermer l’onglet qui reçoit des fichiers ?", "gui_close_tab_warning_share_description": "Fermer l’onglet qui envoie des fichiers ?", "gui_tab_name_chat": "Dialogue en ligne", "gui_tab_name_website": "Site Web", "gui_tab_name_receive": "Recevoir", "gui_tab_name_share": "Partager", "gui_new_tab_chat_button": "Dialoguer anonymement", "gui_open_folder_error": "Impossible d’ouvrir le dossier avec xdg-open. Le fichier est ici : {}", "gui_qr_code_dialog_title": "Code QR d’OnionShare", "gui_show_qr_code": "Afficher le code QR", "gui_receive_flatpak_data_dir": "Comme vous avez installé OnionShare grâce à Flatpak, vous devez enregistrer vos fichiers dans un sous-dossier de ~/OnionShare.", "gui_chat_stop_server": "Arrêter le serveur de dialogue en ligne", "gui_chat_start_server": "Démarrer le serveur de dialogue en ligne", "gui_file_selection_remove_all": "Tout supprimer", "gui_remove": "Supprimer", "gui_main_page_chat_button": "Lancer le dialogue en ligne", "gui_main_page_website_button": "Lancer l’hébergement", "gui_main_page_receive_button": "Lancer la réception", "gui_main_page_share_button": "Lancer le partage", "gui_chat_url_description": "Quiconque disposant de cette adresse OnionShare et de cette clé privée peut se joindre à ce salon de discussion avec le Navigateur Tor : ", "error_port_not_available": "Le port OnionShare n’est pas accessible", "gui_rendezvous_cleanup_quit_early": "Fermer avant", "gui_rendezvous_cleanup": "En attente de la fermeture des circuits Tor pour garantir le transfert de vos fichiers.\n\nCela pourrait prendre quelques minutes.", "gui_color_mode_changed_notice": "Redémarrez OnionShare pour appliquer les nouvelles couleurs.", "history_receive_read_message_button": "Lire le message", "mode_settings_receive_webhook_url_checkbox": "Utiliser un point d’ancrage Web de notification", "mode_settings_receive_disable_files_checkbox": "Désactiver le téléversement de fichiers", "mode_settings_receive_disable_text_checkbox": "Désactiver l’envoi de texte", "mode_settings_title_label": "Titre personnalisé", "gui_status_indicator_chat_started": "En conversation", "gui_status_indicator_chat_scheduled": "Planifié…", "gui_status_indicator_chat_working": "Démarrage…", "gui_status_indicator_chat_stopped": "Arrêté", "gui_copied_client_auth_title": "La clé privée a été copiée", "gui_please_wait_no_button": "Démarrage…", "gui_copied_client_auth": "La clé privée a été copiée dans le presse-papiers", "gui_qr_label_url_title": "Adresse OnionShare", "gui_hide": "Cacher", "gui_qr_label_auth_string_title": "Clé privée", "gui_copy_client_auth": "Copier la clé privée", "gui_share_url_public_description": "Quiconque disposant de cette adresse OnionShare peut télécharger vos fichiers en utilisant le Navigateur Tor : ", "gui_url_instructions": "Envoyez d’abord l’adresse OnionShare ci-dessous :", "gui_settings_theme_light": "Clair", "gui_reveal": "Révéler", "gui_chat_url_public_description": "Quiconque disposant de cette adresse OnionShare peut se joindre à ce salon de discussion en utilisant le Navigateur Tor : ", "gui_url_instructions_public_mode": "Envoyez l’adresse OnionShare ci-dessous :", "gui_settings_theme_label": "Thème", "gui_settings_theme_auto": "Automatique", "gui_settings_theme_dark": "Sombre", "gui_website_url_public_description": "Quiconque disposant de cette adresse OnionShare peut visiter votre site Web en utilisant le Navigateur Tor : ", "gui_server_doesnt_support_stealth": "Cette version de Tor ne prend pas en charge l’authentification client secrète. Essayez avec une version plus récente de Tor ou utilisez le mode « public » si la confidentialité n’est pas nécessaire.", "gui_receive_url_public_description": "Quiconque disposant de cette adresse OnionShare peut téléverser des fichiers vers votre ordinateur en utilisant le Navigateur Tor : ", "gui_client_auth_instructions": "Envoyez ensuite la clé privée pour accorder l’accès à votre service OnionShare :", "gui_dragdrop_sandbox_flatpak": "Afin d’accroitre la sécurité du bac à sable de Flatpak, le glisser-déposer n’est pas pris en charge. Utilisez plutôt les boutons « Ajouter des fichiers » et « Ajouter des dossiers ».", "moat_solution_empty_error": "Saisissez les caractères présentés sur l’image", "gui_settings_stop_active_tabs_label": "Des services sont en cours d’exécution dans certains de vos onglets.\nVous devez arrêter tous les services pour changer vos paramètres de Tor.", "moat_captcha_label": "Résolvez le CAPTCHA pour demander un pont.", "gui_tor_settings_window_title": "Paramètres de Tor", "gui_settings_controller_extras_label": "Paramètres de Tor", "gui_settings_tor_bridges_label": "Les ponts vous aident à accéder au réseau Tor si l’accès à Tor est bloqué. Selon l’endroit d’où vous vous connectez, un pont pourrait fonctionner mieux qu’un autre.", "gui_settings_bridge_use_checkbox": "Utiliser un pont", "gui_settings_bridge_radio_builtin": "Choisir un pont intégré", "gui_settings_bridge_none_radio_option": "Ne pas utiliser de ponts", "gui_settings_bridge_moat_radio_option": "Demander un pont à torproject.org", "gui_settings_bridge_moat_button": "Demander un nouveau pont", "gui_settings_bridge_custom_radio_option": "Fournir un pont dont vous avez connaissance de source sûre", "gui_settings_bridge_custom_placeholder": "taper adresse:port (une par ligne)", "gui_settings_moat_bridges_invalid": "Vous n’avez pas encore demandé un pont de torproject.com.", "gui_settings_version_label": "Vous utilisez OnionShare {}", "gui_settings_help_label": "Besoin d’aide ? Consultez docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Envoyer un en-tête « Politique de sécurité de contenu » personnalisé", "moat_contact_label": "Contact de BridgeDB…", "moat_captcha_placeholder": "Saisissez les caractères de l’image", "moat_captcha_submit": "Envoyer", "moat_captcha_reload": "Recharger", "moat_bridgedb_error": "Impossible de contacter BridgeDB.", "moat_captcha_error": "La solution est erronée. Réessayez.", "mode_tor_not_connected_label": "OnionShare n’est pas connecté au réseau Tor", "gui_autoconnect_description": "OnionShare repose sur le réseau Tor, exploité par des bénévoles.", "gui_enable_autoconnect_checkbox": "Connexion automatiquement à Tor", "gui_autoconnect_failed_to_connect_to_tor": "Échec de connexion à Tor", "gui_autoconnect_trying_to_connect_to_tor": "Connexion à Tor…", "gui_autoconnect_bridge_detect_automatic": "Pour les paramètres du pont, déterminer mon pays d’après mon adresse IP", "gui_autoconnect_connection_error_msg": "Assurez-vous du fonctionnement de la connexion à Internet.", "gui_autoconnect_bridge_description": "Si votre connexion à Internet est censurée, vous pourriez vous connecter en utilisant un pont.", "gui_autoconnect_bridge_detect_manual": "Pour les paramètres du pont, choisir manuellement mon pays", "gui_autoconnect_circumventing_censorship_starting_meek": "Établissement d'un pont Meek comme domaine-écran…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Contournement de la censure…", "gui_autoconnect_no_bridge": "Réessayez sans pont", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Demande de ponts à l’API Tor de contournement de la censure…", "gui_autoconnect_try_again_without_a_bridge": "Réessayez sans pont", "gui_autoconnect_circumventing_censorship": "Résolution des problèmes de connectivité…", "gui_autoconnect_circumventing_censorship_got_bridges": "Les ponts sont établis. Reconnexion à Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "Échec de connexion à l’API Tor. Vérifiez la connexion à Internet et réessayez.", "gui_autoconnect_bridge_setting_options": "Paramètres du pont", "gui_autoconnect_start": "Se connecter à Tor", "gui_autoconnect_configure": "Paramètres réseau", "gui_general_settings_window_title": "Général", "waitress_web_server_error": "Un problème est survenu lors du démarrage du serveur Web", "gui_close_tab_warning_chat_description": "Fermer l’onglet qui héberge un serveur de dialogue en ligne ?", "gui_chat_mode_explainer": "Le mode conversation vous permet de discuter interactivement avec d’autres dans le Navigateur Tor.

    L’historique des conversations n’est pas enregistré dans OnionShare. L’historique des conversations disparaît en cas de fermeture du Navigateur Tor.", "mode_settings_persistent_autostart_on_launch_checkbox": "Démarrer automatiquement ce service oignon lors du démarrage d’OnionShare", "error_generic": "Une erreur inattendue est survenue dans OnionShare :\n{}", "gui_settings_license_label": "OnionShare est sous licence GPL v3.
    Les licences des tiers peuvent être consultées ici :
    https://github.com/onionshare/onionshare/tree/main/licenses" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ga.json000066400000000000000000000561701521174352300271050ustar00rootroot00000000000000{ "not_a_readable_file": "Ní comhad inléite é {0:s}.", "other_page_loaded": "Seoladh lódáilte", "close_on_autostop_timer": "Cuireadh stop leis toisc go bhfuil an t-amadóir uathstoptha caite", "closing_automatically": "Cuireadh stop leis toisc go bhfuil an t-aistriú críochnaithe", "large_filesize": "Rabhadh: D'fhéadfadh go dtógfadh sé tamall fada comhad mór a sheoladh", "systray_menu_exit": "Scoir", "gui_drag_and_drop": "Tarraing agus scaoil comhaid agus fillteáin chun iad a chomhroinnt", "gui_add": "Cuir Leis", "gui_choose_items": "Roghnaigh", "gui_share_start_server": "Comhroinn", "gui_share_stop_server": "Stop ag comhroinnt", "gui_share_stop_server_autostop_timer": "Stop ag Comhroinnt ({})", "gui_receive_start_server": "Tosaigh an Mód Glactha", "gui_receive_stop_server": "Stop an Mód Glactha", "gui_receive_stop_server_autostop_timer": "Stop an Mód Glactha ({} fágtha)", "gui_copy_url": "Cóipeáil an Seoladh", "gui_canceled": "Curtha ar ceal", "gui_copied_url_title": "Cóipeáladh Seoladh OnionShare", "gui_copied_url": "Cóipeáladh an seoladh OnionShare go dtí an ghearrthaisce", "gui_please_wait": "Ag tosú... Cliceáil lena chur ar ceal.", "gui_quit_warning_quit": "Scoir", "zip_progress_bar_format": "Á chomhbhrú: %p%", "gui_settings_window_title": "Socruithe", "gui_settings_autoupdate_label": "Lorg nuashonruithe", "gui_settings_autoupdate_option": "Cuir in iúl dom nuair a bheidh leagan nua ar fáil", "gui_settings_autoupdate_timestamp": "Seiceáilte: {}", "gui_settings_autoupdate_timestamp_never": "Níor seiceáladh riamh", "gui_settings_autoupdate_check_button": "Lorg Nuashonrú", "gui_settings_connection_type_label": "Cén chaoi ar chóir do OnionShare ceangal le Tor?", "gui_settings_connection_type_bundled_option": "Úsáid an leagan de Tor ionsuite in OnionShare", "gui_settings_connection_type_automatic_option": "Déan cumraíocht uathoibríoch le Brabhsálaí Tor", "gui_settings_connection_type_control_port_option": "Ceangal trí phort rialaithe", "gui_settings_connection_type_socket_file_option": "Ceangal trí chomhad soicéid", "gui_settings_connection_type_test_button": "Tástáil an Ceangal le Tor", "gui_settings_control_port_label": "Port rialaithe", "gui_settings_socket_file_label": "Comhad soicéid", "gui_settings_socks_label": "Port SOCKS", "gui_settings_authenticate_no_auth_option": "Gan fíordheimhniú, nó fíordheimhniú le fianán", "gui_settings_authenticate_password_option": "Focal faire", "gui_settings_password_label": "Focal faire", "gui_settings_tor_bridges": "An bhfuil fonn ort ceangal le droichead Tor?", "gui_settings_meek_lite_expensive_warning": "Rabhadh: Tá sé an-chostasach ar Thionscadal Tor na droichid meek_lite a chur ar fáil.

    Iarraimid ort gan iad a úsáid má tá tú in ann ceangal díreach a bhunú le Tor, nó trí chóras iompair obfs4, nó trí dhroichead eile.", "gui_settings_tor_bridges_invalid": "Níl aon cheann de do chuid droichead ag obair. Seiceáil arís iad, nó bain triail as droichid eile.", "gui_settings_button_save": "Sábháil", "gui_settings_button_cancel": "Cealaigh", "gui_settings_button_help": "Cabhair", "settings_error_unknown": "Ní féidir ceangal a bhunú leis an rialaitheoir Tor toisc nach féidir linn ciall a bhaint as na socruithe.", "settings_error_automatic": "Níorbh fhéidir ceangal a bhunú leis an rialaitheoir Tor. An bhfuil Brabhsálaí Tor (ar fáil ó torproject.org) ag rith sa gcúlra?", "settings_error_socket_port": "Ní féidir ceangal a bhunú leis an rialaitheoir Tor ag {}:{}.", "settings_error_socket_file": "Ní féidir ceangal a bhunú leis an rialaitheoir Tor trí chomhad soicéid {}.", "settings_error_auth": "Ceangailte le {}:{}, ach ní féidir an ceangal a fhíordheimhniú. B'fhéidir nach rialaitheoir Tor é seo?", "settings_error_missing_password": "Ceangailte le rialaitheoir Tor, ach teastaíonn focal faire uaidh.", "settings_error_unreadable_cookie_file": "Ceangailte le rialaitheoir Tor, ach seans go bhfuil an focal faire mícheart, nó níl cead ag an úsáideoir an comhad ina bhfuil na fianáin a léamh.", "settings_error_bundled_tor_not_supported": "Ní féidir an leagan de Tor a thagann le OnionShare a úsáid sa mód forbartha ar Windows nó ar macOS.", "settings_error_bundled_tor_timeout": "An iomarca ama ag ceangal le Tor. B'fhéidir nach bhfuil ceangailte leis an Idirlíon, nó nach bhfuil clog do chórais socraithe mar is ceart?", "settings_error_bundled_tor_broken": "Níorbh fhéidir le OnionShare ceangal le Tor sa gcúlra:\n{}", "settings_test_success": "Ceangailte leis an rialaitheoir Tor.\n\nLeagan de Tor: {}\nTacaíonn sé le seirbhísí onion gearrshaolacha: {}.\nTacaíonn sé le fíordheimhniú cliaint: {}.\nTacaíonn sé le seoltaí .onion den chéad ghlúin eile: {}.", "error_tor_protocol_error": "Tharla earráid le Tor: {}", "connecting_to_tor": "Ag ceangal le líonra Tor", "update_available": "Leagan nua de OnionShare ar fáil. Cliceáil anseo lena íoslódáil.

    Tá {} agat agus is é {} an leagan is déanaí.", "update_error_check_error": "Theip orainn nuashonrú a lorg: B'fhéidir nach bhfuil tú ceangailte le Tor, nó nach bhfuil suíomh OnionShare ag obair faoi láthair?", "update_error_invalid_latest_version": "Theip orainn nuashonruithe a lorg: Deir suíomh OnionShare gurb é '{}' an leagan is déanaí ach ní aithnítear é seo…", "update_not_available": "Tá an leagan is déanaí de OnionShare agat cheana.", "gui_tor_connection_ask": "An bhfuil fonn ort na socruithe líonra a oscailt chun an fhadhb a réiteach?", "gui_tor_connection_ask_open_settings": "Tá", "gui_tor_connection_ask_quit": "Scoir", "gui_tor_connection_error_settings": "Bain triail as na socruithe líonra a athrú chun ceangal le líonra Tor ó OnionShare.", "gui_tor_connection_canceled": "Níorbh fhéidir ceangal a bhunú le Tor.\n\nDeimhnigh go bhfuil tú ceangailte leis an Idirlíon, ansin oscail OnionShare arís agus socraigh an ceangal le Tor.", "gui_tor_connection_lost": "Dícheangailte ó Tor.", "gui_server_started_after_autostop_timer": "Bhí an t-amadóir uathstoptha caite sular thosaigh an freastalaí. Caithfidh tú comhroinnt nua a chruthú.", "gui_server_autostop_timer_expired": "Tá an t-amadóir uathstoptha caite cheana. Caithfidh tú é a athshocrú sular féidir leat comhaid a chomhroinnt.", "gui_share_url_description": "Tá aon duine a bhfuil an seoladh agus eochair phríobháideach seo OnionShare aige/aici in ann do chuid comhad a íoslódáil le Brabhsálaí Tor: ", "gui_receive_url_description": "Tá aon duine a bhfuil an seoladh agus eochair phríobháideach seo OnionShare aige/aici in ann comhaid a uaslódáil go dtí do ríomhaire le Brabhsálaí Tor: ", "gui_url_label_persistent": "Ní stopfaidh an sciar seo go huathoibríoch.

    Déanann gach scair ina dhiaidh sin an seoladh a athúsáid. (Chun seoltaí aonuaire a úsáid, múch “Oscail an cluaisín seo i gcónaí nuair a thosaítear OnionShare” sna socruithe.)", "gui_url_label_stay_open": "Ní stopfaidh an chomhroinnt seo go huathoibríoch.", "gui_url_label_onetime": "Stopfaidh an chomhroinnt seo nuair a chríochnóidh sé den chéad uair.", "gui_url_label_onetime_and_persistent": "Ní stopfaidh an sciar seo go huathoibríoch.

    Déanfaidh gach scair ina dhiaidh sin an seoladh a athúsáid. (Chun seoltaí aonuaire a úsáid, múch “Oscail an cluaisín seo i gcónaí nuair a thosaítear OnionShare” sna socruithe.)", "gui_status_indicator_share_stopped": "Stopadh", "gui_status_indicator_share_working": "Á thosú…", "gui_status_indicator_share_started": "Comhroinnt", "gui_status_indicator_receive_stopped": "Stopadh", "gui_status_indicator_receive_working": "Á thosú…", "gui_status_indicator_receive_started": "Glacadh", "gui_file_info": "{} comhad, {}", "gui_file_info_single": "{} chomhad, {}", "history_in_progress_tooltip": "{} ar siúl", "history_completed_tooltip": "{} críochnaithe", "gui_receive_mode_warning": "Sa mód glactha, beidh daoine in ann comhaid a uaslódáil ar do ríomhaire.

    Tá comhaid áirithe an-chontúirteach agus dhéanfaidís dochar do do ríomhaire dá n-osclófá iad. Ná hoscail ach comhaid ó dhaoine iontaofa mura bhfuil tú i do shaineolaí cruthanta slándála.", "systray_page_loaded_title": "Lódáladh an leathanach", "gui_settings_language_label": "Do rogha teanga", "gui_settings_language_changed_notice": "Atosaigh OnionShare chun athrú go dtí an teanga nua.", "gui_add_files": "Cuir Comhaid Leis", "gui_add_folder": "Cuir Fillteán Leis", "gui_stop_server_autostop_timer_tooltip": "Críochnóidh an t-amadóir uathstoptha ag {}", "gui_start_server_autostart_timer_tooltip": "Críochnóidh an t-amadóir uath-thosaithe ag {}", "gui_waiting_to_start": "Tosóidh sé i gceann {}. Cliceáil lena chur ar ceal.", "gui_server_autostart_timer_expired": "Tá an t-am sceidealta caite cheana. Caithfidh tú é a nuashonrú chun comhaid a chomhroinnt.", "gui_status_indicator_share_scheduled": "Sceidealaithe…", "gui_status_indicator_receive_scheduled": "Sceidealaithe…", "error_cannot_create_data_dir": "Níorbh fhéidir fillteán sonraí OnionShare a chruthú: {}", "systray_page_loaded_message": "Lódáladh an seoladh OnionShare", "systray_share_started_title": "Tosaíodh an Chomhroinnt", "systray_share_started_message": "Seoladh na gcomhad á thosú", "systray_share_completed_title": "Comhroinnt curtha i gcrích", "systray_receive_started_message": "Tá duine éigin ag seoladh comhad chugat", "gui_all_modes_history": "Stair", "gui_all_modes_clear_history": "Glan Uile", "gui_all_modes_transfer_started": "Tosaithe {}", "gui_all_modes_transfer_finished_range": "Aistrithe {} - {}", "gui_all_modes_transfer_finished": "Aistrithe {}", "gui_all_modes_transfer_canceled_range": "Cealaithe {} - {}", "gui_all_modes_transfer_canceled": "Cealaithe {}", "systray_share_completed_message": "Seoladh na comhaid", "systray_share_canceled_title": "Cealaíodh an Chomhroinnt", "systray_share_canceled_message": "Chealaigh duine éigin an chomhroinnt", "gui_all_modes_progress_starting": "{0:s}, %p% (á áireamh)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Níl aon chomhaid seolta fós", "days_first_letter": "l", "hours_first_letter": "u", "minutes_first_letter": "n", "seconds_first_letter": "s", "incorrect_password": "Focal faire mícheart", "history_requests_tooltip": "{} iarratas gréasáin", "gui_please_wait_no_button": "Á thosú…", "gui_hide": "Folaigh", "gui_reveal": "Nocht", "gui_qr_label_auth_string_title": "Eochair Phríobháideach", "gui_qr_label_url_title": "Seoladh OnionShare", "gui_qr_code_dialog_title": "Cód QR OnionShare", "gui_show_qr_code": "Taispeáin an Cód QR", "gui_copied_client_auth": "Cóipeáladh an Eochair Phríobháideach go dtí an ghearrthaisce", "gui_copied_client_auth_title": "Cóipeáladh Eochair Phríobháideach", "gui_copy_client_auth": "Cóipeáil an Eochair Phríobháideach", "gui_receive_flatpak_data_dir": "Toisc gur bhain tú úsáid as Flatpak chun OnionShare a shuiteáil, caithfidh tú comhaid a shábháil in ~/OnionShare.", "gui_chat_stop_server": "Stop an freastalaí comhrá", "gui_chat_start_server": "Tosaigh an freastalaí comhrá", "gui_file_selection_remove_all": "Bain Uile", "gui_remove": "Bain", "gui_status_indicator_chat_working": "Ag tosú…", "gui_status_indicator_chat_scheduled": "Sceidealaithe…", "gui_tab_name_share": "Comhroinn", "gui_tab_name_website": "Suíomh gréasáin", "gui_tab_name_chat": "Comhrá", "gui_close_tab_warning_cancel": "Cealaigh", "gui_quit_warning_cancel": "Cealaigh", "mode_settings_receive_data_dir_label": "Sábháil comhaid i", "gui_settings_theme_light": "Éadrom", "gui_close_tab_warning_close": "Ceart go leor", "gui_settings_bridge_custom_placeholder": "clóscríobh seoladh:port (ceann amháin ar gach líne)", "gui_settings_theme_dark": "Dorcha", "gui_new_tab_share_button": "Comhroinn Comhaid", "gui_settings_bridge_none_radio_option": "Ná húsáid droichid", "gui_general_settings_window_title": "Ginearálta", "moat_captcha_reload": "Athlódáil", "gui_main_page_share_button": "Tosaigh Comhroinnt", "moat_captcha_submit": "Seol", "gui_autoconnect_start": "Ceangail le Tor", "gui_settings_bridge_moat_radio_option": "Iarr droichead ó torproject.org", "gui_all_modes_progress_complete": "%[%, {0:s} caite.", "gui_receive_url_public_description": "Tá aon duine a bhfuil an seoladh OnionShare aige/aici in ann comhaid a uaslódáil go dtí do ríomhaire le Brabhsálaí Tor: ", "gui_share_url_public_description": "Tá aon duine a bhfuil an seoladh OnionShare aige/aici in ann do chuid comhad a íoslódáil le Brabhsálaí Tor: ", "mode_settings_receive_data_dir_browse_button": "Brabhsáil", "gui_new_tab_receive_button": "Glac le Comhaid", "gui_settings_theme_label": "Téama", "moat_solution_empty_error": "Cuir isteach na carachtair a fheiceann tú sa bpictiúr", "moat_captcha_placeholder": "Cuir isteach na carachtair a fheiceann tú sa bpictiúr", "moat_captcha_label": "Réitigh an CAPTCHA le droichead a iarraidh.", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Ag dul timpeall ar chinsireacht…", "gui_autoconnect_circumventing_censorship_starting_meek": "Droichead meek á bhunú le haghaidh aghaidh fearainn…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Droichid á n-iarraidh ón API imchéimniú cinsireachta Tor…", "gui_autoconnect_circumventing_censorship": "Ceisteanna nascachta á réiteach…", "gui_autoconnect_circumventing_censorship_got_bridges": "Droichid bunaithe. Ag athcheangal le Tor…", "gui_server_doesnt_support_stealth": "Ár leithscéal, ní thacaíonn an leagan seo de Tor le stealth (fíordheimhniú cliant). Bain triail as le leagan níos nuaí de Tor, nó úsáid mód 'poiblí' mura bhfuil gá leis a bheith príobháideach.", "gui_website_url_description": "Is féidir le éinne leis an seoladh OnionShare seo agus an eochair phríobháideach seo cuairt a thabhairt ar do shuíomh Gréasáin trí úsáid a bhaint as Brabhsálaí Tor: ", "gui_chat_url_description": "Is féidir le éinne leis an seoladh OnionShare seo agus an eochair phríobháideach seo dul isteach sa seomra comhrá ag baint úsáid as an Brabhsálaí Tor: ", "gui_chat_url_public_description": "Is féidir le duine ar bith a bhfuil an seoladh OnionShare seo aige dul isteach sa seomra comhrá seo ag úsáid Brabhsálaí Tor: ", "gui_status_indicator_chat_stopped": "Stopadh", "gui_share_mode_autostop_timer_waiting": "Ag críochnú le seoladh…", "gui_receive_mode_autostop_timer_waiting": "Ag críochnú glactha…", "gui_tab_name_receive": "Faigh", "gui_close_tab_warning_website_description": "Dún cluaisín a bhfuil suíomh Gréasáin á óstáil aige?", "mode_settings_share_autostop_sharing_checkbox": "Stop ag roinnt tar éis na comhaid a bheith seolta (díthiceáil chun comhaid aonair a íoslódáil)", "gui_new_tab": "Cluaisín Nua", "mode_settings_receive_disable_files_checkbox": "Díchumasaigh uaslódáil comhaid", "gui_quit_warning_title": "An bhfuil fonn ort OnionShare a scor?", "gui_status_indicator_chat_started": "Ag comhrá", "mode_settings_receive_disable_text_checkbox": "Díchumasaigh cur isteach téacs", "gui_autoconnect_connection_error_msg": "Bí cinnte go bhfuil tú ceangailte leis an Idirlíon.", "gui_main_page_chat_button": "Tosaigh Comhrá", "gui_rendezvous_cleanup_quit_early": "Scoir go Luath", "gui_autoconnect_no_bridge": "Bain triail eile as gan droichid", "gui_autoconnect_configure": "Socruithe Líonra", "gui_close_tab_warning_persistent_description": "Dún cluaisín leanúnach agus caillfidh tú an seoladh oinniúin atá in úsáid aige?", "gui_autoconnect_bridge_description": "Seans go mbeidh tú in ann nascadh le droichead má dhéantar cinsireacht ar do nasc Idirlín.", "gui_autoconnect_try_again_without_a_bridge": "Bain triail eile as gan droichid", "gui_autoconnect_failed_to_connect_to_tor": "Níorbh fhéidir ceangal le Tor", "mode_settings_website_custom_csp_checkbox": "Seol ceanntásc saincheaptha Beartas Slándála Ábhar", "gui_autoconnect_bridge_detect_automatic": "Aimsigh mo thír ó mo sheoladh IP le haghaidh socruithe droichead", "gui_settings_controller_extras_label": "Socruithe Tor", "mode_settings_autostart_timer_checkbox": "Tosaigh seirbhís oinniún ag am sceidealta", "gui_autoconnect_bridge_detect_manual": "Roghnaigh mo thír le haghaidh socruithe droichid de láimh", "gui_settings_bridge_custom_radio_option": "Tabhair droichead ar fhoghlaim tú faoi ó fhoinse iontaofa", "gui_dragdrop_sandbox_flatpak": "Chun bosca gainimh Flatpak a dhéanamh níos sláine, ní thacaítear le tarraing agus scaoil. Bain úsáid as na \"Cuir Comhaid\" agus \"Cuir Fillteán\" cnaipí chun comhaid a roghnú ina ionad.", "gui_settings_bridge_use_checkbox": "Bain úsáid as droichead", "mode_settings_public_checkbox": "Is seirbhís phoiblí OnionShare í seo (díchumasaítear eochair phríobháideach)", "gui_rendezvous_cleanup": "Ag fanacht le ciorcaid Tor a dhúnadh le bheith cinnte go bhfuil do chomhaid aistrithe.\n\nSeans go dtógfaidh sé seo cúpla nóiméad.", "gui_quit_warning_description": "Scoir agus dún gach cluaisín, cé go bhfuil roinnt gníomhach i gcuid acu?", "gui_color_mode_changed_notice": "Atosaigh OnionShare chun na dathanna nua a fheiceáil.", "mode_settings_advanced_toggle_show": "Taispeáin ardsocruithe", "gui_close_tab_warning_chat_description": "An bhfuil fonn ort cluaisín a dhúnadh atá ina óstáil ar fhreastalaí comhrá?", "gui_close_tab_warning_title": "Dún cluaisín?", "gui_url_instructions_public_mode": "Seol an seoladh OnionShare thíos:", "gui_open_folder_error": "Níorbh fhéidir an fillteán a oscailt le xdg-open. Tá an comhad anseo: {}", "gui_settings_theme_auto": "Auto", "gui_client_auth_instructions": "Ansin, seol an eochair phríobháideach chun rochtain a cheadú ar do sheirbhís OnionShare:", "gui_receive_mode_no_files": "Ní Fuarthas Comhad Fós", "gui_settings_bridge_radio_builtin": "Roghnaigh droichead ionsuite", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Ní féidir leis an am stad uathoibríoch a bheith mar a chéile nó níos luaithe ná an t-am tosaithe uathoibríoch. Cuir in oiriúint é chun tús a chur le roinnt.", "systray_receive_started_title": "Cuireadh tús le Fáil", "gui_website_mode_no_files": "Níl aon Láithreán Gréasáin Roinnte fós", "gui_new_tab_tooltip": "Oscail cluaisín nua", "gui_new_tab_website_button": "Suíomh Gréasáin a óstáil", "gui_new_tab_chat_button": "Comhrá gan ainm", "gui_main_page_receive_button": "Tosaigh Fáil", "gui_main_page_website_button": "Tosaigh Óstáil", "gui_close_tab_warning_share_description": "Dún cluaisín atá ag seoladh comhaid?", "gui_close_tab_warning_receive_description": "An bhfuil fonn ort cluaisín a dhúnadh a bhfuil comhaid á bhfáil agat?", "mode_settings_advanced_toggle_hide": "Folaigh ardsocruithe", "mode_settings_persistent_checkbox": "Oscail an cluaisín seo i gcónaí nuair a thosaíonn OnionShare (fanfaidh an seoladh oinniúin mar a chéile)", "mode_settings_autostop_timer_checkbox": "Cuir stop leis an tseirbhís oinniún ag an am sceidealta", "mode_settings_website_disable_csp_checkbox": "Ná seol ceanntásc réamhshocraithe Beartas Slándála Inneachair (a ligeann do do shuíomh Gréasáin acmhainní tríú páirtí a úsáid)", "gui_tor_settings_window_title": "Socruithe Tor", "gui_url_instructions": "Ar dtús, seol an seoladh OnionShare thíos:", "mode_settings_title_label": "Teideal saincheaptha", "mode_settings_receive_webhook_url_checkbox": "Úsáid cuaille gréasáin fógraí", "error_port_not_available": "Níl port OnionShare ar fáil", "history_receive_read_message_button": "Léigh Teachtaireacht", "gui_settings_tor_bridges_label": "Cuidíonn droichid le do thrácht dul isteach i Líonra Tor má tá bac ar rochtain Tor. Ag brath ar an áit as a nascann tú, féadfaidh droichead amháin oibriú níos fearr ná droichead eile.", "gui_settings_bridge_moat_button": "Iarr Droichead Nua", "gui_settings_moat_bridges_invalid": "Níor iarr tú droichead ó torproject.org fós.", "gui_settings_stop_active_tabs_label": "Tá seirbhísí ar siúl i gcuid de do chuid cluaisíní.\nNí mór duit gach seirbhís a stopadh chun do shocruithe Tor a athrú.", "gui_settings_version_label": "Tá OnionShare {} in úsáid agat", "gui_settings_help_label": "Teastaionn Cabhair? Féach docs.onionshare.org", "moat_contact_label": "Ag dul i dteagmháil le BridgeDB…", "moat_bridgedb_error": "Níorbh fhéidir teagmháil a dhéanamh le BridgeDB.", "gui_autoconnect_description": "Tá OnionShare ag brath ar líonra Tor a oibrítear go deonach.", "gui_enable_autoconnect_checkbox": "Uathcheangail le Tor", "gui_autoconnect_trying_to_connect_to_tor": "Ag nascadh le Tor…", "gui_autoconnect_bridge_setting_options": "Socruithe Droichid", "moat_captcha_error": "Réiteach mícheart. Arís, le d'thoil.", "mode_tor_not_connected_label": "Níl OnionShare nasctha le líonra Tor", "gui_autoconnect_could_not_connect_to_tor_api": "Níorbh fhéidir ceangal leis an API Tor. Cinntigh go bhfuil tú nasctha leis an Idirlíon sula ndéanfaidh tú iarracht eile.", "waitress_web_server_error": "Tharla fadhb agus an freastalaí gréasáin á thosú", "gui_website_url_public_description": "Is féidir le duine ar bith a bhfuil an seoladh OnionShare seo aige cuairt a thabhairt ar do shuíomh Gréasáin trí úsáid a bhaint as Brabhsálaí Tor: ", "gui_chat_mode_explainer": "Ligeann mód comhrá duit comhrá idirghníomhach a dhéanamh le daoine eile, i mBrabhsálaí Tor.

    Ní stóráiltear stair comhrá in OnionShare. Imeoidh an stair chomhrá nuair a dhúnann tú Brabhsálaí Tor.", "mode_settings_persistent_autostart_on_launch_checkbox": "Cuir tús leis an tseirbhís oinniúin seo go huathoibríoch nuair a thosaíonn OnionShare", "error_generic": "Tharla earráid le OnionShare gan choinne:\n{}", "gui_settings_license_label": "Tá OnionShare ceadúnaithe faoin GPL v3.
    Is féidir ceadúnais tríú páirtí a fheiceáil anseo:
    https://github.com/onionshare/onionshare/tree/main/licenses" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/gl.json000066400000000000000000000516071521174352300271200ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} non é un ficheiro lexible.", "other_page_loaded": "O enderezo cargou", "incorrect_password": "Contrasinal incorrecto", "close_on_autostop_timer": "Detido porque o temporizador de parada automática rematou", "closing_automatically": "Detido porque se completou a transferencia", "large_filesize": "Aviso: unha compartición moi grande podería tomar horas", "gui_drag_and_drop": "Arrastra e solta ficheiros e cartafoles para compartir", "gui_add": "Engadir", "gui_add_files": "Engadir ficheiros", "gui_add_folder": "Engadir cartafol", "gui_remove": "Eliminar", "gui_file_selection_remove_all": "Eliminar todo", "gui_choose_items": "Escolle", "gui_share_start_server": "Comeza a compartir", "gui_share_stop_server": "Deixar de compartir", "gui_share_stop_server_autostop_timer": "Deixar de compartir ({})", "gui_chat_start_server": "Inicia o servidor de chat", "gui_chat_stop_server": "Deter o servidor de chat", "gui_stop_server_autostop_timer_tooltip": "O temporizador de detención automática rematará o {}", "gui_start_server_autostart_timer_tooltip": "O temporizador de inicio automático comeza o {}", "gui_receive_start_server": "Iniciar o modo de recepción", "gui_receive_stop_server": "Deter o modo de Recepción", "gui_receive_stop_server_autostop_timer": "Deter o modo Recepción ({} restante)", "gui_receive_flatpak_data_dir": "Debido a que instalaches OnionShare usando Flatpk, tes que gardar os ficheiros nun cartafol dentro de ~/OnionShare.", "gui_copy_url": "Copiar enderezo", "gui_canceled": "Cancelado", "gui_copied_url_title": "Copiouse o Enderezo de OnionShare", "gui_copied_url": "Enderezo OnionShare copiado ó portapapeis", "gui_show_qr_code": "Mostrar código QR", "gui_qr_code_dialog_title": "Código QR OnionShare", "gui_waiting_to_start": "Programado para comezar en {}. Fai clic para cancelar.", "gui_please_wait": "Iniciando... Fai click para cancelar.", "zip_progress_bar_format": "Comprimindo: %p%", "gui_settings_window_title": "Axustes", "gui_settings_autoupdate_label": "Comproba se hai nova versión", "gui_settings_autoupdate_option": "Avisarme cando esté dispoñible unha nova versión", "gui_settings_autoupdate_timestamp": "Última comprobación: {}", "gui_settings_autoupdate_timestamp_never": "Nunca", "gui_settings_autoupdate_check_button": "Comprobar se hai nova versión", "gui_settings_connection_type_label": "Como debe conectarse OnionShare a Tor?", "gui_settings_connection_type_bundled_option": "Usa a versión de Tor incluída en OnionShare", "gui_settings_connection_type_automatic_option": "Intenta a configuración automática con Tor Browser", "gui_settings_connection_type_control_port_option": "Conecta usando porto de control", "gui_settings_connection_type_socket_file_option": "Conecta usando ficheiro socket", "gui_settings_connection_type_test_button": "Probar conexión con Tor", "gui_settings_control_port_label": "Porto de control", "gui_settings_socket_file_label": "Ficheiro Socket", "gui_settings_socks_label": "Porto SOCKS", "gui_settings_authenticate_no_auth_option": "Sen autenticación, ou autenticación por cookie", "gui_settings_authenticate_password_option": "Contrasinal", "gui_settings_password_label": "Contrasinal", "gui_settings_tor_bridges": "Conectar usando unha ponte Tor?", "gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek-azure requiren moitos recursos do Proxecto Tor.

    Utilízao só se non podes conectar directamente con Tor, vía transporte obfs4 ou outras pontes habituais.", "gui_settings_tor_bridges_invalid": "Non funciona ningunha das pontes engadidas. Compróbaas ou engade outras.", "gui_settings_button_save": "Gardar", "gui_settings_button_cancel": "Cancelar", "gui_settings_button_help": "Axuda", "settings_test_success": "Conectado ó controlador Tor.\n\nVersión Tor: {}\nSoporte de servicios efémeros onion: {}.\nSoporte da autenticación do cliente: {}.\nSoporte de enderezos next-gen .onion: {}.", "connecting_to_tor": "Conectando á rede Tor", "update_available": "Nova saída OnionShare. Preme aquí para obtela.

    Estas a usar {} e a última é {}.", "update_error_invalid_latest_version": "Non se puido comprobar actualización: A web de OnionShare di que a última versión non é recoñecible '{}'…", "update_error_check_error": "Non se puido comprobar actualización: Pode que non estés conectado a Tor, ou a web OnionShare está caída?", "update_not_available": "Xa estás executando a última OnionShare.", "gui_tor_connection_ask": "Abrir os axustes para arranxar a conexión a Tor?", "gui_tor_connection_ask_open_settings": "Si", "gui_tor_connection_ask_quit": "Non", "gui_tor_connection_error_settings": "Intenta cambiar nos axustes o xeito en que OnionShare se conecta á rede Tor.", "gui_tor_connection_canceled": "Non hai conexión a Tor.\n\nAsegúrate de ter conexión a Internet, volve a abrir OnionShare e configura a súa conexión a Tor.", "gui_tor_connection_lost": "Desconectado de Tor.", "gui_server_started_after_autostop_timer": "O temporizador de detención automática esgotouse antes de iniciar o servidor. Fai outra compartición.", "gui_server_autostop_timer_expired": "O temporizador de detención automática esgotouse. Configúrao para comezar a compartir.", "gui_server_autostart_timer_expired": "A hora programada xa pasou. Configúraa para comezar a compartir.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "A hora de detención automática non pode ser a mesma ou anterior á hora de inicio. Configúraa para comezar a compartir.", "gui_share_url_description": "Calquera con este enderezo OnionShare e chave privada pode descargar os teus ficheiros usando o Tor Browser: ", "gui_website_url_description": "Calqueracon este enderezo OnionShare e chave privada pode visitar o teu sition web usando Tor Browser: ", "gui_receive_url_description": "Calquera con este enderezo OnionShare e chave privada pode subir ficheiros ó teu ordenador usando Tor Browser: ", "gui_chat_url_description": "Calquera con este enderezo OnionShare e chave privada pode unirse a esta sala de conversa usando Tor Browser: ", "gui_url_label_persistent": "Esta compartición non se rematará automáticamente.

    En futuras comparticións reutilizará o enderezo. (Para enderezos dun só uso, desactiva nos axustes \"Usar enderezo persistente\".)", "gui_url_label_stay_open": "Este enderezo non desaparecerá automáticamente.", "gui_url_label_onetime": "Esta compartición deterase tras o primeiro completado.", "gui_url_label_onetime_and_persistent": "Esta compartición non se deterá automáticamente.

    Cada futura compartición reutilizará o enderezo. (Para usar enderezos dun só uso, desactiva nos axustes \"Usar enderezo persistente\".)", "gui_status_indicator_share_stopped": "Detido", "gui_status_indicator_share_working": "Comezando…", "gui_status_indicator_share_scheduled": "Programado…", "gui_status_indicator_share_started": "Compartindo", "gui_status_indicator_receive_stopped": "Detido", "gui_status_indicator_receive_working": "Comezando…", "gui_status_indicator_receive_scheduled": "Programado…", "gui_status_indicator_receive_started": "Recibindo", "gui_file_info": "{} ficheiros, {}", "gui_file_info_single": "{} ficheiro, {}", "history_in_progress_tooltip": "{} en progreso", "history_completed_tooltip": "{} completado", "history_requests_tooltip": "{} solicitudes web", "error_cannot_create_data_dir": "Non se puido crear o cartafol de datos OnionShare: {}", "gui_receive_mode_warning": "O modo Recepción permite que outras poidan subir ficheiros á túa computadora.

    Potencialmente algúns ficheiros poderían tomar control sobre a túa computadora ó abrilos. Abre só elementos que recibas de xente de confianza, ou se realmente sabes o que fas.", "gui_open_folder_error": "Non se puido abrir o cartafol con xdg-open. O ficheiro está aquí: {}", "gui_settings_language_label": "Idioma", "gui_settings_language_changed_notice": "Reinicia OnionShare para cambiar ao novo idioma.", "systray_menu_exit": "Saír", "systray_page_loaded_title": "Páxina cargada", "systray_page_loaded_message": "Cargado enderezo OnionShare", "systray_share_started_title": "Compartición iniciada", "systray_share_started_message": "Comezou o envío de ficheiros para alguén", "systray_share_completed_title": "Compartición completa", "systray_share_completed_message": "Rematou o envío de ficheiros", "systray_share_canceled_title": "Compartición cancelada", "systray_share_canceled_message": "Alguén cancelou a recepción dos teus ficheiros", "systray_receive_started_title": "Recepción iniciada", "systray_receive_started_message": "Alguén estache enviando ficheiros", "gui_all_modes_history": "Historial", "gui_all_modes_clear_history": "Baleirar todo", "gui_all_modes_transfer_started": "Iniciado {}", "gui_all_modes_progress_complete": "%p%, {0:s} transcorridos.", "gui_all_modes_progress_starting": "{0:s}, %p% (calculando)", "gui_all_modes_progress_eta": "{0:s}, Estimado: {1:s}, %p%", "gui_share_mode_no_files": "Aínda non se enviou nada", "gui_share_mode_autostop_timer_waiting": "Agardando a que remate o envío…", "gui_website_mode_no_files": "Aínda non se publicou unha web", "gui_receive_mode_no_files": "Aínda non se recibiu nada", "gui_receive_mode_autostop_timer_waiting": "A rematar a recepción…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_new_tab": "Nova lapela", "gui_new_tab_tooltip": "Abrir nova lapela", "gui_new_tab_share_button": "Compartir ficheiros", "gui_new_tab_receive_button": "Recibir ficheiros", "gui_new_tab_website_button": "Publicar sitio web", "gui_new_tab_chat_button": "Chat anónimo", "gui_main_page_share_button": "Comeza a compartir", "gui_main_page_receive_button": "Recibe ficheiros", "gui_main_page_website_button": "Publica un Sitio web", "gui_main_page_chat_button": "Conversa", "gui_tab_name_share": "Compartir", "gui_tab_name_receive": "Recibir", "gui_tab_name_website": "Sitio Web", "gui_tab_name_chat": "Chat", "gui_close_tab_warning_title": "Pechar pestana?", "gui_close_tab_warning_persistent_description": "Pechar a pestana persistente e perder o enderezo onion que está a usar?", "gui_close_tab_warning_share_description": "Pechar a pestana que está a enviar ficheiros?", "gui_close_tab_warning_receive_description": "Pechar a pestana que está recibindo ficheiros?", "gui_close_tab_warning_website_description": "Pechar a pestana que hospeda un sitio web?", "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_cancel": "Cancelar", "gui_quit_warning_title": "Saír de OnionShare?", "gui_quit_warning_description": "Saír e pechar todas as pestanas, incluso aquelas que están compartindo de xeito activo?", "gui_quit_warning_quit": "Saír", "gui_quit_warning_cancel": "Cancelar", "mode_settings_advanced_toggle_show": "Mostrar axustes avanzados", "mode_settings_advanced_toggle_hide": "Agochar axustes avanzados", "mode_settings_persistent_checkbox": "Abrir sempre esta pestana cando se inicia OnionShare", "mode_settings_public_checkbox": "Este é un servizo OnionShare público (desactiva a chave privada)", "mode_settings_autostart_timer_checkbox": "Iniciar o servizo onion na hora programada", "mode_settings_autostop_timer_checkbox": "Deter o servizo onion na hora programada", "mode_settings_share_autostop_sharing_checkbox": "Deixar de compartir unha vez enviado o ficheiro (desmarca para permitir a descarga de ficheiros individuais)", "mode_settings_receive_data_dir_label": "Gardar ficheiros en", "mode_settings_receive_data_dir_browse_button": "Navegar", "mode_settings_website_disable_csp_checkbox": "Non enviar cabeceira Content Security Policy (isto permite ao teu sitio web usar recursos de terceiros)", "gui_all_modes_transfer_finished_range": "Transferido {} - {}", "gui_all_modes_transfer_finished": "Transferido {}", "gui_all_modes_transfer_canceled_range": "Cancelado {} - {}", "gui_all_modes_transfer_canceled": "Cancelado {}", "settings_error_unknown": "Non se puido conectar ó contralor Tor porque os teus axustes non teñen sentido.", "settings_error_automatic": "Non se puido conectar ó controlador Tor. Estase executando o Tor Browser (dispoñible en torproject.org) en segundo plano?", "settings_error_socket_port": "Non se puido conectar co controlador Tor en {}:{}.", "settings_error_socket_file": "Non se puido conectar co controlador Tor usando o ficheiro socket {}.", "settings_error_auth": "Conectado a {}:{}, pero sen autenticar. Pode que non sexa un controlador Tor?", "settings_error_missing_password": "Conectado ó controlador Tor, pero require un contrasinal para autenticar.", "settings_error_unreadable_cookie_file": "Conectado ó controlador Tor, pero o contrasinal igual está mal, ou o teu usuario non ten permiso para ler o ficheiro de cookie.", "settings_error_bundled_tor_not_supported": "A versión Tor que ven con OnionShare non funciona en modo desenvolvedor en Windows ou macOS.", "settings_error_bundled_tor_timeout": "Tarda demasiado en conectar a Tor. Igual non tes conexión a Internet, ou o reloxo do sistema está mal axustado?", "settings_error_bundled_tor_broken": "OnionShare non puido conectar a Tor:\n{}", "error_port_not_available": "Non está dispoñible o porto OnionShare", "gui_rendezvous_cleanup_quit_early": "Saír axiña", "gui_rendezvous_cleanup": "Agardar a que se pechen os circuitos Tor para ter certeza da transferencia de ficheiros.\n\nPodería levarlle uns minutos.", "gui_color_mode_changed_notice": "Reinicia OnionShare para ver as novas cores.", "error_tor_protocol_error": "Hai un erro con Tor: {}", "history_receive_read_message_button": "Ler mensaxe", "mode_settings_receive_disable_files_checkbox": "Desactivar a subida de ficheiros", "mode_settings_receive_disable_text_checkbox": "Desactivar o envío de texto", "mode_settings_title_label": "Título personalizado", "mode_settings_receive_webhook_url_checkbox": "Usar webhook de notificación", "gui_status_indicator_chat_started": "Conversando", "gui_status_indicator_chat_scheduled": "Programado…", "gui_status_indicator_chat_working": "Comezando…", "gui_status_indicator_chat_stopped": "Detido", "gui_settings_theme_dark": "Escuro", "gui_settings_theme_light": "Claro", "gui_settings_theme_auto": "Auto", "gui_settings_theme_label": "Decorado", "gui_please_wait_no_button": "Iniciando…", "gui_client_auth_instructions": "A continuación, envía a chave privada para permitir o acceso ao teu servicio OnionShare:", "gui_url_instructions_public_mode": "Envia o enderezo OnionShare inferior:", "gui_url_instructions": "Primeiro, envía o enderezo OnionShare inferior:", "gui_chat_url_public_description": "Calquera con este enderezo OnionShare pode unirse a esta sala de conversa usando o Tor Browser: ", "gui_receive_url_public_description": "Calquera con este enderezo OnionShare pode descargar ficheiros ao teu computador utilizando o Tor Browser: ", "gui_website_url_public_description": "Calquera con este enderezo OnionShare pode visitar o teu sitio web usando o Tor Browser: ", "gui_share_url_public_description": "Calquera con este enderezo OnionShare pode descargar os teus ficheiros usando o Tor Browser: ", "gui_server_doesnt_support_stealth": "Lamentámolo, pero esta versión de Tor non soporta ocultación (autenticación do cliente). Inténtao cunha nova versión de Tor, ou utiliza o modo 'público' se non ten que ser privado.", "gui_hide": "Agochar", "gui_reveal": "Amosar", "gui_qr_label_auth_string_title": "Chave Privada", "gui_qr_label_url_title": "Enderezo OnionShare", "gui_copied_client_auth": "Chave privada copiada ao portapapeis", "gui_copied_client_auth_title": "Copiouse a Chave Privada", "gui_copy_client_auth": "Copiar Chave privada", "gui_tor_settings_window_title": "Axustes Tor", "gui_settings_controller_extras_label": "Axustes Tor", "gui_settings_bridge_use_checkbox": "Usar unha ponte", "gui_settings_bridge_radio_builtin": "Elixe unha ponte prestablecida", "gui_settings_bridge_none_radio_option": "Non usar pontes", "gui_settings_bridge_moat_radio_option": "Solicitar unha ponte a torproject.org", "gui_settings_bridge_custom_radio_option": "Proporcionar unha ponte que coñeces e é da túa confianza", "gui_settings_bridge_custom_placeholder": "escribe enderezo:porto (un por liña)", "gui_settings_moat_bridges_invalid": "Aínda non solicitaches unha ponte a torproject.org.", "gui_settings_version_label": "Estás utilizando OnionShare {}", "gui_settings_help_label": "Precisas axuda? Le docs.onionshare.org", "moat_captcha_label": "Completa o CAPTCHA para solicitar unha ponte.", "moat_captcha_placeholder": "Escribe os caracteres da imaxe", "moat_captcha_submit": "Enviar", "moat_captcha_reload": "Recargar", "moat_bridgedb_error": "Non se puido contactar con BridgeDB.", "moat_captcha_error": "Solución incorrecta. Inténtao outra vez.", "moat_solution_empty_error": "Escribe os caracteres da imaxe", "mode_tor_not_connected_label": "OnionShare non está conectado á rede Tor", "gui_dragdrop_sandbox_flatpak": "Para facer aínda máis segura a instancia Flatpak, non hai soporte para arrastrar e soltar. Usa o botón \"Engadir Ficheiros\" e \"Engadir Cartafol\" para seleccionar ficheiros.", "gui_settings_bridge_moat_button": "Solicitar Nova Ponte", "gui_settings_stop_active_tabs_label": "Hai servizos en execución nalgunha das túas lapelas.\nDebes deter tódolos servizo para cambiar os axustes Tor.", "mode_settings_website_custom_csp_checkbox": "Envía cabeceira Content Security Policy personalizada", "gui_settings_tor_bridges_label": "As Pontes axúdanche a acceder á Rede Tor en lugares que Tor está bloqueada. Dependendo de onde te conectes unha ponte podería funcionar mellor que outras.", "moat_contact_label": "A contactar con BridgeDB…", "gui_autoconnect_description": "OnionShare depende da rede Tor xestionada por voluntarios.", "gui_enable_autoconnect_checkbox": "Conectar automaticamente a Tor", "gui_autoconnect_circumventing_censorship_got_bridges": "Pontes establecidas. A reconectar con Tor…", "gui_autoconnect_bridge_detect_automatic": "Detectar o meu país usando o enderezo IP para os axustes da ponte", "gui_autoconnect_try_again_without_a_bridge": "Intentar outra vez sen pontes", "gui_autoconnect_circumventing_censorship": "A solucionar os problemas de conectividade…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "A evitar a censura…", "waitress_web_server_error": "Houbo un problema ao iniciar o servidor web", "gui_close_tab_warning_chat_description": "Pechar a pestana que hospeda o servidor de chat?", "gui_autoconnect_connection_error_msg": "Comproba que tes conexión a Internet.", "gui_autoconnect_failed_to_connect_to_tor": "Non se puido conectar a Tor", "gui_autoconnect_trying_to_connect_to_tor": "A conectar con Tor…", "gui_autoconnect_bridge_description": "Poderías conectarte usando unha ponte se a túa conexión a Internet está censurada.", "gui_autoconnect_bridge_detect_manual": "Elexir o meu país manualmente para os axustes da ponte", "gui_autoconnect_bridge_setting_options": "Axustes da ponte", "gui_autoconnect_start": "Conectar a Tor", "gui_autoconnect_configure": "Axustes da rede", "gui_autoconnect_no_bridge": "Intentar outra vez sen pontes", "gui_autoconnect_circumventing_censorship_requesting_bridges": "A solicitar pontes na API de Tor para evitar a censura…", "gui_autoconnect_could_not_connect_to_tor_api": "Non se puido conectar coa API de Tor. Comproba que tes conexión a Internet antes de volver a intentalo.", "gui_general_settings_window_title": "Xeral", "gui_chat_mode_explainer": "O modo chat permíteche conversar interactivamente con outras persoas, no Navegador Tor.

    O historial da conversa non se garda en OnionShare. O historial desaparece ao pechar o Navegador Tor.", "gui_autoconnect_circumventing_censorship_starting_meek": "Usar unha ponte encuberta para acceder aos dominios…" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/gu.json000066400000000000000000000057451521174352300271330ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} એ વાંચી શકાય તેવી ફાઇલ નથી.", "other_page_loaded": "સરનામું લોડ થયું", "close_on_autostop_timer": "બંધ થયું કારણ કે સ્વત stop-સ્ટોપ ટાઇમર સમાપ્ત થઈ ગયો છે", "closing_automatically": "અટક્યું કારણ કે સ્થાનાંતરણ પૂર્ણ છે", "large_filesize": "ચેતવણી: મોટો શેર મોકલવામાં કલાકો લાગી શકે છે", "gui_drag_and_drop": "ફાઇલો અને ફોલ્ડર્સ ખેંચો અને છોડો વહેંચણી શરૂ કરવા માટે", "gui_add": "ઉમેરો", "gui_settings_autoupdate_timestamp_never": "ક્યારેય નહીં", "gui_add_files": "ફાઇલો ઉમેરો", "gui_add_folder": "ફોલ્ડર ઉમેરો", "incorrect_password": "ખોટો પાસવર્ડ", "gui_settings_button_save": "સેવ કરો", "gui_canceled": "રદ", "gui_settings_window_title": "સેટિંગ્સ", "gui_settings_authenticate_password_option": "પાસવર્ડ", "gui_tor_connection_ask_open_settings": "હા", "gui_tab_name_share": "શેર કરો", "gui_tab_name_receive": "પ્રાપ્તિ", "gui_settings_button_cancel": "રદ કરો", "gui_settings_button_help": "મદદ", "moat_captcha_submit": "Submit", "gui_all_modes_history": "ઈતિહાસ", "gui_settings_password_label": "પાસવર્ડ", "gui_settings_bridge_custom_placeholder": "type address:port (one per line)", "gui_general_settings_window_title": "સામાન્ય", "gui_settings_theme_auto": "ઓટો", "gui_tab_name_website": "વેબસાઇટ", "gui_all_modes_clear_history": "તમામને દૂર કરો", "gui_settings_theme_label": "થીમ", "moat_captcha_reload": "ફરી લોડ કરો", "gui_new_tab": "નવું ટેબ", "gui_remove": "દૂર કરો", "gui_settings_language_label": "ભાષા", "gui_close_tab_warning_cancel": "રદ કરો", "gui_quit_warning_cancel": "રદ કરો", "gui_settings_theme_light": "પ્રકાશ", "gui_settings_theme_dark": "અંધારિયું", "gui_hide": "છુપાવો", "gui_autoconnect_start": "Connect to Tor", "gui_status_indicator_share_working": "શરૂ થઈ રહ્યુ છે…", "gui_status_indicator_chat_working": "શરૂ થઈ રહ્યુ છે…", "gui_file_selection_remove_all": "Remove All", "gui_status_indicator_receive_working": "શરૂ થઈ રહ્યુ છે…", "gui_close_tab_warning_close": "ઠીક છે", "gui_please_wait_no_button": "શરૂ થઈ રહ્યુ છે…" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/he.json000066400000000000000000000065241521174352300271100ustar00rootroot00000000000000{ "systray_menu_exit": "יציאה", "gui_add": "הוסף", "gui_add_files": "הוסף קבצים", "gui_add_folder": "הוסף תיקייה", "gui_choose_items": "בחר", "gui_share_start_server": "התחל לשתף", "gui_share_stop_server": "הפסק לשתף", "gui_share_stop_server_autostop_timer": "הפסק לשתף ({})", "gui_copy_url": "העתק כתובת", "gui_canceled": "מבוטל", "gui_quit_warning_quit": "יציאה", "gui_settings_window_title": "הגדרות", "gui_settings_autoupdate_label": "בדיקה לאיתור גרסה חדשה", "gui_settings_autoupdate_timestamp_never": "לעולם לא", "gui_settings_control_port_label": "פתחת בקרה", "gui_settings_authenticate_password_option": "סיסמה", "gui_settings_password_label": "סיסמה", "gui_settings_button_save": "שמור", "gui_settings_button_cancel": "ביטול", "gui_tor_connection_ask_open_settings": "כן", "gui_tor_connection_ask_quit": "יציאה", "gui_status_indicator_receive_started": "במהלך קבלה", "gui_all_modes_history": "היסטוריה", "gui_all_modes_clear_history": "למחוק הכול", "gui_settings_button_help": "עזרה", "gui_hide": "הסתרה", "moat_solution_empty_error": "הכנס את התווים מהתמונה", "gui_new_tab": "לשונית חדשה", "gui_tab_name_share": "שתף", "gui_tab_name_receive": "תקבולים", "gui_tab_name_website": "אתר", "gui_quit_warning_cancel": "בטל", "gui_status_indicator_share_working": "התחלה…", "gui_tab_name_chat": "שיחה", "gui_close_tab_warning_cancel": "בטל", "gui_settings_theme_dark": "כהה", "gui_settings_theme_label": "ערכת נושא", "gui_autoconnect_trying_to_connect_to_tor": "מתחבר אל Tor…", "gui_close_tab_warning_close": "בסדר", "gui_autoconnect_start": "התחבר אל Tor", "moat_captcha_submit": "הגש", "incorrect_password": "מילת מעבר שגויה", "gui_remove": "הסר", "gui_file_selection_remove_all": "הסר את הכל", "gui_status_indicator_receive_working": "התחלה…", "gui_settings_language_label": "שפה", "mode_settings_receive_data_dir_browse_button": "עיון", "gui_please_wait_no_button": "התחלה…", "gui_settings_theme_auto": "אוטומטי", "gui_settings_theme_light": "בהירה", "gui_settings_bridge_moat_radio_option": "בקש גשר מן torproject.org", "gui_settings_bridge_custom_placeholder": "הכנס כתובת:פתחה (אחד לשורה)", "moat_captcha_label": "פתור את ה־CAPTCHA כדי לבקש גשר.", "moat_captcha_placeholder": "הכנס את התווים מהתמונה", "moat_captcha_reload": "טען מחדש", "gui_general_settings_window_title": "כללי", "gui_status_indicator_chat_working": "התחלה…", "mode_settings_title_label": "כותרת מותאמת אישית", "gui_settings_bridge_use_checkbox": "להשתמש בגשר", "gui_status_indicator_receive_stopped": "נעצר", "gui_status_indicator_chat_stopped": "נעצר", "gui_status_indicator_share_stopped": "נעצר", "gui_autoconnect_configure": "הגדרות רשת", "mode_settings_advanced_toggle_show": "הצג הגדרות מתקדמות" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/hi.json000066400000000000000000000406011521174352300271060ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} रीड होने योग्य फाइल नहीं है।", "other_page_loaded": "पता लोड हो गया", "close_on_autostop_timer": "ऑटो-स्टॉप टाइमर बंद होने के कारण बंद हो गया", "closing_automatically": "स्थानांतरण पूरा होने के कारण रुक गया", "large_filesize": "चेतावनी: बड़े आकार की फाइल साझा करने में घंटों लग सकते हैं", "gui_drag_and_drop": "साझा शुरू करने के लिए फाइलों एवं फोल्डरों को ड्रैग और ड्रॉप करें", "gui_add": "जोड़ें", "gui_add_files": "फाइल जोड़ें", "gui_add_folder": "फोल्डर जोड़ें", "gui_choose_items": "चुनें", "gui_share_start_server": "साझा शुरू करें", "gui_share_stop_server": "साझा बंद करें", "gui_share_stop_server_autostop_timer": "साझा बंद करें ({})", "gui_receive_start_server": "रिसीव मोड चालू करें", "gui_receive_stop_server": "रिसीव मोड बंद करें", "gui_receive_stop_server_autostop_timer": "रिसीव मोड बंद करें ({} remaining)", "gui_copy_url": "पता कॉपी करें", "gui_canceled": "रद्द हो गया", "gui_copied_url_title": "OnionShare पता कॉपी हो गया", "gui_copied_url": "अनियन शेयर पता क्लिपबोर्ड में कॉपी हो गया", "gui_please_wait": "शुरू हो रहा है... रद्द करने के लिए क्लिक करें।", "gui_quit_warning_quit": "छोड़ें", "zip_progress_bar_format": "कॉम्प्रेस हो रहा है: %p%", "gui_settings_window_title": "सेटिंग्स", "gui_settings_autoupdate_label": "नए संस्करण की जांच करें", "gui_settings_autoupdate_option": "जब कोई नया संस्करण आए तो मुझे सूचित करें", "gui_settings_autoupdate_timestamp": "अंतिम जांच: {}", "gui_settings_autoupdate_timestamp_never": "कभी नहीं", "gui_settings_autoupdate_check_button": "नए संस्करण की जांच करें", "gui_settings_connection_type_label": "OnionShare को Tor से कैसे जुड़ना चाहिए?", "gui_settings_connection_type_bundled_option": "OnionShare में निर्मित Tor संस्करण का उपयोग करें", "gui_settings_connection_type_automatic_option": "Tor Browser के साथ ऑटो-कॉन्फ़िगरेशन का प्रयास करें", "gui_settings_connection_type_control_port_option": "कंट्रोल पोर्ट का उपयोग करके कनेक्ट करें", "gui_settings_connection_type_socket_file_option": "सॉकेट फ़ाइल का उपयोग करके कनेक्ट करें", "gui_settings_connection_type_test_button": "टोर से कनेक्शन टेस्ट करे", "gui_settings_control_port_label": "कण्ट्रोल पोर्ट", "gui_settings_socket_file_label": "सॉकेट फ़ाइल", "gui_settings_socks_label": "SOCKS पोर्ट", "gui_settings_authenticate_no_auth_option": "कोई प्रमाणीकरण या कुकी प्रमाणीकरण नहीं", "gui_settings_authenticate_password_option": "पासवर्ड", "gui_settings_password_label": "पासवर्ड", "gui_settings_tor_bridges": "Tor ब्रिज सपोर्ट", "gui_settings_meek_lite_expensive_warning": "चेतावनी: टॉर प्रोजेक्ट को चलाने के लिए मीक_लाइट ब्रिज एक अच्छा विकल्प नहीं हैं।

    केवल उनका उपयोग तभी करें यदि ओबीफएस4 ट्रांसपोर्ट, या अन्य सामान्य ब्रिड्जेस के माध्यम से टोर से सीधे कनेक्ट करने में आप असमर्थ हों।", "gui_settings_button_save": "सहेजें", "gui_settings_button_cancel": "रद्द करे", "gui_settings_button_help": "मदद", "settings_error_unknown": "टोर कंट्रोलर से कनेक्ट नहीं हो सकता क्योंकि आपकी सेटिंग्स गलत हैः ।", "settings_error_automatic": "टोर कंट्रोलर से कनेक्ट नहीं हो सका हैः । क्या टोर ब्राउज़र (torproject.org से उपलब्ध) बैकग्राउंड में चल रहा है?", "settings_error_socket_port": "{}:{} पर टोर कंट्रोलर से कनेक्ट नहीं हो पा रहा है।", "settings_error_socket_file": "सॉकेट फ़ाइल {} का उपयोग करके टोर कंट्रोलर से कनेक्ट नहीं हो पा रहा है।", "settings_error_auth": "{}:{} से कनेक्टेड है, लेकिन ऑथेंटिकेट नहीं कर सकते। शायद यह एक टोर कंट्रोलर नहीं है?", "settings_error_missing_password": "टोर से कनेक्टेड हैः , लेकिन इसे ऑथेंटिकेट करने के लिए एक पासवर्ड की आवश्यकता है।", "settings_error_unreadable_cookie_file": "टोर कंटोलर से कनेक्टेड है, लेकिन पासवर्ड गलत हो सकता है, या आपके यूजर को कुकी फ़ाइल को रीड की अनुमति नहीं है।", "settings_error_bundled_tor_not_supported": "ओनियनशेयर के साथ आने वाले टोर वर्शन का उपयोग विंडोज या मैकओएस पर डेवलपर मोड में काम नहीं करता है।", "settings_error_bundled_tor_timeout": "टोर से कनेक्ट होने में बहुत अधिक समय लग रहा है. हो सकता है कि आप इंटरनेट से कनेक्ट न हों, या आपके पास सिस्टम की घड़ी गलत हो?", "settings_error_bundled_tor_broken": "अनियन शेयर टोर से कनेक्ट नहीं हो सका :\n{}", "error_tor_protocol_error": "टोर के साथ एक एरर हुई: {}", "gui_tor_connection_ask_open_settings": "हां", "gui_tor_connection_ask_quit": "छोड़ें", "gui_status_indicator_share_started": "शेयरिंग", "systray_menu_exit": "छोड़ें", "gui_all_modes_history": "इतिहास", "gui_all_modes_transfer_started": "द्वारा शुरू किया गया", "gui_all_modes_transfer_finished_range": "ट्रांस्फरेद {} - {}", "gui_all_modes_transfer_finished": "ट्रांस्फरेद {}", "gui_all_modes_transfer_canceled_range": "रद्द {} - {}", "gui_all_modes_transfer_canceled": "रद्द {}", "gui_stop_server_autostop_timer_tooltip": "ऑटो-स्टॉप टाइमर {} पर बंद होगा", "gui_start_server_autostart_timer_tooltip": "ऑटो-स्टार्ट टाइमर {} पर बंद होगा", "gui_waiting_to_start": "{} में शुरू होने के लिए शेडयूल है। रद्द करने के लिए क्लिक करें।", "incorrect_password": "पासवर्ड गलत है", "gui_show_qr_code": "क्यूआर कोड दिखाएं", "gui_chat_stop_server": "चैट सर्वर बंद करें", "gui_chat_start_server": "चैट सर्वर शुरू करें", "gui_file_selection_remove_all": "सभी हटाएं", "gui_remove": "हटाएं", "gui_qr_code_dialog_title": "अनियन शेयर क्यूआर कोड", "gui_receive_flatpak_data_dir": "चूँकि आपने फ़्लैटपैक का उपयोग करके OnionShare स्थापित किया है, इसलिए आपको फ़ाइलों को ~/OnionShare फ़ोल्डर में सहेजना होगा।", "history_receive_read_message_button": "मैसेज पढ़े", "error_port_not_available": "ओनियनशेयर पोर्ट उपलब्ध नहीं है", "gui_rendezvous_cleanup_quit_early": "जल्दी छोड़ो", "gui_rendezvous_cleanup": "यह सुनिश्चित करने के लिए कि आपकी फ़ाइलें सक्सेस्स्फुल्ली ट्रांसफर हो गई हैं, टोर सर्किट के बंद होने की प्रतीक्षा कर रहा है।\n\nइसमें कुछ मिनट लग सकते हैं।", "mode_settings_website_disable_csp_checkbox": "कंटेंट सिक्योरिटी पॉलिसी हैडर ना भेजे (आपकी वेबसाइट को थर्ड पार्टी रिसोर्सेज का उपयोग करने की अनुमति देता है)", "mode_settings_receive_webhook_url_checkbox": "नोटिफिकेशन वेबहुक का प्रयोग करें", "mode_settings_receive_disable_files_checkbox": "फ़ाइलें अपलोड करना अक्षम करें", "mode_settings_receive_disable_text_checkbox": "टेक्स्ट सबमिट करना अक्षम करें", "mode_settings_receive_data_dir_browse_button": "ब्राउज", "mode_settings_share_autostop_sharing_checkbox": "फ़ाइलें भेजे जाने के बाद शेरिंग करना बंद करें (अलग-अलग फ़ाइलों को डाउनलोड करने की अनुमति देने के लिए अनचेक करें)", "mode_settings_autostop_timer_checkbox": "निर्धारित समय पर अनियन सर्विस बंद करें", "mode_settings_autostart_timer_checkbox": "निर्धारित समय पर अनियन सर्विस शुरू करें", "mode_settings_public_checkbox": "यह एक पब्लिक अनियन शेयर सर्विस है (कि अक्षम करे )", "mode_settings_title_label": "कस्टम टाइटल", "mode_settings_advanced_toggle_hide": "एडवांस्ड सेटिंग छुपाए", "mode_settings_advanced_toggle_show": "एडवांस्ड सेटिंग दिखाएं", "gui_quit_warning_cancel": "रद्द करना", "gui_quit_warning_description": "आपके कुछ टैब में शेरिंग सक्रिय है। यदि आप छोड़ते हैं, तो आपके सभी टैब बंद हो जाएंगे। क्या आप वाकई छोड़ना चाहते हैं?", "gui_quit_warning_title": "क्या आप सुनिचित हैः?", "gui_close_tab_warning_cancel": "रद्द करे", "gui_close_tab_warning_close": "ठीक है", "gui_close_tab_warning_website_description": "आप सक्रिय रूप से एक वेबसाइट होस्ट कर रहे हैं। क्या आप वाकई इस टैब को बंद करना चाहते हैं?", "gui_close_tab_warning_receive_description": "आप फ़ाइलें प्राप्त करने की प्रक्रिया में हैं. क्या आप वाकई इस टैब को बंद करना चाहते हैं?", "gui_close_tab_warning_share_description": "आप फ़ाइलें भेजने की प्रक्रिया में हैं. क्या आप वाकई इस टैब को बंद करना चाहते हैं?", "gui_close_tab_warning_persistent_description": "यह टैब पर्सिस्टेंट है। यदि आप इसे बंद करते हैं तो आप अनियन एड्रेस खो देंगे जिसका आप उपयोग कर रहे है। क्या आप वाकई इसे बंद करना चाहते हैं?", "gui_close_tab_warning_title": "क्या आप सुनिश्त है?", "gui_please_wait_no_button": "शुरू हो रहा हैः …", "gui_hide": "छुपाइ", "gui_reveal": "दिखाए", "gui_qr_label_auth_string_title": "प्राइवेट कि", "gui_qr_label_url_title": "अनियन शेयर एड्रेस", "gui_copied_client_auth": "प्राइवेट कि क्लिपबोर्ड पर कॉपी हो गयी हैः", "gui_copied_client_auth_title": "प्राइवेट कि कॉपी हो गयी हैः", "gui_copy_client_auth": "प्राइवेट कि कॉपी करें", "gui_new_tab_tooltip": "एक नया टैब खोलें", "gui_settings_theme_light": "हल्का", "gui_settings_theme_dark": "गहरा", "gui_all_modes_clear_history": "सभी को साफ़ करें", "gui_new_tab": "नया टॅब", "gui_tab_name_chat": "चैट", "moat_captcha_placeholder": "छवि से अक्षर दर्ज करें", "gui_status_indicator_receive_working": "चालू किया जा रहा है…", "gui_settings_bridge_none_radio_option": "ब्रिड्जेस का प्रयोग न करें", "gui_settings_bridge_custom_placeholder": "type address:port (one per line)", "gui_settings_bridge_moat_radio_option": "Torproject.org से एक पुल का अनुरोध करें", "moat_captcha_submit": "जमा करना", "gui_tab_name_receive": "प्राप्ति", "gui_general_settings_window_title": "जनरल", "gui_settings_language_label": "भाषा", "gui_status_indicator_share_working": "चालू किया जा रहा है…", "gui_status_indicator_receive_started": "प्राप्त कर रहे हैं", "gui_tab_name_share": "शेयर", "gui_tab_name_website": "वेबसाइट", "gui_status_indicator_chat_working": "चालू किया जा रहा है…", "gui_settings_theme_label": "थीम", "gui_settings_theme_auto": "ऑटो", "moat_captcha_label": "पुल का अनुरोध करने के लिए कैप्चा को हल करें।", "moat_solution_empty_error": "छवि से अक्षर दर्ज करें", "gui_autoconnect_start": "टोर से कनेक्ट करें", "moat_captcha_reload": "Reload", "gui_status_indicator_share_stopped": "रुका हुआ", "gui_status_indicator_receive_stopped": "रुका हुआ", "gui_status_indicator_chat_stopped": "रुका हुआ" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/hr.json000066400000000000000000000522441521174352300271250ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} nije čitljiva datoteka.", "other_page_loaded": "Adresa učitana", "incorrect_password": "Neispravna lozinka", "close_on_autostop_timer": "Prekinuto, jer je vrijeme timera za automatsko prekidanje isteklo", "closing_automatically": "Prekinuto, jer je prijenos završen", "large_filesize": "Upozorenje: Slanje velike količine podataka može trajati satima", "gui_drag_and_drop": "Povuci i ispusti datoteke i mape koje želiš dijeliti", "gui_add": "Dodaj", "gui_add_files": "Dodaj datoteke", "gui_add_folder": "Dodaj mapu", "gui_choose_items": "Odaberi", "gui_share_start_server": "Pokreni dijeljenje", "gui_share_stop_server": "Prekini dijeljenje", "gui_share_stop_server_autostop_timer": "Prekini dijeljenje ({})", "gui_stop_server_autostop_timer_tooltip": "Timer za automatsko prekidanje završava u {}", "gui_start_server_autostart_timer_tooltip": "Timer za automatsko pokretanje završava u {}", "gui_receive_start_server": "Pokreni modus primanja", "gui_receive_stop_server": "Prekini modus primanja", "gui_receive_stop_server_autostop_timer": "Prekini modus primanja ({} preostalo)", "gui_copy_url": "Kopiraj adresu", "gui_canceled": "Prekinuto", "gui_copied_url_title": "OnionShare adresa je kopirana", "gui_copied_url": "OnionShare adresa je kopirana u međuspremnik", "gui_waiting_to_start": "Planirano pokretanje za {}. Pritisni za prekid.", "gui_please_wait": "Pokretanje … Pritisni za prekid.", "gui_quit_warning_quit": "Prekini", "zip_progress_bar_format": "Komprimiranje: %p%", "gui_settings_window_title": "Postavke", "gui_settings_autoupdate_label": "Traži nove verzije", "gui_settings_autoupdate_option": "Obavijesti me o novim verzijama", "gui_settings_autoupdate_timestamp": "Zadnja provjera: {}", "gui_settings_autoupdate_timestamp_never": "Nikada", "gui_settings_autoupdate_check_button": "Traži nove verzije", "gui_settings_connection_type_label": "Kako se OnionShare treba povezati s Torom?", "gui_settings_connection_type_bundled_option": "Koristi verziju Tora koja je ugrađena u OnionShareu", "gui_settings_connection_type_automatic_option": "Pokušaj automatsku konfiguraciju s Tor preglednikom", "gui_settings_connection_type_control_port_option": "Poveži se koristeći kontrolni priključak", "gui_settings_connection_type_socket_file_option": "Poveži se koristeći socket datoteku", "gui_settings_connection_type_test_button": "Ispitaj vezu s Torom", "gui_settings_control_port_label": "Kontrolni priključak", "gui_settings_socket_file_label": "Socket datoteka", "gui_settings_socks_label": "SOCKS priključak", "gui_settings_authenticate_no_auth_option": "Bez autentifikacije ili autentifikacija kolačićem", "gui_settings_authenticate_password_option": "Lozinka", "gui_settings_password_label": "Lozinka", "gui_settings_tor_bridges": "Povezati se pomoću Torovog mosta?", "gui_settings_meek_lite_expensive_warning": "Upozorenje: meek_lite mostovi troše velike količine resursa za pokretanje Tor projekta.

    Koristi ih samo ako se ne možeš povezati s Torom direktno putem obfs4 prijenosa ili drugih normalnih mostova.", "gui_settings_tor_bridges_invalid": "Nijedan od dodanih mostova ne funkcionira. Provjeri ih ili dodaj druge.", "gui_settings_button_save": "Spremi", "gui_settings_button_cancel": "Odustani", "gui_settings_button_help": "Pomoć", "settings_error_unknown": "Nije moguće povezivanje s Tor kontrolerom, jer tvoje postavke nemaju smisla.", "settings_error_automatic": "Neuspjelo povezivanje s Tor kontrolerom. Radi li Tor preglednik (dostupan na torproject.org) u pozadini?", "settings_error_socket_port": "Nije moguće povezivanje s Tor kontrolerom pri {}:{}.", "settings_error_socket_file": "Nije moguće povezivanje s Tor kontrolerom pomoću socket datoteke {}.", "settings_error_auth": "Povezan s {}:{}, ali autentifikacija nije moguća. Možda ovo nije Tor kontroler?", "settings_error_missing_password": "Povezan s Tor kontrolerom, ali zahtijeva lozinku za autentifikaciju.", "settings_error_unreadable_cookie_file": "Povezan s Tor kontrolerom, ali je lozinka možda pogrešna ili tvom korisniku nije dozvoljeno čitati datoteku kolačića.", "settings_error_bundled_tor_not_supported": "Tor verzija koja se isporučuje s OnionShare ne radi u razvojnom modusu operacijskih sustava Windows ili macOS.", "settings_error_bundled_tor_timeout": "Povezivanje s Torom traje predugo. Možda nemaš vezu s internetom ili imaš netočno postavljen sat sustava?", "settings_error_bundled_tor_broken": "Neuspjelo povezivanje OnionSharea s Torom:\n{}", "settings_test_success": "Povezan s Tor kontrolerom.\n\nTor verzija: {}\nPodržava kratkotrajne Onion usluge: {}.\nPodržava autentifikaciju klijenta: {}.\nPodržava .onion adrese sljedeće generacije: {}.", "error_tor_protocol_error": "Dogodila se greška s Torom: {}", "connecting_to_tor": "Povezivanje s Tor mrežom", "update_available": "Objavljen je novi OnionShare. Pritisni ovdje za preuzimanje.

    Trenutačno koristiš verziju {}, a najnovija verzija je {}.", "update_error_check_error": "Neuspjela pretraga za novom verzijom: možda nemaš vezu s Torom ili OnionShare web-stranica ne radi?", "update_error_invalid_latest_version": "Neuspjela pretraga za novom verzijom: OnionShare web-stranica kaže, da je zadnja verzija neprepoznatljiva „{}” …", "update_not_available": "Koristiš najnoviji OnionShare.", "gui_tor_connection_ask": "Otvoriti postavke za podešavanje veze s Torom?", "gui_tor_connection_ask_open_settings": "Da", "gui_tor_connection_ask_quit": "Zatvori", "gui_tor_connection_error_settings": "U postavkama promijeni način na koji se OnionShare povezuje s Tor mrežom.", "gui_tor_connection_canceled": "Neuspjelo povezivanje s Torom.\n\nProvjeri vezu s internetom, a zatim ponovo pokreni OnionShare i postavi njegovu vezu s Torom.", "gui_tor_connection_lost": "Prekinuta veza s Torom.", "gui_server_started_after_autostop_timer": "Vrijeme timera za automatsko prekidanje je isteklo prije nego što je poslužitelj započeo. Izradi novo dijeljenje.", "gui_server_autostop_timer_expired": "Vrijeme timera za automatsko prekidanje je već isteklo. Za pokretanje dijeljenja, podesi vrijeme.", "gui_server_autostart_timer_expired": "Planirano vrijeme je već prošlo. Za pokretanje dijeljenja, podesi vrijeme.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Vrijeme za automatsko prekidanje ne može biti isto kao vrijeme za automatsko pokretanje ili ranije. Za pokretanje dijeljenja, podesi vrijeme.", "gui_share_url_description": "Svatko s ovom OnionShare adresom i privatnim ključem može preuzeti tvoje datoteke koristeći Tor preglednik: ", "gui_website_url_description": "Svatko s ovom OnionShare adresom i privatnim ključem može posjetiti tvoju web-stranicu koristeći Tor preglednik: ", "gui_receive_url_description": "Svatko s ovom OnionShare adresom i privatnim ključem može prenijeti datoteke na tvoje računalo koristeći Tor preglednik: ", "gui_url_label_persistent": "Ovo se dijeljenje neće automatski prekinuti.

    Svako naredno dijeljenje ponovo koristi istu adresu. (Za korištenje jednokratne adrese, u postavkama isključi opciju „Uvijek otvori ovu karticu kad se pokrene OnionShare”.)", "gui_url_label_stay_open": "Ovo se dijeljenje neće automatski prekinuti.", "gui_url_label_onetime": "Ovo će se dijeljenje prekinuti nakon prvog završavanja.", "gui_url_label_onetime_and_persistent": "Ovo se dijeljenje neće automatski prekinuti.

    Svako naredno dijeljenje će ponovo koristiti istu adresu. (Za korištenje jednokratne adrese, u postavkama isključi opciju „Uvijek otvori ovu karticu kad se pokrene OnionShare”.)", "gui_status_indicator_share_stopped": "Prekinuto", "gui_status_indicator_share_working": "Pokretanje …", "gui_status_indicator_share_scheduled": "Planirano …", "gui_status_indicator_share_started": "Dijeljenje", "gui_status_indicator_receive_stopped": "Prekinuto", "gui_status_indicator_receive_working": "Pokretanje …", "gui_status_indicator_receive_scheduled": "Planirano …", "gui_status_indicator_receive_started": "Primanje", "gui_file_info": "{} datoteke, {}", "gui_file_info_single": "{} datoteka, {}", "history_in_progress_tooltip": "{} u tijeku", "history_completed_tooltip": "{} završeno", "history_requests_tooltip": "{} web zahtjeva", "error_cannot_create_data_dir": "Neuspjelo stvaranje mape za OnionShare podatke: {}", "gui_receive_mode_warning": "Modus primanja dozvoljava korisnicima prenijeti datoteke na tvoje računalo.

    Pri tome neke datoteke mogu preuzeti kontrolu nad tvojim računalom, ako ih otvoriš. Otvaraj samo stvari od ljudi kojima vjeruješ ili ako znaš što radiš.", "gui_settings_language_label": "Željeni jezik", "gui_settings_language_changed_notice": "Za mijenjanje jezika ponovo pokreni OnionShare.", "systray_menu_exit": "Izađi", "systray_page_loaded_title": "Stranica učitana", "systray_page_loaded_message": "OnionShare adresa učitana", "systray_share_started_title": "Dijeljenje pokrenuto", "systray_share_started_message": "Počinje slanje datoteka nekome", "systray_share_completed_title": "Dijeljenje završeno", "systray_share_completed_message": "Završeno je slanje datoteka", "systray_share_canceled_title": "Dijeljenje prekinuto", "systray_share_canceled_message": "Netko je prekinuo primanje tvojih datoteka", "systray_receive_started_title": "Primanje pokrenuto", "systray_receive_started_message": "Netko ti šalje datoteke", "gui_all_modes_history": "Kronologija", "gui_all_modes_clear_history": "Izbriši sve", "gui_all_modes_transfer_started": "Pokrenuto {}", "gui_all_modes_transfer_finished_range": "Preneseno {} – {}", "gui_all_modes_transfer_finished": "Preneseno {}", "gui_all_modes_transfer_canceled_range": "Prekinuto {} – {}", "gui_all_modes_transfer_canceled": "Prekinuto {}", "gui_all_modes_progress_complete": "%p %, {0:s} proteklo.", "gui_all_modes_progress_starting": "{0:s}, %p % (izračunavanje)", "gui_all_modes_progress_eta": "{0:s}, procijenjeno: {1:s}, %p %", "gui_share_mode_no_files": "Nijedna datoteka još nije poslana", "gui_share_mode_autostop_timer_waiting": "Završavanje slanja …", "gui_website_mode_no_files": "Nijedna web-stranica još nije dijeljena", "gui_receive_mode_no_files": "Nijedna datoteka još nije primljena", "gui_receive_mode_autostop_timer_waiting": "Završavanje primanja …", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "mode_settings_website_disable_csp_checkbox": "Ne šalji standardno zaglavlje politike sigurnosti sadržaja (omogućuje tvojim web-stranicama koristiti strane resurse)", "mode_settings_receive_data_dir_browse_button": "Pregledaj", "mode_settings_receive_data_dir_label": "Spremi datoteke u", "mode_settings_share_autostop_sharing_checkbox": "Prekini dijeljenje nakon što se datoteke pošalju (deaktiviraj za preuzimanje pojedinačnih datoteka)", "mode_settings_autostop_timer_checkbox": "Prekini onion uslugu u planirano vrijeme", "mode_settings_autostart_timer_checkbox": "Pokreni onion uslugu u planirano vrijeme", "mode_settings_public_checkbox": "Ovo je javna OnionShare usluga (deaktivira privatni ključ)", "mode_settings_persistent_checkbox": "Uvijek otvori ovu karticu kad se pokrene OnionShare (onion adresa će ostati ista)", "mode_settings_advanced_toggle_hide": "Sakrij napredne postavke", "mode_settings_advanced_toggle_show": "Prikaži napredne postavke", "gui_quit_warning_cancel": "Odustani", "gui_quit_warning_description": "Prekinuti i zatvoriti sve kartice, iako je u nekima od njih dijeljenje aktivno?", "gui_quit_warning_title": "Prekinuti OnionShare?", "gui_close_tab_warning_cancel": "Odustani", "gui_close_tab_warning_close": "U redu", "gui_close_tab_warning_website_description": "Zatvoriti karticu koja hostira web mjesto?", "gui_close_tab_warning_receive_description": "Zatvoriti karticu koja prima datoteke?", "gui_close_tab_warning_share_description": "Zatvoriti karticu koja šalje datoteke?", "gui_close_tab_warning_persistent_description": "Zatvoriti trajnu karticu i izgubiti onion adresu koju koristi?", "gui_close_tab_warning_title": "Zatvoriti karticu?", "gui_new_tab_website_button": "Objavi web-stranicu", "gui_new_tab_receive_button": "Primaj datoteke", "gui_new_tab_share_button": "Dijeli datoteke", "gui_new_tab_tooltip": "Otvori novu karticu", "gui_new_tab": "Nova kartica", "gui_receive_flatpak_data_dir": "Budući da je tvoj OnionShare instaliran pomoću Flatpak-a, datoteke moraš spremiti u jednu mapu u ~/OnionShare.", "gui_tab_name_chat": "Razgovor", "gui_new_tab_chat_button": "Razgovaraj anonimno", "gui_chat_start_server": "Pokreni poslužitelja za razgovor", "gui_chat_stop_server": "Prekini poslužitelja za razgovor", "gui_tab_name_receive": "Primi", "gui_open_folder_error": "Neuspjelo otvaranje mape s xdg-open. Datoteka se nalazi ovdje: {}", "gui_tab_name_website": "Web-stranica", "gui_tab_name_share": "Dijeli", "gui_qr_code_dialog_title": "OnionShare QR-kod", "gui_show_qr_code": "Prikaži QR-kod", "gui_file_selection_remove_all": "Ukloni sve", "gui_remove": "Ukloni", "gui_main_page_chat_button": "Pokreni razgovor", "gui_main_page_website_button": "Pokreni hosting", "gui_main_page_receive_button": "Pokreni primanje", "gui_main_page_share_button": "Pokreni dijeljenje", "gui_chat_url_description": "Svatko s ovom OnionShare adresom i privatnim ključem može se pridružiti ovoj sobi za razgovor koristeći Tor preglednik: ", "error_port_not_available": "OnionShare priključak nije dostupan", "gui_rendezvous_cleanup_quit_early": "Prekini preuranjeno", "gui_rendezvous_cleanup": "Čekanje na zatvarnje Tor lanaca, kako bi se osigurao tvoj prijenos datoteka.\n\nOvo može potrajati nekoliko minuta.", "gui_color_mode_changed_notice": "Za prikaz novih boja ponovo pokreni OnionShare .", "history_receive_read_message_button": "Čitaj poruku", "mode_settings_receive_disable_files_checkbox": "Onemogući prenošenje datoteka", "mode_settings_receive_disable_text_checkbox": "Onemogući slanje teksta", "mode_settings_title_label": "Prilagođeni naslov", "gui_status_indicator_chat_scheduled": "Planirano …", "gui_status_indicator_chat_working": "Pokretanje …", "mode_settings_receive_webhook_url_checkbox": "Koristi automatsko obavještavanje", "gui_status_indicator_chat_started": "Razgovor u tijeku", "gui_status_indicator_chat_stopped": "Prekinuto", "gui_server_doesnt_support_stealth": "Nažalost, ova Tor verzija ne podržava autentifikaciju klijenata. Pokušaj s novijom Tor verzijom ili koristi „javni” način rada ako ne mora biti privatni.", "gui_settings_theme_dark": "Tamna", "gui_settings_theme_light": "Svjetla", "gui_settings_theme_auto": "Automatski", "gui_settings_theme_label": "Tema", "gui_client_auth_instructions": "Zatim pošalji privatni ključ za dozvoljavanje pristupa tvoji OnionShare usluzi:", "gui_url_instructions_public_mode": "Pošalji donju OnionShare adresu:", "gui_url_instructions": "Najprije pošalji donju OnionShare adresu:", "gui_chat_url_public_description": "Svatko s ovom OnionShare adresom može se pridružiti ovoj sobi za razgovor koristeći Tor preglednik: ", "gui_receive_url_public_description": "Svatko s ovom OnionShare adresom može prenijeti datoteke na tvoje računalo koristeći Tor preglednik: ", "gui_website_url_public_description": "Svatko s ovom OnionShare adresom može posjetiti tvoju web-stranicu koristeći Tor preglednik: ", "gui_share_url_public_description": "Svatko s ovom OnionShare adresom može preuzeti tvoje datoteke koristeći Tor preglednik: ", "gui_please_wait_no_button": "Pokretanje …", "gui_hide": "Sakrij", "gui_reveal": "Otkrij", "gui_qr_label_auth_string_title": "Privatni ključ", "gui_qr_label_url_title": "OnionShare adresa", "gui_copied_client_auth": "Privatni ključ je kopiran u međuspremnik", "gui_copied_client_auth_title": "Privatni ključ je kopiran", "gui_copy_client_auth": "Kopiraj privatni ključ", "gui_tor_settings_window_title": "Tor postavke", "gui_settings_controller_extras_label": "Tor postavke", "gui_settings_bridge_use_checkbox": "Koristi most", "gui_settings_bridge_radio_builtin": "Odaberi jedan ugrađeni most", "gui_settings_bridge_none_radio_option": "Nemoj koristiti most", "gui_settings_bridge_moat_radio_option": "Zatraži most od torproject.org", "gui_settings_bridge_moat_button": "Zatraži novi most", "gui_settings_tor_bridges_label": "Mostovi pomažu tvom prometu da uđe u Tor mrežu gdje je pristup Toru blokiran. Ovisno o tome gdje se nalaziš, jedan most može funkcionirati bolje od drugog.", "gui_settings_version_label": "Koristiš OnionShare {}", "gui_settings_help_label": "Trebaš pomoć? Pogledaj docs.onionshare.org", "gui_settings_bridge_custom_placeholder": "upiši adresa:priključak (jedan unos po retku)", "gui_settings_moat_bridges_invalid": "Još nisi zatražio/zatražila most od torproject.org.", "gui_settings_stop_active_tabs_label": "U nekim se karticama pokreću usluge.\nZa mijenjanje postavki Tora, moraš zaustaviti sve usluge.", "mode_settings_website_custom_csp_checkbox": "Šalji prilagođeno zaglavlje politike sigurnosti sadržaja", "moat_captcha_submit": "Pošalji", "moat_captcha_label": "Riješi CAPTCHA ako želiš zatražiti most.", "moat_captcha_placeholder": "Upiši znakove koji se nalaze u slici", "moat_captcha_reload": "Učitaj ponovo", "moat_bridgedb_error": "Nije bilo moguće kontaktirati BridgeDB.", "mode_tor_not_connected_label": "OnionShare nije povezan s Tor mrežom", "moat_captcha_error": "Neispravno rješenje. Pokušaj ponovo.", "moat_solution_empty_error": "Upiši znakove koji se nalaze u slici", "gui_enable_autoconnect_checkbox": "Poveži se na Tor automatski", "gui_autoconnect_failed_to_connect_to_tor": "Neuspjelo povezivanje s Torom", "gui_autoconnect_connection_error_msg": "Provjeri jesi li povezan(a) na internet.", "gui_autoconnect_bridge_detect_automatic": "Automatski odredi moju zemlju prema mojoj IP adresi za postavke mosta", "gui_autoconnect_bridge_detect_manual": "Ručno odaberi moju zemlju za postavke mosta", "gui_autoconnect_start": "Poveži se na Tor", "gui_autoconnect_configure": "Mrežne postavke", "gui_autoconnect_no_bridge": "Pokušaj ponovo bez mostova", "gui_autoconnect_try_again_without_a_bridge": "Pokušaj ponovo bez mostova", "gui_autoconnect_circumventing_censorship": "Rješavanje problema s povezivanjem …", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Zaobilaženje cenzure …", "gui_autoconnect_circumventing_censorship_got_bridges": "Mostovi su uspostavljeni. Ponovno povezivanje na Tor …", "gui_general_settings_window_title": "Opće", "gui_autoconnect_could_not_connect_to_tor_api": "Neuspjelo povezivanje s Tor API-jem. Prije ponovnog pokušaja provjeri vezu s internetom.", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Zahtijevanje mostova od Tor API-ja za zaobilaženja cenzure …", "moat_contact_label": "Kontaktiranje BridgeDB-a …", "gui_autoconnect_description": "OnionShare koristi Tor mrežu, koju pokreću tisuće volontera širom svijeta.", "gui_autoconnect_bridge_setting_options": "Postavke mosta", "gui_autoconnect_trying_to_connect_to_tor": "Povezivanje s Torom …", "gui_autoconnect_bridge_description": "Možda ćeš se moći povezati pomoću mosta ako je tvoja internetska veza cenzurirana.", "gui_settings_bridge_custom_radio_option": "Omogući most o kojem si saznao/la iz pouzdanog izvora", "waitress_web_server_error": "Došlo je do problema pri pokretanju web servera", "gui_autoconnect_circumventing_censorship_starting_meek": "Uspostavljanje meek mosta za domain-fronting …", "gui_dragdrop_sandbox_flatpak": "Kako bi Flatpak sandbox bio sigurniji, funkcija povlačenja i ispuštanja nije podržana. Umjesto toga koristi gumbe „Dodaj datoteke” i „Dodaj mapu” za biranje datoteka.", "gui_close_tab_warning_chat_description": "Zatvoriti karticu koja hostira server za razgovore?", "gui_chat_mode_explainer": "Modus razgovora omogućuje interaktivni razgovor s drugima u Tor pregledniku.

    Povijest razgovora se ne sprema u OnionShareu. Povijest razgovora će nestati kada zatvoriš Tor preglednik.", "mode_settings_persistent_autostart_on_launch_checkbox": "Automatski pokreni ovu onion uslugu kad se pokrene OnionShare" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/hu.json000066400000000000000000000376561521174352300271420ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} nem egy olvasható fájl.", "other_page_loaded": "Cím betöltve", "close_on_autostop_timer": "Leállt, mert lejárt az automatikus leállítás időzítője", "closing_automatically": "Leállítva, mert az átvitel teljes és befejezett", "large_filesize": "Figyelem: A nagyobb fájlok elküldése órákat vehet igénybe", "systray_menu_exit": "Kilépés", "gui_drag_and_drop": "Húzzon ide fájlt vagy mappát a megosztás megkezdéséhez", "gui_add": "Hozzáadás", "gui_choose_items": "Kiválaszt", "gui_share_start_server": "Megosztás kezdése", "gui_share_stop_server": "Megosztás leállítása", "gui_share_stop_server_autostop_timer": "Megosztás leállítása ({})", "gui_receive_start_server": "Fogadó mód indítása", "gui_receive_stop_server": "Fogadó mód leállítása", "gui_receive_stop_server_autostop_timer": "Fogadó mód leállítása ({} van hátra)", "gui_copy_url": "Cím másolása", "gui_canceled": "Törölve", "gui_copied_url_title": "OnionShare-cím másolva", "gui_copied_url": "OnionShare-cím a vágólapra másolva", "gui_please_wait": "Indítás... Kattints a megszakításhoz.", "gui_quit_warning_quit": "Kilépés", "zip_progress_bar_format": "Tömörítés: %p%", "gui_settings_window_title": "Beállítások", "gui_settings_autoupdate_label": "Új verzió keresése", "gui_settings_autoupdate_option": "Értesítést kérek, ha új verzió érhető el", "gui_settings_autoupdate_timestamp": "Utoljára ellenőrizve: {}", "gui_settings_autoupdate_timestamp_never": "Soha", "gui_settings_autoupdate_check_button": "Új Verzió keresése", "gui_settings_connection_type_label": "Hogyan csatlakozzon az OnionShare a Tor-hoz?", "gui_settings_connection_type_bundled_option": "Beépített Tor-verzió használata", "gui_settings_connection_type_automatic_option": "Automatikus konfiguráció a Tor-ral", "gui_settings_connection_type_control_port_option": "Csatlakozás kontroll port által", "gui_settings_connection_type_socket_file_option": "Szokettfájl használata", "gui_settings_connection_type_test_button": "Tor-kapcsolat tesztelése", "gui_settings_control_port_label": "Kontroll port", "gui_settings_socket_file_label": "Szokettfájl", "gui_settings_authenticate_no_auth_option": "Nincs hitelesítés, vagy sütik általi hitelesítés", "gui_settings_authenticate_password_option": "Jelszó", "gui_settings_password_label": "Jelszó", "gui_settings_tor_bridges": "Tor híd támogatása", "gui_settings_meek_lite_expensive_warning": "Figyelem: A meek_lite hidak fenntartása nagyon költséges a Tor Project számára.

    Csak akkor használd őket, ha nem tudsz közetlenül a Tor-hoz csatlakozni az obfs4 vagy más hidak által.", "gui_settings_tor_bridges_invalid": "Egyetlen híd sem működik. Ellenőrizd őket, vagy adj hozzá újakat.", "gui_settings_button_save": "Mentés", "gui_settings_button_cancel": "Mégse", "gui_settings_button_help": "Súgó", "settings_error_unknown": "Nem lehet csatlakozni a Tor-kontrollerhez, mert értelmetlenek a beállításaid.", "settings_error_automatic": "Nem lehet csatlakozni a Tor-kontrollerhez. Fut-e a Tor böngésző (letölthető innen: torproject.org) a háttérben?", "settings_error_socket_port": "Nem lehet csatlakozni a Tor-kontrollerhez itt: {}:{}.", "settings_error_socket_file": "Nem lehet csatlakozni a Tor-kontrollerhez az alábbi szokettfájl használatával: {}.", "settings_error_auth": "Csatlakozva itt: {}:{}, de nem hitelesíthető. Biztos, hogy ez egy Tor-kontroller?", "settings_error_missing_password": "Csatlakozva a Tor-kontrollerhez, de a hitelesítéshez jelszó szükséges.", "settings_error_unreadable_cookie_file": "Csatlakozva a Tor-kontrollerhez, de vagy a jelszó hibás, vagy a felhasználó nem jogosult a süti fájl olvasására.", "settings_error_bundled_tor_not_supported": "Az OnionShare beépített Tor-verziója nem használható fejlesztői módban Windows ill. macOS alatt.", "settings_error_bundled_tor_timeout": "Túl sok időbe telik csatlakozni a Tor-hoz. Lehet hogy nincs internetkapcsolatod, vagy a rendszer órája pontatlan?", "settings_error_bundled_tor_broken": "Az OnionShare nem tudott a háttérben a Tor-hoz csatlakozni:\n{}", "settings_test_success": "Csatlakozva a Tor-kontrollerhez.\n\nTor-verziószám: {}\nTámogatott ideiglenes Onion szolgáltatások: {}.\nTámogatott kliens-hitelesítés: {}.\nTámogatott újgenerációs .onion címek: {}.", "error_tor_protocol_error": "Hiba a Tor-ral: {}", "connecting_to_tor": "Csatlakozás a Tor-hálózathoz", "update_available": "Új OnionShare-verzió érhető el. Kattints ide a letöltéshez.

    A te verziód {}, a mostani pedig {}.", "update_error_check_error": "Nem sikerült az új verzió keresése: Lehet, hogy nem csatlakoztál a Tor-hoz, vagy az OnionShare oldal nem elérhető?", "update_error_invalid_latest_version": "Nem sikerült az új verzió keresése: Az OnionShare weboldal szerint az új verzió '{}' ám az felismerhetetlen…", "update_not_available": "A legújabb OnionShare-verziót használod.", "gui_tor_connection_ask_open_settings": "Igen", "gui_tor_connection_ask_quit": "Kilépés", "gui_status_indicator_share_started": "Megosztás", "gui_status_indicator_receive_started": "Bevétel", "gui_settings_language_label": "Előnyben részesített nyelv", "gui_add_files": "Fájlok hozzáadása", "gui_add_folder": "Mappák hozzáadása", "gui_stop_server_autostop_timer_tooltip": "Auto-stop időzítő megáll: {}", "gui_start_server_autostart_timer_tooltip": "Auto-start időzítő megáll: {}", "incorrect_password": "Hibás jelszó", "gui_waiting_to_start": "Ütemezett indítás: {}. Kattintson a visszavonáshoz.", "gui_hide": "Elrejtés", "gui_all_modes_history": "Előzmények", "gui_tab_name_website": "weboldal", "gui_tab_name_chat": "Csevegés", "gui_settings_bridge_moat_radio_option": "Híd kérése a torproject.org-tól", "gui_reveal": "Felfedés", "moat_solution_empty_error": "Írja be a képen látható karaktereket", "gui_status_indicator_share_working": "Indítás…", "gui_close_tab_warning_close": "Oké", "gui_status_indicator_receive_working": "Indítás…", "gui_settings_bridge_none_radio_option": "Ne használjon hidakat", "gui_settings_bridge_custom_placeholder": "írja be cím:port (egyet soronként)", "moat_captcha_submit": "Elküldés", "gui_status_indicator_chat_working": "Indítás…", "gui_settings_theme_auto": "Automatikus", "mode_settings_advanced_toggle_show": "Speciális beállítások megjelenítése", "gui_autoconnect_start": "Csatlakozás a Tor-hoz", "gui_quit_warning_cancel": "Mégsem", "gui_remove": "Eltávolítás", "gui_tab_name_receive": "Fogadás", "gui_autoconnect_trying_to_connect_to_tor": "Kapcsolódás a Tor-hoz…", "gui_please_wait_no_button": "Indítás…", "gui_close_tab_warning_cancel": "Mégsem", "gui_new_tab_share_button": "Fájlok megosztása", "gui_general_settings_window_title": "Általános", "gui_file_selection_remove_all": "Összes eltávolítása", "gui_settings_theme_light": "Világos", "moat_captcha_placeholder": "Írja be a képen látható karaktereket", "moat_captcha_label": "Oldjon meg egy CAPTCHA-t a híd kéréséhez.", "moat_captcha_reload": "Frissítés", "gui_all_modes_clear_history": "Kijelölések törlése", "gui_new_tab": "Új fül", "gui_tab_name_share": "Megosztás", "mode_settings_receive_data_dir_browse_button": "Tallózás", "gui_settings_theme_label": "Téma", "gui_settings_theme_dark": "Sötét", "gui_settings_socks_label": "SOCKS port", "gui_copy_client_auth": "Privát kulcs másolása", "gui_server_autostop_timer_expired": "Az automatikus leállás időzítője már lejárt. Kérjük, módosítsa a megosztás megkezdéséhez.", "gui_show_qr_code": "QR-kód megjelenítése", "gui_qr_label_auth_string_title": "Privát kulcs", "gui_autoconnect_bridge_setting_options": "Hídbeállítások", "gui_autoconnect_no_bridge": "Próbálja újra hidak nélkül", "gui_autoconnect_try_again_without_a_bridge": "Próbálja újra hidak nélkül", "gui_autoconnect_circumventing_censorship_starting_meek": "Szelíd híd létrehozása a domain-frontokhoz…", "gui_tor_connection_canceled": "Nem sikerült csatlakozni a Torhoz.\n\nGyőződjön meg arról, hogy csatlakozik e az internethez, majd nyissa meg újra az OnionShare alkalmazást, és állítsa be a Tor kapcsolatot.", "gui_url_label_persistent": "Ez a megosztás nem áll le automatikusan.

    Minden további megosztás újrafelhasználja a címet. (Egyszeri címek használatához kapcsolja ki a „Persistent address” beállítást a beállításokban.)", "gui_settings_bridge_custom_radio_option": "Adjon meg egy hidat, amelyről tudja hogy megbízható", "gui_autoconnect_circumventing_censorship_starting_circumvention": "A cenzúra megkerülése…", "gui_server_started_after_autostop_timer": "Az automatikus leállítás időzítője lejárt, mielőtt a szerver elindult. Kérem, készítsen új megosztást.", "gui_receive_url_public_description": "Ezzel az OnionShare-címmel bárki feltölthet fájlokat a számítógépére a Tor Browser használatával: ", "gui_autoconnect_bridge_description": "Lehetséges, hogy híd segítségével csatlakozhat, ha az internetkapcsolat cenzúrázott.", "gui_settings_controller_extras_label": "Tor beállítások", "gui_receive_url_description": "Ezzel az OnionShare-címmel és privát kulccsal bárki feltölthet fájlokat a számítógépére a Tor Browser használatával: ", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Az automatikus leállítási idő nem lehet azonos vagy korábbi, mint az automatikus indítás időpontja. Kérjük, módosítsa a megosztás megkezdéséhez.", "gui_autoconnect_failed_to_connect_to_tor": "Nem sikerült csatlakozni a Torhoz", "gui_status_indicator_chat_started": "Csevegés", "gui_receive_flatpak_data_dir": "Mivel az OnionShare-t Flatpakből telepítette, a fájlokat a ~/OnionShare egyik mappájába kell mentenie.", "gui_tor_connection_error_settings": "Próbálja meg módosítani a beállításokban, hogy az OnionShare hogyan csatlakozzon a Tor hálózathoz.", "gui_settings_tor_bridges_label": "A hidak segítségével bejuthat a Tor hálózatba, ha a Tor hozzáférést blokkolják. Attól függően, hogy honnan csatlakozik, az egyik híd jobban működhet, mint a másik.", "gui_autoconnect_circumventing_censorship": "Kapcsolódási problémák megoldása…", "gui_qr_code_dialog_title": "OnionShare QR-kód", "gui_server_autostart_timer_expired": "A megbeszélt időpont már letelt. Kérjük, módosítsa a megosztás megkezdéséhez.", "gui_chat_stop_server": "Csevegőszerver leállítása", "gui_settings_bridge_radio_builtin": "Válasszon beépített hidat", "gui_autoconnect_configure": "Hálózati beállítások", "gui_url_instructions": "Először küldje el az alábbi OnionShare címet:", "gui_status_indicator_receive_stopped": "Leállít", "gui_status_indicator_chat_scheduled": "Ütemezett…", "gui_file_info": "{} fájl, {}", "gui_chat_start_server": "Csevegőszerver indítása", "gui_autoconnect_bridge_detect_automatic": "Határozza meg az IP-címem alapján az országomat a hídbeállításokhoz", "gui_url_label_onetime_and_persistent": "Ez a megosztás nem áll le automatikusan.

    Minden további megosztás újra felhasználja a címet. (Egyszeri címek használatához kapcsolja ki a „Persistent address” beállítást a beállításokban.)", "gui_url_label_onetime": "Ez a megosztás az első kitöltést követően leáll.", "gui_website_url_description": "Ezzel az OnionShare-címmel és privát kulccsal bárki meglátogathatja webhelyét a Tor Browser használatával: ", "gui_copied_client_auth_title": "Privát kulcs másolva", "gui_dragdrop_sandbox_flatpak": "A Flatpak sandbox biztonságának érdekében a drag and drop (fogd és vidd) funkció nem támogatott. A fájlok kiválasztásához használja a \"Fájlok hozzáadása\" és a \"Mappa hozzáadása\" gombokat.", "gui_tor_settings_window_title": "Tor beállítások", "gui_settings_bridge_use_checkbox": "Használj hidat", "gui_settings_bridge_moat_button": "Kérjen új hidat", "gui_settings_moat_bridges_invalid": "Még nem kértél hidat a torproject.org webhelyről.", "gui_client_auth_instructions": "Ezután küldje el a privát kulcsot az OnionShare szolgáltatáshoz való hozzáférés engedélyezéséhez:", "gui_autoconnect_connection_error_msg": "Győződjön meg arról, hogy van internetkapcsolata.", "gui_website_url_public_description": "Ezzel az OnionShare-címmel bárki meglátogathatja webhelyét a Tor Browser használatával: ", "gui_autoconnect_could_not_connect_to_tor_api": "Nem sikerült csatlakozni a Tor API-hoz. Mielőtt újra próbálkozna, győződjön meg arról, hogy csatlakozik e az internethez.", "gui_chat_url_description": "Ezzel az OnionShare címmel és privát kulccsal bárki csatlakozhat ehhez a csevegőszobához a Tor böngésző használatával: ", "gui_tor_connection_ask": "Megnyissuk a beállításokat, hogy a Tor-hoz való kapcsolódást rendezze?", "gui_status_indicator_share_scheduled": "Ütemezett…", "gui_status_indicator_share_stopped": "Leállít", "gui_status_indicator_chat_stopped": "Leállít", "gui_enable_autoconnect_checkbox": "Automatikus csatlakozás a Torhoz", "gui_tor_connection_lost": "Leválasztva a Torról.", "gui_copied_client_auth": "A privát kulcs a vágólapra másolva", "gui_qr_label_url_title": "OnionShare cím", "gui_autoconnect_description": "Az OnionShare az önkéntesek által működtetett Tor hálózatot használja.", "gui_autoconnect_bridge_detect_manual": "Válassza ki kézzel az országot a hídbeállításokhoz", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Hidak kérése a Tor cenzúrakerülő API-tól…", "gui_autoconnect_circumventing_censorship_got_bridges": "Hidak létesültek. Újracsatlakozás a Torhoz…", "gui_settings_stop_active_tabs_label": "Egyes lapokon szolgáltatások futnak.\nA Tor-beállítások módosításához minden szolgáltatást le kell állítania.", "gui_settings_version_label": "Ön OnionShare szolgáltatást használ: {}", "gui_settings_help_label": "Kell segítség? Lásd: docs.onionshare.org", "gui_server_doesnt_support_stealth": "Sajnáljuk, a Tor ezen verziója nem támogatja a lopakodó (kliens-hitelesítés) funkciót. Kérjük, próbálja meg a Tor újabb verziójával, vagy használja a \"nyilvános\" módot, ha nem kell privátnak lennie.", "gui_url_label_stay_open": "Ez a megosztás nem áll le automatikusan.", "gui_share_url_description": "Bárki, aki rendelkezik ezzel az OnionShare-címmel és privát kulccsal, letöltheti fájljait a Tor Browser használatával: ", "gui_share_url_public_description": "Ezzel az OnionShare-címmel bárki letöltheti fájljait a Tor Browser használatával: ", "gui_chat_url_public_description": "Ezzel az OnionShare-címmel bárki csatlakozhat ehhez a csevegőszobához a Tor Browser használatával: ", "gui_url_instructions_public_mode": "Küldje el az alábbi OnionShare címet:", "gui_status_indicator_receive_scheduled": "Ütemezett…", "gui_file_info_single": "{} fájl, {}", "history_in_progress_tooltip": "{} folyamatban" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/hy_AM.json000066400000000000000000000177141521174352300275140ustar00rootroot00000000000000{ "gui_close_tab_warning_close": "Լավ", "gui_file_selection_remove_all": "Հեռացնել բոլորը", "gui_autoconnect_trying_to_connect_to_tor": "Միացում Tor-ին…", "gui_settings_window_title": "Կարգավորումներ", "gui_general_settings_window_title": "Հիմնական", "gui_settings_autoupdate_timestamp_never": "Երբեք", "gui_all_modes_history": "Պատմություն", "gui_close_tab_warning_cancel": "Չեղարկել", "gui_quit_warning_cancel": "Չեղարկել", "mode_settings_receive_data_dir_browse_button": "Դիտարկել", "moat_captcha_label": "Լուծեք «CAPTCHA»-ն կամուրջ պահանջելու համար:", "moat_captcha_placeholder": "Մուտքագրեք նկարում պատկերված խորհրդանիշները", "moat_captcha_reload": "Վերաբեռնել", "gui_tab_name_chat": "Զրուցարան", "gui_remove": "Հեռացնել", "gui_choose_items": "Ընտրել", "gui_hide": "Թաքցնել", "gui_settings_bridge_custom_placeholder": "մուտքագրեք հասցե:մատույց (մեկ տող ամեն հատին)", "gui_autoconnect_start": "Միանալ Tor-ին", "gui_settings_bridge_moat_radio_option": "Պահանջել կամուրջ torproject.org-ից", "gui_settings_button_help": "Օգնություն", "gui_settings_theme_auto": "Ինքնին", "gui_settings_theme_light": "Լուսավոր", "gui_settings_theme_dark": "Մութ", "gui_new_tab": "Նոր ներդիր", "moat_captcha_submit": "Ուղարկել", "moat_solution_empty_error": "Մուտքագրեք նկարում պատկերված խորհրդանիշները", "gui_tab_name_website": "Վեբ կայք", "gui_add": "Ավելացնել", "gui_settings_authenticate_password_option": "Գաղտնաբառ", "gui_settings_password_label": "Գաղտնաբառ", "gui_settings_button_save": "Պահել", "gui_settings_button_cancel": "Չեղարկել", "gui_tor_connection_ask_open_settings": "Այո", "gui_settings_language_label": "Լեզու", "gui_settings_theme_label": "Ոճ", "gui_tor_settings_window_title": "Tor կարգավորումներ", "gui_close_tab_warning_title": "Փակե՞լ ներդիրը:", "gui_autoconnect_bridge_setting_options": "Կամուրջի կարգավորումներ", "gui_autoconnect_failed_to_connect_to_tor": "Չստացվեց կապվել Tor-ին", "gui_autoconnect_no_bridge": "Փորձեք նորից՝ առանց կամուրջների", "gui_autoconnect_try_again_without_a_bridge": "Փորձեք նորից՝ առանց կամուրջների", "gui_settings_controller_extras_label": "Tor կարգավորումներ", "gui_settings_bridge_use_checkbox": "Օգտագործել կամուրջ", "systray_page_loaded_title": "Էջը բեռնվեց", "gui_qr_label_url_title": "OnionShare հասցե", "gui_add_files": "Ավելացնել ֆայլեր", "other_page_loaded": "Բեռնված հասցե", "not_a_readable_file": "{0:s}-ն կարդացվող ֆայլ չէ:", "gui_please_wait_no_button": "Մեկնարկում է…", "gui_copy_url": "Պատճենել հասցեն", "gui_canceled": "Չեղարկված", "gui_settings_bridge_moat_button": "Պահանջել նոր կամուրջ", "connecting_to_tor": "Միանում է Tor ցանցին", "gui_new_tab_tooltip": "Բացել նոր ներդիր", "gui_new_tab_share_button": "Կիսվել ֆայլերով", "history_receive_read_message_button": "Կարդալ հաղորդագրությունը", "mode_settings_receive_data_dir_label": "Պահպանել ֆայլերը", "gui_status_indicator_chat_working": "Մեկնարկում է…", "systray_share_canceled_title": "Տարածումը չեղարկվեց", "gui_main_page_share_button": "Սկսել տարածումը", "mode_settings_advanced_toggle_hide": "Թաքցնել ընդլայնված կարգավորումները", "days_first_letter": "օ", "gui_status_indicator_share_stopped": "Պատրաստ է տարածմանը", "gui_tab_name_share": "Տարածել", "gui_add_folder": "Ավելացնել թղթապանակ", "history_in_progress_tooltip": "{} ընթացքում", "seconds_first_letter": "վ", "systray_share_completed_title": "Տարածումն ավարտվեց", "systray_page_loaded_message": "OnionShare հասցեն բեռնված է", "systray_share_started_title": "Տարածումը սկսվեց", "gui_receive_mode_autostop_timer_waiting": "Ավարտվում է ստացումը…", "hours_first_letter": "ժ", "minutes_first_letter": "ր", "gui_receive_mode_no_files": "Ֆայլեր դեռ չեն ստացվել", "gui_new_tab_receive_button": "Ստանալ ֆայլերը", "mode_settings_receive_disable_text_checkbox": "Կարողազրկել տեքստի ուղակումը", "gui_please_wait": "Մեկնարկում է... Սեղմեք չեղակման համար:", "gui_share_start_server": "Սկսել տարածումը", "gui_share_stop_server": "Կասեցնել տարածումը", "gui_share_stop_server_autostop_timer": "Կասեցնել տարածումը ({})", "gui_reveal": "Բացահայտել", "gui_qr_code_dialog_title": "OnionShare QR ծածկագիր", "gui_autoconnect_circumventing_censorship_got_bridges": "Կամուրջները հիմնված են: Վերամիացում Tor-ին…", "gui_settings_autoupdate_label": "Ստուգել նոր տարբերակի առկայությունը", "gui_settings_autoupdate_timestamp": "Վերջին ստուգումը՝ {}", "gui_settings_autoupdate_check_button": "Ստուգել նոր տարբերակի առկայությունը", "history_completed_tooltip": "{} ավարտված", "systray_share_completed_message": "Ավարտվեց ֆայլերի ուղարկումը", "gui_all_modes_clear_history": "Մաքրել բոլորը", "systray_receive_started_title": "Ստացումը սկսվեց", "gui_share_mode_autostop_timer_waiting": "Ավարտվում է ստացումը…", "gui_share_mode_no_files": "Ֆայլեր դեռ չեն ուղարկվել", "gui_main_page_receive_button": "Սկսել ստացումը", "gui_main_page_website_button": "Սկսել հյուրընկալումը", "gui_new_tab_website_button": "Հյուրընկալել վեբկայք", "gui_tab_name_receive": "Ստանալ", "mode_settings_advanced_toggle_show": "Ցուցադրել ընդլայնված կարգավորումները", "mode_settings_title_label": "Հարմարեցված վերնագիր", "mode_settings_receive_disable_files_checkbox": "Կարողազրկել ֆայլերի վերբեռնումը", "error_port_not_available": "OnionShare-ի մատույցը հասանելի չէ", "gui_status_indicator_share_working": "Մեկնարկում է…", "gui_status_indicator_share_started": "Տարածում", "gui_status_indicator_receive_working": "Մեկնարկում է…", "gui_status_indicator_receive_stopped": "Պատրաստ է ստացմանը", "gui_copied_client_auth_title": "Փակ բանալին պատճենված է", "gui_copied_url": "OnionShare հասցեն պատճենված է սեղմատախտակին", "gui_copied_client_auth": "Փակ բանալին պատճենված է սեղմատախտակին", "gui_chat_stop_server": "Կասեցնել զրուցարանի սերվերը", "gui_chat_start_server": "Սկսել զրուցարանի սերվերը", "gui_show_qr_code": "Ցուցադրել QR ծածկագիրը", "gui_autoconnect_configure": "Կապի կարգավորումներ", "gui_copied_url_title": "OnionShare հասցեն պատճենված է", "gui_copy_client_auth": "Պատճենել փակ բանալին", "gui_qr_label_auth_string_title": "Փակ բանալի" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ia.json000066400000000000000000000033601521174352300271000ustar00rootroot00000000000000{ "gui_remove": "Remover", "gui_hide": "Hide", "gui_settings_window_title": "Configurationes", "gui_settings_autoupdate_timestamp_never": "Never", "gui_settings_language_label": "Lingua", "gui_settings_theme_light": "Clar", "gui_settings_theme_dark": "Obscur", "systray_menu_exit": "Quitar", "gui_tab_name_website": "Website", "gui_tab_name_chat": "Chat", "gui_close_tab_warning_cancel": "Cancellar", "gui_quit_warning_quit": "Quitar", "gui_quit_warning_cancel": "Cancellar", "mode_settings_receive_data_dir_browse_button": "Navigar", "moat_captcha_submit": "Submitter", "moat_captcha_reload": "Reload", "gui_add": "Add", "gui_choose_items": "Eliger", "gui_please_wait_no_button": "Initiante…", "gui_general_settings_window_title": "General", "gui_settings_authenticate_password_option": "Contrasigno", "gui_settings_password_label": "Contrasigno", "gui_settings_button_save": "Salveguardar", "gui_settings_button_cancel": "Cancellar", "gui_settings_button_help": "Adjuta", "gui_tor_connection_ask_open_settings": "Si", "gui_tor_connection_ask_quit": "Quitar", "gui_status_indicator_share_working": "Initiante…", "gui_status_indicator_receive_working": "Initiante…", "gui_status_indicator_chat_working": "Initiante…", "gui_settings_theme_label": "Thema", "gui_all_modes_history": "Chronologia", "gui_all_modes_clear_history": "Rader toto", "gui_new_tab": "Nove scheda", "gui_main_page_share_button": "Comenciar a compartir", "gui_tab_name_share": "Compartir", "gui_status_indicator_chat_stopped": "Stoppate", "gui_status_indicator_share_stopped": "Stoppate", "gui_status_indicator_receive_stopped": "Stoppate" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/id.json000066400000000000000000000520731521174352300271100ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} bukan berkas yang bisa dibaca.", "other_page_loaded": "Alamat dimuat", "close_on_autostop_timer": "Berhenti karena timer berhenti otomatis habis", "closing_automatically": "Terhenti karena transfer telah tuntas", "large_filesize": "Peringatan: Mengirim dalam jumlah besar dapat memakan waktu berjam-jam", "systray_menu_exit": "Keluar", "gui_drag_and_drop": "Seret dan lepas berkas dan folder untuk mulai berbagi", "gui_add": "Tambahkan", "gui_choose_items": "Pilih", "gui_share_start_server": "Mulai berbagi", "gui_share_stop_server": "Berhenti berbagi", "gui_share_stop_server_autostop_timer": "Berhenti berbagi ({})", "gui_receive_start_server": "Mulai Mode Menerima", "gui_receive_stop_server": "Menghentikan Mode Menerima", "gui_receive_stop_server_autostop_timer": "Menghentikan Mode Menerima ({}d tersisa)", "gui_copy_url": "Salin Alamat", "gui_canceled": "Dibatalkan", "gui_copied_url_title": "Alamat OnionShare disalin", "gui_copied_url": "Alamat OnionShare disalin ke papan klip", "gui_please_wait": "Memulai... Klik untuk membatalkan.", "gui_quit_warning_quit": "Keluar", "zip_progress_bar_format": "Mengompresi: %p%", "gui_settings_window_title": "Pengaturan", "gui_settings_autoupdate_label": "Periksa versi terbaru", "gui_settings_autoupdate_option": "Beritahu saya ketika versi baru tersedia", "gui_settings_autoupdate_timestamp": "Terakhir diperiksa: {}", "gui_settings_autoupdate_timestamp_never": "Tidak pernah", "gui_settings_autoupdate_check_button": "Periksa Versi Terbaru", "gui_settings_connection_type_label": "Bagaimana seharusnya OnionShare terhubung ke Tor?", "gui_settings_connection_type_bundled_option": "Gunakan versi Tor yang terintegrasi dengan OnionShare", "gui_settings_connection_type_automatic_option": "Mencoba konfigurasi otomatis dengan Tor Browser", "gui_settings_connection_type_control_port_option": "Menghubungkan menggunakan porta kontrol", "gui_settings_connection_type_socket_file_option": "Hubungkan menggunakan file socket", "gui_settings_connection_type_test_button": "Menguji sambungan ke Tor", "gui_settings_control_port_label": "Port kontrol", "gui_settings_socket_file_label": "Berkas soket", "gui_settings_socks_label": "Porta SOCKS", "gui_settings_authenticate_no_auth_option": "Tidak ada otentikasi, atau otentikasi kuki", "gui_settings_authenticate_password_option": "Sandi", "gui_settings_password_label": "Sandi", "gui_settings_tor_bridges": "Dukungan Tor bridge", "gui_settings_meek_lite_expensive_warning": "Peringatan: meek_lite sangat mahal untuk dijalankan oleh Tor Project.

    Gunakan hanya jika tidak dapat terhubung ke Tor secara langsung, melalui obfs4 transports,, atau bridge normal lainnya.", "gui_settings_tor_bridges_invalid": "Tak satu pun dari bridge yang Anda tambahkan bekerja.\nPeriksa kembali atau tambahkan yang lain.", "gui_settings_button_save": "Simpan", "gui_settings_button_cancel": "Batal", "gui_settings_button_help": "Bantuan", "settings_error_unknown": "Tidak dapat tersambung ke pengontrol Tor karena pengaturan Anda tidak masuk akal.", "settings_error_automatic": "Tidak dapat terhubung ke pengontrol Tor. Apakah Tor Browser (unduh di torproject.org) berjalan di latar belakang?", "settings_error_socket_port": "Tidak dapat tersambung ke pengontrol Tor di {}:{}.", "settings_error_socket_file": "Tidak dapat tersambung ke pengontrol Tor menggunakan file soket {}.", "settings_error_auth": "Tersambung ke {}:{}, tetapi tidak bisa mengautentikasi. Mungkin ini bukan pengontrol Tor?", "settings_error_missing_password": "Terhubung ke pengontrol Tor, tetapi memerlukan kata sandi untuk mengotentikasi.", "settings_error_unreadable_cookie_file": "Terhubung ke pengontrol Tor, tetapi kata sandi mungkin salah, atau pengguna Anda tidak diizinkan untuk membaca file kuki.", "settings_error_bundled_tor_not_supported": "Menggunakan versi Tor bawaan OnioShare tidak bekerja dalam mode pengembang di Windows atau macOS.", "settings_error_bundled_tor_timeout": "Terlalu lama terhubung ke Tor. Mungkin Anda tidak terhubung Internet, atau jam sistem tidak akurat?", "settings_error_bundled_tor_broken": "OnioShare tidak dapat terhubung Tor:\n{}", "settings_test_success": "Terhubung ke pengontrol Tor.\n\nVersi tor: {}\nMendukung layanan ephemeral onion: {}.\nMendukung otentikasi klien: {}.\nMendukung alamat .onion generasi berikutnya: {}.", "error_tor_protocol_error": "Ada kesalahan dengan Tor: {}", "connecting_to_tor": "Menghubungkan ke jaringan Tor", "update_available": "OnionShare Baru tersedia. klik di sini untuk mendapatkannya.

    Anda menggunakan {} dan yang terbaru adalah {}.", "update_error_check_error": "Tidak dapat memeriksa versi baru: Mungkin Anda tidak terhubung ke Tor, atau situs web OnionShare sedang down?", "update_error_invalid_latest_version": "Tidak dapat memeriksa versi baru: Situs web OnionShare mengatakan bahwa versi terbaru adalah '{}' yang tidak dapat dikenali…", "update_not_available": "Anda menjalankan OnionShare terbaru.", "gui_tor_connection_ask": "Buka pengaturan untuk memilah koneksi ke Tor?", "gui_tor_connection_ask_open_settings": "Ya", "gui_tor_connection_ask_quit": "Keluar", "gui_tor_connection_error_settings": "Coba ubah cara OnionShare terhubung ke jaringan Tor di pengaturan.", "gui_tor_connection_canceled": "Tidak dapat terhubung ke Tor.\n\nPastikan Anda terhubung ke Internet, kemudian buka kembali OnionShare dan atur koneksinya ke Tor.", "gui_tor_connection_lost": "Terputus dari Tor.", "gui_server_started_after_autostop_timer": "Timer berhenti otomatis habis sebelum server dimulai. Silakan buat pembagian baru.", "gui_server_autostop_timer_expired": "Timer berhenti otomatis sudah habis. Silakan sesuaikan untuk mulai berbagi.", "gui_share_url_description": "Siapa saja dengan alamat OnionShare ini dapat mengunduh berkas Anda menggunakan Tor Browser:", "gui_receive_url_description": "Siapa saja dengan alamat OnionShare ini dapat mengunggah berkas ke komputer Anda menggunakan Tor Browser:", "gui_url_label_persistent": "Pembagian ini tidak akan berhenti otomatis.

    Setiap pembagian selanjutnya menggunakan lagi alamat tersebut. (Untuk menggunakan alamat sekali pakai, matikan \"Gunakan alamat persisten\" di pengaturan.)", "gui_url_label_stay_open": "Pembagian ini tidak akan berhenti otomatis.", "gui_url_label_onetime": "Pembagian ini akan berhenti setelah penyelesaian pertama.", "gui_url_label_onetime_and_persistent": "Pembagian ini tidak akan berhenti otomatis.

    Setiap pembagian selanjutnya akan menggunakan lagi alamat tersebut. (Untuk menggunakan alamat sekali pakai, matikan \"Gunakan alamat persisten\" di pengaturan.)", "gui_status_indicator_share_stopped": "Terhenti", "gui_status_indicator_share_working": "Memulai…", "gui_status_indicator_share_started": "Berbagi", "gui_status_indicator_receive_stopped": "Terhenti", "gui_status_indicator_receive_working": "Memulai…", "gui_status_indicator_receive_started": "Menerima", "gui_file_info": "{} file, {}", "gui_file_info_single": "{} file, {}", "history_in_progress_tooltip": "{} sedang berlangsung", "history_completed_tooltip": "{} selesai", "gui_receive_mode_warning": "Mode menerima membiarkan orang mengunggah berkas ke komputer Anda.

    Beberapa berkas dapat berpotensi mengambil alih komputer Anda jika Anda membukanya. Hanya buka hal-hal dari orang yang Anda percaya, atau jika Anda tahu apa yang Anda lakukan.", "systray_page_loaded_title": "Halaman dimuat", "gui_settings_language_label": "Bahasa", "gui_settings_language_changed_notice": "Mulai ulang OnionShare untuk menerapkan bahasa baru.", "gui_add_files": "Tambahkan berkas", "gui_add_folder": "Tambahkan Folder", "incorrect_password": "Password salah", "gui_waiting_to_start": "Dijadwalkan akan dimulai pada {}. Klik untuk membatalkan.", "gui_start_server_autostart_timer_tooltip": "Timer mulai otomatis berakhir pada {}", "gui_stop_server_autostop_timer_tooltip": "Timer berhenti otomatis berakhir pada {}", "gui_new_tab_chat_button": "Mengobrol secara Anonim", "gui_new_tab_website_button": "Host sebuah situs web", "gui_main_page_share_button": "Mulai Berbagi", "gui_main_page_website_button": "Mulai Hosting", "gui_main_page_receive_button": "Mulai Menerima", "gui_close_tab_warning_cancel": "Batal", "gui_close_tab_warning_title": "Anda yakin?", "gui_tab_name_chat": "Obrolan", "gui_tab_name_website": "Situs web", "gui_tab_name_receive": "Menerima", "gui_tab_name_share": "Berbagi", "gui_main_page_chat_button": "Mulai Obrolan", "gui_quit_warning_title": "Anda yakin?", "gui_receive_flatpak_data_dir": "Karena Anda menginstal OnionShare menggunakan Flatpak, Anda harus menyimpan file ke folder di ~/OnionShare.", "mode_settings_website_disable_csp_checkbox": "Jangan kirim header Kebijakan Keamanan Konten (memungkinkan situs web Anda menggunakan sumber daya pihak ketiga)", "gui_open_folder_error": "Gagal membuka folder dengan xdg-open. File ada di sini: {}", "gui_status_indicator_share_scheduled": "Dijadwalkan…", "error_cannot_create_data_dir": "Tidak dapat membuat folder data OnionShare: {}", "history_requests_tooltip": "{} permintaan web", "gui_status_indicator_receive_scheduled": "Dijadwalkan…", "systray_page_loaded_message": "Alamat OnionShare dimuat", "gui_all_modes_transfer_canceled": "Dibatalkan {}", "gui_all_modes_transfer_canceled_range": "Dibatalkan {} - {}", "gui_all_modes_transfer_finished": "Ditransfer {}", "gui_all_modes_transfer_finished_range": "Ditransfer {} - {}", "mode_settings_receive_data_dir_browse_button": "Telusur", "mode_settings_receive_data_dir_label": "Simpan file ke", "mode_settings_share_autostop_sharing_checkbox": "Berhenti berbagi setelah file dikirim (hapus centang untuk memperbolehkan mengunduh file individual)", "mode_settings_autostop_timer_checkbox": "Hentikan layanan onion pada waktu yang dijadwalkan", "mode_settings_autostart_timer_checkbox": "Mulai layanan onion pada waktu yang dijadwalkan", "mode_settings_public_checkbox": "Jangan gunakan kata sandi", "mode_settings_persistent_checkbox": "Simpan tab ini, dan secara otomatis membukanya saat saya membuka OnionShare", "mode_settings_advanced_toggle_hide": "Sembunyikan pengaturan lanjut", "mode_settings_advanced_toggle_show": "Tampilkan pengaturan lanjut", "gui_quit_warning_cancel": "Batal", "gui_new_tab_receive_button": "Terima File", "gui_new_tab_share_button": "Bagikan file", "gui_new_tab_tooltip": "Buka tab baru", "gui_new_tab": "Tab Baru", "seconds_first_letter": "d", "minutes_first_letter": "m", "hours_first_letter": "j", "days_first_letter": "h", "gui_receive_mode_autostop_timer_waiting": "Menunggu untuk menyelesaikan penerimaan", "gui_receive_mode_no_files": "Belum Ada File yang Diterima", "gui_website_mode_no_files": "Belum Ada Situs Web yang Dibagikan", "gui_share_mode_autostop_timer_waiting": "Menunggu untuk menyelesaikan pengiriman", "gui_share_mode_no_files": "Belum Ada File yang Dikirim", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_all_modes_progress_starting": "{0:s}, %p% (menghitung)", "gui_all_modes_progress_complete": "%p%, {0:s} berlalu.", "gui_all_modes_transfer_started": "Dimulai {}", "gui_all_modes_clear_history": "Bersihkan Semua", "gui_all_modes_history": "Riwayat", "systray_receive_started_message": "Seseorang mengirim file kepada Anda", "systray_receive_started_title": "Menerima Dimulai", "systray_share_canceled_message": "Seseorang membatalkan menerima file Anda", "systray_share_canceled_title": "Berbagi Dibatalkan", "systray_share_completed_message": "Selesai mengirim file", "systray_share_completed_title": "Berbagi Selesai", "systray_share_started_message": "Mulai mengirim file ke seseorang", "systray_share_started_title": "Berbagi dimulai", "gui_color_mode_changed_notice": "Mulai ulang OnionShare agar mode warna baru diterapkan.", "gui_qr_code_dialog_title": "Kode QR OnionShare", "gui_show_qr_code": "Tampilkan kode QR", "error_port_not_available": "Port OnionShare tidak tersedia", "gui_chat_stop_server": "Hentikan server obrolan", "gui_chat_start_server": "Mulai server obrolan", "gui_file_selection_remove_all": "Hapus Semua", "gui_remove": "Hapus", "history_receive_read_message_button": "Baca Pesan", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Waktu berhenti otomatis tidak boleh sama atau lebih awal dari waktu mulai otomatis. Silakan sesuaikan untuk mulai berbagi.", "gui_rendezvous_cleanup_quit_early": "Keluar Dini", "gui_rendezvous_cleanup": "Menunggu sirkuit Tor menutup untuk memastikan berkas Anda telah berhasil ditransfer.\n\nIni mungkin perlu beberapa menit.", "mode_settings_receive_webhook_url_checkbox": "Gunakan notifikasi webhook", "mode_settings_receive_disable_files_checkbox": "Nonaktifkan pengunggahan berkas", "mode_settings_receive_disable_text_checkbox": "Nonaktifkan pengiriman teks", "mode_settings_title_label": "Judul kustom", "gui_quit_warning_description": "Pembagian sedang aktif di beberapa tab Anda. Jika Anda keluar, seluruh tab Anda akan tertutup. Apakah Anda yakin mau keluar?", "gui_close_tab_warning_close": "Oke", "gui_close_tab_warning_website_description": "Anda secara aktif menghosting situs web. Apakah Anda yakin mau menutup tab ini?", "gui_close_tab_warning_receive_description": "Anda dalam proses menerima berkas. Apakah Anda yakin mau menutup tab ini?", "gui_close_tab_warning_share_description": "Anda dalam proses mengirim berkas. Apakah Anda yakin mau menutup tab ini?", "gui_close_tab_warning_persistent_description": "Tab ini persisten. Jika Anda menutup tab ini Anda akan kehilangan alamat onion yang sedang digunakan. Apakah Anda yakin mau menutup tab ini?", "gui_chat_url_description": "Siapa saja dengan alamat OnionShare ini dapat bergabung di ruang obrolan ini menggunakan Tor Browser:", "gui_website_url_description": "Siapa saja dengan alamat OnionShare ini dapat mengunjungi situs web Anda menggunakan Tor Browser:", "gui_server_autostart_timer_expired": "Waktu yang dijadwalkan telah terlewati. Silakan sesuaikan waktu untuk memulai berbagi.", "gui_status_indicator_chat_started": "Mengobrol", "gui_status_indicator_chat_scheduled": "Menjadwalkan…", "gui_status_indicator_chat_working": "Memulai…", "gui_status_indicator_chat_stopped": "Terhenti", "gui_copied_client_auth_title": "Kunci Pribadi Disalin", "gui_copy_client_auth": "Salin Kunci Pribadi", "gui_hide": "Sembunyikan", "gui_settings_theme_auto": "Otomatis", "gui_settings_theme_dark": "Thema Malam", "gui_please_wait_no_button": "Memulai…", "gui_settings_theme_label": "Tema", "gui_settings_theme_light": "Terang", "moat_captcha_submit": "Kirim", "gui_autoconnect_start": "Hubungkan ke Tor", "moat_captcha_label": "Selesaikan CAPTCHA untuk meminta sebuah bridge.", "gui_reveal": "Tampilkan", "gui_settings_bridge_moat_radio_option": "Meminta sebuah bridge ke torproject.org", "gui_settings_bridge_custom_placeholder": "masukkan alamat:port (satu entri per baris)", "moat_captcha_placeholder": "Masukkan karakter-karakter dari gambar tesebut.", "moat_captcha_reload": "Muat Ulang", "moat_solution_empty_error": "Masukkan karakter-karakter dari gambar tesebut.", "gui_autoconnect_trying_to_connect_to_tor": "Menghubungkan ke Tor…", "gui_general_settings_window_title": "Umum", "gui_autoconnect_configure": "Pengaturan jaringan", "gui_settings_bridge_use_checkbox": "Gunakan Jembatan", "gui_copied_client_auth": "Kunci Privat disalin ke clipboard", "gui_qr_label_url_title": "Alamat OnionShare", "gui_qr_label_auth_string_title": "Kunci Privat", "gui_tor_settings_window_title": "Pengaturan Tor", "gui_autoconnect_description": "OnionShare mengandalkan jaringan Tor yang dioperasikan oleh relawan.", "gui_enable_autoconnect_checkbox": "Sambung otomatis ke Tor", "gui_autoconnect_failed_to_connect_to_tor": "Tidak dapat terhubung ke Tor", "gui_autoconnect_connection_error_msg": "Pastikan Anda terhubung ke Internet.", "gui_autoconnect_bridge_description": "Anda mungkin dapat terhubung menggunakan bridge jika koneksi Internet Anda disensor.", "gui_autoconnect_bridge_detect_automatic": "Tentukan negara saya dari alamat IP saya untuk pengaturan bridge", "gui_autoconnect_bridge_detect_manual": "Pilih negara saya untuk pengaturan bridge secara manual", "gui_autoconnect_bridge_setting_options": "Pengaturan Bridge", "gui_autoconnect_no_bridge": "Coba lagi tanpa bridge", "gui_autoconnect_try_again_without_a_bridge": "Coba lagi tanpa bridge", "gui_autoconnect_circumventing_censorship": "Mengatasi masalah konektivitas…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Menghindari sensor…", "gui_autoconnect_circumventing_censorship_starting_meek": "Membuat meek bridge untuk domain-fronting…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Meminta bridge dari API penghindaran sensor Tor…", "gui_autoconnect_circumventing_censorship_got_bridges": "Bridge berhasil dibuat. Menyambungkan kembali ke Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "Tidak dapat terhubung ke API Tor. Pastikan Anda terhubung ke Internet sebelum mencoba lagi.", "gui_settings_controller_extras_label": "Pengaturan Tor", "gui_settings_tor_bridges_label": "Bridge membantu lalu lintas Anda masuk ke Jaringan Tor jika akses Tor diblokir. Tergantung dari mana Anda terhubung, satu bridge mungkin bekerja lebih baik dari yang lain.", "gui_settings_bridge_radio_builtin": "Pilih bridge bawaan", "gui_settings_bridge_none_radio_option": "Jangan gunakan bridge", "gui_settings_bridge_moat_button": "Minta Bridge Baru", "gui_settings_bridge_custom_radio_option": "Berikan bridge yang Anda pelajari dari sumber tepercaya", "gui_settings_moat_bridges_invalid": "Anda belum meminta bridge dari torproject.org.", "gui_settings_stop_active_tabs_label": "Ada layanan yang berjalan di beberapa tab Anda.\nAnda harus menghentikan semua layanan untuk mengubah pengaturan Tor.", "gui_settings_version_label": "Anda menggunakan OnionShare {}", "gui_settings_help_label": "Butuh bantuan? Lihat docs.onionshare.org", "gui_settings_license_label": "OnionShare dilisensikan di bawah GPL v3.
    Lisensi pihak ketiga dapat dilihat di sini:
    https://github.com/onionshare/onionshare/tree/main/licenses", "gui_server_doesnt_support_stealth": "Maaf, versi Tor ini tidak mendukung stealth (autentikasi klien). Silakan coba dengan versi Tor yang lebih baru, atau gunakan mode 'publik' jika tidak perlu bersifat privat.", "gui_share_url_public_description": "Siapa pun dengan alamat OnionShare ini dapat mengunduh file Anda menggunakan Tor Browser: ", "gui_website_url_public_description": "Siapa pun dengan alamat OnionShare ini dapat mengunjungi situs web Anda menggunakan Tor Browser: ", "gui_receive_url_public_description": "Siapa pun dengan alamat OnionShare ini dapat mengunggah file ke komputer Anda menggunakan Tor Browser: ", "gui_chat_url_public_description": "Siapa pun dengan alamat OnionShare ini dapat bergabung ke ruang obrolan ini menggunakan Tor Browser: ", "gui_url_instructions": "Pertama, kirimkan alamat OnionShare di bawah ini:", "gui_url_instructions_public_mode": "Kirimkan alamat OnionShare di bawah ini:", "gui_client_auth_instructions": "Selanjutnya, kirimkan kunci privat untuk mengizinkan akses ke layanan OnionShare Anda:", "gui_chat_mode_explainer": "Mode obrolan memungkinkan Anda mengobrol secara interaktif dengan orang lain, di Tor Browser.

    Riwayat obrolan tidak disimpan di OnionShare. Riwayat obrolan akan hilang saat Anda menutup Tor Browser.", "gui_close_tab_warning_chat_description": "Tutup tab yang menghosting server obrolan?", "mode_settings_persistent_autostart_on_launch_checkbox": "Mulai otomatis layanan onion ini saat OnionShare dijalankan", "mode_settings_website_custom_csp_checkbox": "Kirim header Kebijakan Keamanan Konten kustom", "error_generic": "Terjadi kesalahan tak terduga dengan OnionShare:\n{}", "moat_contact_label": "Menghubungi BridgeDB…", "moat_bridgedb_error": "Tidak dapat menghubungi BridgeDB.", "moat_captcha_error": "Solusi tidak tepat. Silakan coba lagi.", "mode_tor_not_connected_label": "OnionShare tidak terhubung ke jaringan Tor", "waitress_web_server_error": "Terjadi masalah saat memulai server web" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/is.json000066400000000000000000000540551521174352300271310ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} er ekki læsileg skrá.", "other_page_loaded": "Vistfangi hlaðið inn", "close_on_autostop_timer": "Stöðvað vegna þess að sjálfvirk niðurtalning endaði", "closing_automatically": "Stöðvað vegna þess að flutningnum er lokið", "large_filesize": "Aðvörun: að senda stóra skrá getur tekið klukkustundir", "systray_menu_exit": "Hætta", "gui_drag_and_drop": "Dragðu og slepptu skrám og möppum til að hefja deilingu", "gui_add": "Bæta við", "gui_choose_items": "Veldu", "gui_share_start_server": "Hefja deilingu", "gui_share_stop_server": "Hætta deilingu", "gui_share_stop_server_autostop_timer": "Hætta deilingu ({})", "gui_receive_start_server": "Byrja í móttökuham", "gui_receive_stop_server": "Hætta í móttökuham", "gui_receive_stop_server_autostop_timer": "Hætta í móttökuham ({} eftir)", "gui_copy_url": "Afrita vistfang", "gui_canceled": "Hætt við", "gui_copied_url_title": "Afritaði OnionShare-vistfang", "gui_copied_url": "OnionShare-vistfang afritað á klippispjald", "gui_please_wait": "Ræsi... Smelltu til að hætta við.", "gui_quit_warning_quit": "Hætta", "zip_progress_bar_format": "Þjappa: %p%", "gui_settings_window_title": "Stillingar", "gui_settings_autoupdate_label": "Athuga með nýja útgáfu", "gui_settings_autoupdate_option": "Láta vita þegar ný útgáfa er tiltæk", "gui_settings_autoupdate_timestamp": "Síðast athugað: {}", "gui_settings_autoupdate_timestamp_never": "Aldrei", "gui_settings_autoupdate_check_button": "Athuga með nýjar útgáfur", "gui_settings_connection_type_label": "Hvernig ætti OnionShare að tengjast við Tor?", "gui_settings_connection_type_bundled_option": "Nota Tor útgáfuna sem er innbyggð í OnionShare", "gui_settings_connection_type_automatic_option": "Reyna sjálfvirka uppsetningu með Tor-vafranum", "gui_settings_connection_type_control_port_option": "Tengjast með stýrigátt", "gui_settings_connection_type_socket_file_option": "Tengjast með sökkulskrá", "gui_settings_connection_type_test_button": "Prófa tengingu við Tor", "gui_settings_control_port_label": "Stýrigátt", "gui_settings_socket_file_label": "Sökkulskrá", "gui_settings_socks_label": "SOCKS-gátt", "gui_settings_authenticate_no_auth_option": "Engin auðkenning eða auðkenning með vefköku", "gui_settings_authenticate_password_option": "Lykilorð", "gui_settings_password_label": "Lykilorð", "gui_settings_tor_bridges": "Tengjast með Tor-brú?", "gui_settings_meek_lite_expensive_warning": "Aðvörun: Að reka meek_azure brýrnar er kostnaðarsamt fyrir Tor-verkefnið.

    Ekki nota þær nema þér takist ekki að tengjast beint við Tor, með obfs4 tengileið, eða öðrum venjulegum brúm.", "gui_settings_tor_bridges_invalid": "Engar af brúnum sem þú bættir við virka. Yfirfarðu þær eða bættu öðrum við.", "gui_settings_button_save": "Vista", "gui_settings_button_cancel": "Hætta við", "gui_settings_button_help": "Hjálp", "settings_error_unknown": "Gat ekki tengst við Tor-stýringu því engin glóra er í stillingunum þínum.", "settings_error_automatic": "Ekki tókst að tengjast Tor-stýringunni. Er Tor-vafrinn (tiltækur á torproject.org) keyrandi í bakgrunni?", "settings_error_socket_port": "Gat ekki tengst við Tor-stýringu á {}:{}.", "settings_error_socket_file": "Gat ekki tengst við Tor-stýringu með sökkulskránni {}.", "settings_error_auth": "Tengt við {}:{}, en get ekki auðkennt. Kannski er þetta ekki Tor-stýring?", "settings_error_missing_password": "Tengt við Tor-stýringu, en hún krefst lykilorðs fyrir auðkenningu.", "settings_error_unreadable_cookie_file": "Tengt við Tor-stýringuna, en lykilorðið gæti verið rangt eða að notandinn þinn hafi ekki heimild til að lesa vefkökuskrána.", "settings_error_bundled_tor_not_supported": "Sé notuð Tor útgáfan sem er innbyggð í OnionShare, virkar hún ekki í þróunarham á Windows eða macOS.", "settings_error_bundled_tor_timeout": "Það tekur of langan tíma að tengjast við Tor. Kannski er ekki tenging við internetið, nú eða að klukka kerfisins sé ekki rétt stillt?", "settings_error_bundled_tor_broken": "OnionShare gat ekki tengst við Tor:\n{}", "settings_test_success": "Tengt við Tor-stýringuna.\n\nTor útgáfa: {}\nStyður stuttlifandi onion-þjónustur: {}.\nStyður auðkenningu biðlaraforrits: {}.\nStyður næstu-kynslóðar .onion vistföng: {}.", "error_tor_protocol_error": "Það kom upp villa í Tor: {}", "connecting_to_tor": "Tengist við Tor-netkerfið", "update_available": "Ný útgáfa OnionShare er komin út. Smelltu hér til að ná í hana.

    Þú ert að nota útgáfu {} og sú nýjasta er {}.", "update_error_check_error": "Gat ekki athugað með nýjar uppfærslur: mögulega ertu ekki tengd(ur) við Tor eða að vefsvæði OnionShare sé óvirkt í augnablikinu?", "update_error_invalid_latest_version": "Gat ekki athugað með nýjar uppfærslu: vefsvæði OnionShare tilkynnir að nýjasta útgáfan sé hin óskiljanlega '{}'…", "update_not_available": "Þú ert þegar að keyra nýjustu útgáfu OnionShare.", "gui_tor_connection_ask": "Opna stillingarnar til að ráða fram úr tengingu við Tor?", "gui_tor_connection_ask_open_settings": "Já", "gui_tor_connection_ask_quit": "Hætta", "gui_tor_connection_error_settings": "Prófaðu að breyta í stillingunum hvernig OnionShare tengist við Tor-netkerfið.", "gui_tor_connection_canceled": "Tókst ekki að tengjast Tor.\n\nGakktu úr skugga um að þú sért tengd/ur internetinu, opnaðu síðan aftur OnionShare og settu upp tengingu þess við Tor.", "gui_tor_connection_lost": "Aftengt frá Tor.", "gui_server_autostop_timer_expired": "Sjálfvirkri niðurtalningu er þegar lokið. Lagaðu hana til að hefja deilingu.", "gui_share_url_description": "Hver sem er með þetta OnionShare vistfang og þennan einkalykil getur sótt skrárnar þínar með því að nota Tor-vafrann: ", "gui_receive_url_description": "Hver sem er með þetta OnionShare vistfang og einkalykil getur sent skrár inn á tölvuna þína með því að nota Tor-vafrann: ", "gui_url_label_persistent": "Deiling þessarar sameignar mun ekki stöðvast sjálfvirkt.

    Allar deilingar sem á eftir koma munu endurnýta vistfangið. (Til að nota eins-skiptis vistföng skaltu slökkva á \"Alltaf opna þennan flipa þegar OnionShare fer í gang\" í stillingunum.)", "gui_url_label_stay_open": "Deiling þessarar sameignar mun ekki stöðvast sjálfvirkt.", "gui_url_label_onetime": "Deiling þessarar sameignar mun stöðvast eftir fyrstu klárun.", "gui_url_label_onetime_and_persistent": "Deiling þessarar sameignar mun ekki stöðvast sjálfvirkt.

    Allar deilingar sem á eftir koma munu endurnýta vistfangið. (Til að nota eins-skiptis vistföng skaltu slökkva á \"Alltaf opna þennan flipa þegar OnionShare fer í gang\" í stillingunum.)", "gui_status_indicator_share_stopped": "Stöðvað", "gui_status_indicator_share_working": "Ræsi…", "gui_status_indicator_share_started": "Deiling", "gui_status_indicator_receive_stopped": "Stöðvað", "gui_status_indicator_receive_working": "Ræsi…", "gui_status_indicator_receive_started": "Tek á móti", "gui_file_info": "{} skrár, {}", "gui_file_info_single": "{} skrá, {}", "history_in_progress_tooltip": "{} í vinnslu", "history_completed_tooltip": "{} lokið", "gui_receive_mode_warning": "Móttökuhamur leyfir fólk að hlaða skrám inn á tölvuna þína.

    Sumar skrár geta hugsanlega tekið yfir stjórn á tölvunni ef þær eru opnaðar. Ekki opna hluti nema frá fólki sem þú treystir, eða ef þú veist raunverulega hvað þú ert að gera.", "systray_page_loaded_title": "Síða lesin inn", "gui_settings_language_label": "Tungumál", "gui_settings_language_changed_notice": "Endurræstu OnionShare til að skipta yfir í nýja tungumálið.", "gui_add_files": "Bæta við skrám", "gui_add_folder": "Bæta við möppu", "error_cannot_create_data_dir": "Gat ekki búið til OnionShare gagnamöppu: {}", "systray_page_loaded_message": "OnionShare-vistfang hlaðið inn", "systray_share_started_title": "Deiling hafin", "systray_share_started_message": "Byrja að senda skrár til einhvers", "systray_share_completed_title": "Deilingu lokið", "systray_share_completed_message": "Lokið við að senda skrár", "systray_share_canceled_title": "Hætt við deilingu", "systray_share_canceled_message": "Einhver hætti við að taka á móti skrám frá þér", "systray_receive_started_title": "Móttaka hafin", "systray_receive_started_message": "Einhver er að senda þér skrár", "gui_all_modes_history": "Vinnsluferill", "gui_all_modes_clear_history": "Hreinsa allt", "gui_all_modes_transfer_started": "Ræsti {}", "gui_all_modes_transfer_finished_range": "Færði {} - {}", "gui_all_modes_transfer_finished": "Færði {}", "gui_all_modes_transfer_canceled_range": "Hætt við {} - {}", "gui_all_modes_transfer_canceled": "Hætt við {}", "gui_all_modes_progress_complete": "%p%, {0:s} liðnar.", "gui_all_modes_progress_starting": "{0:s}, %p% (reikna)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Engar skrár sendar ennþá", "gui_share_mode_autostop_timer_waiting": "Lýk sendingu…", "gui_receive_mode_no_files": "Engar skrár mótteknar ennþá", "gui_receive_mode_autostop_timer_waiting": "Lýk móttöku…", "gui_stop_server_autostop_timer_tooltip": "Sjálfvirk niðurtalning endar kl. {}", "gui_start_server_autostart_timer_tooltip": "Sjálfvirk ræsing endar kl. {}", "gui_waiting_to_start": "Áætlað að ræsa eftir {}. Smelltu til að hætta við.", "gui_server_started_after_autostop_timer": "Sjálfvirka niðurtalningin rann út áður en þjónninn ræstist. Útbúðu nýja sameign.", "gui_server_autostart_timer_expired": "Áætlaðri tímasetningu er þegar lokið. Lagaðu hana til að hefja deilingu.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Tímasetning sjálfvirkrar lokaniðurtalningar má ekki vera sú sama eða á undan sjálfvirkri ræsiniðurtalningu. Lagaðu tímasetninguna til að hefja deilingu.", "gui_status_indicator_share_scheduled": "Áætlað…", "gui_status_indicator_receive_scheduled": "Áætlað…", "days_first_letter": "dag", "hours_first_letter": "klst", "minutes_first_letter": "mín", "seconds_first_letter": "sek", "gui_website_url_description": "Hver sem er með þetta OnionShare vistfang og einkalykil getur skoðað vefsvæðið þitt með því að nota Tor-vafrann: ", "gui_website_mode_no_files": "Ennþá hefur engu vefsvæði verið deilt", "incorrect_password": "Rangt lykilorð", "history_requests_tooltip": "{} vefbeiðnir", "mode_settings_persistent_checkbox": "Alltaf opna þennan flipa þegar OnionShare fer í gang (onion-vistfangið helst það sama)", "gui_close_tab_warning_persistent_description": "Loka viðvarandi flipa og tapa onion-vistfanginu sem hann er að nota?", "gui_quit_warning_description": "Hætta og loka öllum flipum, jafnvel þó deiling sé virk í sumum þeirra?", "mode_settings_share_autostop_sharing_checkbox": "Hætta að deila eftir að skrár hafa verið sendar (taka merkið úr reitnum til að leyfa niðurhal á stökum skrám)", "mode_settings_website_disable_csp_checkbox": "Gera sjálfgefinn haus fyrir öryggisstefnu efnis (Content Security Policy) óvirkan (gerir vefsvæðinu þínu kleift að nota tilföng frá utanaðkomandi aðilum)", "gui_close_tab_warning_share_description": "Loka flipanum sem er að senda skrár?", "gui_close_tab_warning_website_description": "Loka flipanum sem er að hýsa vefsvæði?", "gui_close_tab_warning_receive_description": "Loka flipanum sem er að taka við skrám?", "mode_settings_receive_data_dir_browse_button": "Skoða", "mode_settings_public_checkbox": "Þetta er opinber OnionShare-þjónusta (gerir einkalykil óvirkann)", "mode_settings_receive_data_dir_label": "Vista skrár í", "mode_settings_autostart_timer_checkbox": "Ræsa onion-þjónustu á áætluðum tíma", "gui_quit_warning_title": "Hætta í OnionShare?", "gui_new_tab_share_button": "Deila skrám", "mode_settings_advanced_toggle_show": "Birta ítarlegar stillingar", "gui_new_tab_tooltip": "Opna nýjan flipa", "gui_new_tab_receive_button": "Taka á móti skrám", "mode_settings_advanced_toggle_hide": "Fela ítarlegar stillingar", "gui_quit_warning_cancel": "Hætta við", "gui_close_tab_warning_title": "Loka flipa?", "gui_new_tab_website_button": "Hýsa vefsvæði", "gui_new_tab": "Nýr flipi", "gui_close_tab_warning_close": "Í lagi", "gui_close_tab_warning_cancel": "Hætta við", "mode_settings_autostop_timer_checkbox": "Stöðva onion-þjónustu á áætluðum tíma", "gui_receive_flatpak_data_dir": "Þar sem þú settir OnionShare upp með því að nota Flatpak, þá verður þú að vista skrár í möppu undir ~/OnionShare.", "gui_tab_name_receive": "Taka á móti", "gui_chat_stop_server": "Stöðva spjallþjón", "gui_chat_start_server": "Ræsa spjallþjón", "gui_tab_name_chat": "Spjall", "gui_tab_name_website": "Vefsvæði", "gui_tab_name_share": "Deila", "gui_open_folder_error": "Mistókst að opna möppuna með xdg-open. Skráin er hér: {}", "gui_remove": "Fjarlægja", "gui_qr_code_dialog_title": "QR-kóði OnionShare", "gui_file_selection_remove_all": "Fjarlægja allt", "gui_show_qr_code": "Birta QR-kóða", "gui_new_tab_chat_button": "Spjalla nafnlaust", "gui_main_page_chat_button": "Hefja spjall", "gui_main_page_website_button": "Hefja hýsingu", "gui_main_page_receive_button": "Hefja móttöku", "gui_main_page_share_button": "Hefja deilingu", "gui_chat_url_description": "Hver og einn með þetta OnionShare-vistfang og einkalykil getur tekið þátt í þessari spjallrás í gegnum Tor-vafrann: ", "error_port_not_available": "OnionShare-gátt ekki tiltæk", "gui_rendezvous_cleanup_quit_early": "Hætta snemma", "gui_rendezvous_cleanup": "Bíð eftir að Tor-rásir lokist svo öruggt sé að tekist hafi að flytja skrárnar þínar.\n\nÞetta gæti tekið nokkrar mínútur.", "gui_color_mode_changed_notice": "Endurræstu OnionShare svo nýja litastefið taki gildi.", "history_receive_read_message_button": "Lesa skilaboð", "mode_settings_receive_webhook_url_checkbox": "Nota webhook fyrir tilkynningar", "mode_settings_receive_disable_files_checkbox": "Gera innsendingu skráa óvirka", "mode_settings_receive_disable_text_checkbox": "Gera innsendingu texta óvirka", "mode_settings_title_label": "Sérsniðinn titill", "gui_status_indicator_chat_started": "Spjalla", "gui_status_indicator_chat_scheduled": "Áætlað…", "gui_status_indicator_chat_working": "Ræsi…", "gui_status_indicator_chat_stopped": "Stöðvað", "gui_please_wait_no_button": "Ræsi…", "gui_settings_theme_dark": "Dökkt", "gui_settings_theme_light": "Ljóst", "gui_settings_theme_auto": "Sjálfvirkt", "gui_settings_theme_label": "Þema", "gui_server_doesnt_support_stealth": "Því miður, þessi útgáfa Tor styður ekki huliðsham (stealth - m. auðkenningu biðlara). Prófaðu að nota nýrri útgáfu af Tor eða að nota opinberan 'public' ham ef þetta þarf ekki að vera einkamál.", "gui_client_auth_instructions": "Næst skaltu senda einkalykilinn til að heimila aðgang að OnionShare-þjónustunni þinni:", "gui_url_instructions_public_mode": "Sendu OnionShare-vistfangið sem er hér fyrir neðan:", "gui_url_instructions": "Fyrst skaltu senda OnionShare-vistfangið sem er hér fyrir neðan:", "gui_chat_url_public_description": "Hver og einn með þetta OnionShare-vistfang getur tekið þátt í þessari spjallrás í gegnum Tor-vafrann: ", "gui_receive_url_public_description": "Hver sem er með þetta OnionShare vistfang getur sent skrár inn á tölvuna þína með því að nota Tor-vafrann: ", "gui_website_url_public_description": "Hver sem er með þetta OnionShare vistfang getur skoðað vefsvæðið þitt með því að nota Tor-vafrann: ", "gui_share_url_public_description": "Hver sem er með þetta OnionShare vistfang getur sótt skrárnar þínar með því að nota Tor-vafrann: ", "gui_hide": "Fela", "gui_reveal": "Birta", "gui_qr_label_auth_string_title": "Einkalykill", "gui_qr_label_url_title": "OnionShare-vistfang", "gui_copied_client_auth": "Einkalykill afritaður á klippispjald", "gui_copied_client_auth_title": "Einkalykill afritaður", "gui_copy_client_auth": "Afrita einkalykil", "gui_tor_settings_window_title": "Stillingar Tor", "gui_settings_controller_extras_label": "Stillingar Tor", "gui_settings_bridge_use_checkbox": "Nota brú", "gui_settings_bridge_radio_builtin": "Velja innbyggða brú", "gui_settings_bridge_none_radio_option": "Ekki nota brýr", "gui_settings_tor_bridges_label": "Brýr hjálpa þér við að tengjast Tor-netinu ef lokað er á Tor. Það fer eftir því hvaðan þú tengist hvaða brýr virka best, ein brú getur virkað betur en aðrar.", "mode_settings_website_custom_csp_checkbox": "Senda sérsniðinn haus fyrir öryggisstefnu efnis (Content Security Policy)", "moat_captcha_submit": "Senda inn", "gui_settings_bridge_moat_radio_option": "Biðja um brú frá torproject.org", "gui_settings_bridge_moat_button": "Biðja um nýja brú", "gui_settings_bridge_custom_radio_option": "Settu inn brúna sem þú heyrðir um hjá áreiðanlegum aðila", "gui_settings_bridge_custom_placeholder": "skrifaðu vistfang:gátt (eitt á hverja línu)", "gui_settings_moat_bridges_invalid": "Þú hefur ekki ennþá beðið um brú frá torproject.org.", "gui_settings_stop_active_tabs_label": "Það eru þjónustur að keyra í sumum flipanna þinna.\nÞú þarft að stöðva allar þjónustur til að breyta Tor-stillingunum þínum.", "gui_settings_version_label": "Þú ert að nota OnionShare {}", "gui_settings_help_label": "Þarftu aðstoð? Skoðaðu docs.onionshare.org", "moat_captcha_error": "Röng lausn. Reyndu aftur.", "moat_contact_label": "Hef samband við brúagagnagrunn…", "moat_captcha_label": "Leystu CAPTCHA-þraut til að biðja um brýr.", "moat_captcha_placeholder": "Settu inn stafina úr myndinni", "moat_solution_empty_error": "Settu inn stafina úr myndinni", "moat_captcha_reload": "Endurhlaða", "moat_bridgedb_error": "Tókst ekki að tengjast brúagagnagrunni.", "mode_tor_not_connected_label": "OnionShare er ekki tengt við Tor-netið", "gui_dragdrop_sandbox_flatpak": "Til að auka öryggi Flatpak-sandkassans, er draga/sleppa ekki stutt. Notaðu frekar \"Bæta við skrám\" og \"Bæta við möppu\" hnappana til að velja skrár.", "gui_autoconnect_description": "OnionShare reiðir sig á Tor-netið sem rekið er af sjálfboðaliðum.", "gui_enable_autoconnect_checkbox": "Tengjast sjálfvirkt við Tor", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Fer framhjá ritskoðun…", "gui_autoconnect_circumventing_censorship_starting_meek": "Kem á meek-brú fyrir lénaframhlið (domain fronting)…", "gui_autoconnect_failed_to_connect_to_tor": "Gat ekki tengst við Tor", "gui_autoconnect_trying_to_connect_to_tor": "Tengist við Tor…", "gui_autoconnect_connection_error_msg": "Gakktu úr skugga um að þú sért tengd/ur við internetið.", "gui_autoconnect_bridge_description": "Þú gætir tengst með brú ef internettengingin þín er ritskoðuð.", "gui_autoconnect_bridge_detect_automatic": "Ákvarða landið mitt út frá IP-vistfangi fyrir stillingar brúa", "gui_autoconnect_bridge_detect_manual": "Velja landið mitt handvirkt fyrir stillingar brúa", "gui_autoconnect_circumventing_censorship": "Leysa vandamál í tengingum…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Bið um brýr frá Tor API-kerfisviðmóti fyrir leiðir framhjá ritskoðun…", "gui_autoconnect_circumventing_censorship_got_bridges": "Brúm komið á. Endurtengist Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "Tókst ekki að tengjast Tor API-kerfisviðmótinu. Gakktu úr skugga um að þú sért tengd/ur við internetið áður en þú reynir aftur.", "gui_autoconnect_bridge_setting_options": "Stillingar brúa", "gui_autoconnect_start": "Tengjast við Tor", "gui_autoconnect_configure": "Netstillingar", "gui_autoconnect_no_bridge": "Prófa aftur án brúa", "gui_autoconnect_try_again_without_a_bridge": "Prófa aftur án brúa", "gui_general_settings_window_title": "Almennt", "waitress_web_server_error": "Vandamál kom upp við að ræsa vefþjóninn", "gui_close_tab_warning_chat_description": "Loka flipa sem hýsir spjallþjón?", "gui_chat_mode_explainer": "Spjallhamur gerir þér kleift að spjalla gagnvirkt við aðra í Tor-vafranum.

    Spjallferillinn er ekki geymdur í OnionShare, hann mun hverfa þegar þú lokar Tor-vafranum.", "mode_settings_persistent_autostart_on_launch_checkbox": "Ræsa sjálfkrafa þessa onion-þjónustu þegar OnionShare fer í gang", "gui_settings_license_label": "OnionShare kemur með GPL v3 notkunarleyfi.
    Notkunarleyfi utanaðkomandi aðila má sjá hér:
    https://github.com/onionshare/onionshare/tree/main/licenses", "error_generic": "Upp kom óvænt villa í OnionShare:\n{}" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/it.json000066400000000000000000000530351521174352300271270ustar00rootroot00000000000000{ "other_page_loaded": "Indirizzo caricato", "closing_automatically": "Fermato perché il trasferimento è completato", "large_filesize": "Attenzione: inviare file di grandi dimensioni può richiedere ore", "gui_drag_and_drop": "Trascina e rilascia i file e le cartelle per iniziare la condivisione", "gui_add": "Aggiungi", "gui_choose_items": "Scegli", "gui_share_start_server": "Inizia la condivisione", "gui_share_stop_server": "Arresta la condivisione", "gui_copy_url": "Copia Indirizzo", "gui_canceled": "Annullato", "gui_copied_url": "Indirizzo OnionShare copiato negli appunti", "gui_please_wait": "Avviato... Clicca per annullare.", "zip_progress_bar_format": "In compressione: %p%", "not_a_readable_file": "{0:s} non è un file leggibile.", "close_on_autostop_timer": "Interrotto perché il timer di arresto automatico è scaduto", "systray_menu_exit": "Termina", "gui_share_stop_server_autostop_timer": "Interrompi la condivisione ({})", "gui_receive_start_server": "Avvia modalità Ricezione", "gui_receive_stop_server": "Ferma modalità Ricezione", "gui_receive_stop_server_autostop_timer": "Ferma la ricezione ({} rimanenti)", "gui_copied_url_title": "Indirizzo OnionShare copiato", "gui_quit_warning_quit": "Esci", "gui_settings_window_title": "Impostazioni", "gui_settings_autoupdate_label": "Verifica se c'è una nuova versione", "gui_settings_autoupdate_option": "Avvisami quando è disponibile una nuova versione", "gui_settings_autoupdate_timestamp": "Ultimo controllo: {}", "gui_settings_autoupdate_timestamp_never": "Mai", "gui_settings_autoupdate_check_button": "Controlla se esiste una nuova versione", "gui_settings_connection_type_label": "Come dovrebbe connettersi OnionShare a Tor?", "gui_settings_connection_type_bundled_option": "Usa la versione Tor integrata in OnionShare", "gui_settings_connection_type_automatic_option": "Prova l'auto-configurazione con Tor Browser", "gui_settings_language_label": "Lingua preferita", "gui_settings_language_changed_notice": "Riavvia OnionShare per cambiare la lingua.", "gui_add_files": "Aggiungi file", "gui_add_folder": "Aggiungi una cartella", "gui_settings_connection_type_control_port_option": "Connetti usando la porta di controllo", "gui_settings_connection_type_socket_file_option": "Connetti tramite file socket", "gui_settings_connection_type_test_button": "Verifica la connessione a Tor", "gui_settings_socket_file_label": "File socket", "gui_settings_socks_label": "Porta SOCKS", "gui_settings_authenticate_password_option": "Password", "gui_settings_password_label": "Password", "gui_settings_control_port_label": "Porta di controllo", "gui_settings_authenticate_no_auth_option": "Nessuna autenticazione, o cookie di autenticazione", "gui_settings_tor_bridges": "Connettersi usando un bridge Tor?", "gui_settings_meek_lite_expensive_warning": "Attenzione: i bridge meek_lite sono molto costosi da mantenere per il Progetto Tor.

    Usali solo se è impossibile connettersi a Tor direttamente, con i trasporti obfs4, o con un altro bridge normale.", "gui_settings_tor_bridges_invalid": "Nessuno dei bridge aggiunti funziona. Controllali nuovamente o aggiungine altri.", "gui_settings_button_save": "Salva", "gui_settings_button_cancel": "Cancella", "gui_settings_button_help": "Aiuto", "settings_error_unknown": "Impossibile connettersi al controller Tor perché le tue impostazioni non hanno senso.", "settings_error_automatic": "Impossibile connettersi al controller Tor. Il Tor Browser (disponibile da torproject.org) è in esecuzione in background?", "settings_error_socket_port": "Impossibile connettersi al controller Tor in {}: {}.", "settings_error_socket_file": "Impossibile connettersi al controller Tor utilizzando il file socket {}.", "settings_error_auth": "Connesso a {}: {}, ma non può autenticarsi. Forse questo non è un controller Tor?", "settings_error_missing_password": "Collegato al controller Tor, ma richiede una password per l'autenticazione.", "settings_error_unreadable_cookie_file": "Collegato al controller Tor, ma la password potrebbe essere errata o l'utente non è autorizzato a leggere il file cookie.", "settings_error_bundled_tor_not_supported": "L'uso della versione Tor fornita con OnionShare non funziona in modalità sviluppatore su Windows o macOS.", "settings_error_bundled_tor_timeout": "Prendendo troppo tempo per connettersi a Tor. Forse non sei connesso a Internet o hai un orologio di sistema impreciso?", "settings_error_bundled_tor_broken": "OnionShare non è riuscito a connettersi a Tor in background:\n{}", "settings_test_success": "Collegato al controller Tor.\n\nVersione Tor: {}\nSupporta servizi onion effimeri: {}.\nSupporta l'autenticazione del client: {}.\nSupporta indirizzi .onion next-gen: {}.", "error_tor_protocol_error": "Si è verificato un errore con Tor: {}", "connecting_to_tor": "In connessione alla rete Tor", "update_available": "E' disponibile una nuova versione di OnionShare. Clicca qui per scaricarla.

    Stai usando {} e l'ultima versione è {}.", "update_error_check_error": "Non è possibile controllare per una nuova versione: Magari non sei connesso a Tor, o il sito OnionShare non funziona?", "update_error_invalid_latest_version": "Non è possibile verificare per la nuova versione: il sito OnionShare dice che l'ultima versione non è riconoscibile '{}'…", "update_not_available": "Stai usando la ultima versione di OnionShare.", "gui_tor_connection_ask": "Apri le impostazione per trovare la connessione a Tor?", "gui_tor_connection_ask_open_settings": "Sì", "gui_tor_connection_ask_quit": "Esci", "gui_tor_connection_error_settings": "Prova a modificare le impostazioni di come OnionShare si connette alla rete Tor.", "gui_tor_connection_canceled": "Impossibile connettersi a Tor,\n\nAssicurati di essere connesso a Internet, dopo prova a riaprire OnionShare e configurare la connessione a Tor.", "gui_tor_connection_lost": "Disconnesso da Tor.", "gui_server_started_after_autostop_timer": "Il timer ad arresto automatico si è fermato prima dell'avvio del server. Si prega di fare una nuova condivisione.", "gui_server_autostop_timer_expired": "Il timer di arresto automatico è già scaduto. Si prega di modificarlo per iniziare la condivisione.", "gui_share_url_description": "Tutti con questo indirizzo OnionShare possono scaricare i tuoi file usando il Browser Tor: ", "gui_receive_url_description": "Tutti con questo indirizzo OnionShare possono caricare file nel tuo computer usando il Browser Tor: ", "gui_url_label_persistent": "Questa condivisione non si arresterà automaticamente.

    Ogni successiva condivisione riutilizza l'indirizzo. (Per utilizzare indirizzi monouso, disattivare \"Usa indirizzo persistente\" nelle impostazioni.)", "gui_url_label_stay_open": "Questa condivisione non si arresterà automaticamente.", "gui_url_label_onetime": "Questa condivisione verrà interrotta dopo il primo completamento.", "gui_url_label_onetime_and_persistent": "Questa condivisione non si arresterà automaticamente.

    Ogni condivisione successiva riutilizzerà l'indirizzo. (Per utilizzare indirizzi monouso, disattivare \"Usa indirizzo persistente\" nelle impostazioni.)", "gui_status_indicator_share_stopped": "Fermato", "gui_status_indicator_share_working": "Iniziando…", "gui_status_indicator_share_started": "Condividendo", "gui_status_indicator_receive_stopped": "Fermato", "gui_status_indicator_receive_working": "Iniziando…", "gui_status_indicator_receive_started": "Ricevendo", "gui_file_info": "{} file, {}", "gui_file_info_single": "{} file, {}", "history_in_progress_tooltip": "{} in avanzamento", "history_completed_tooltip": "{} completato", "gui_receive_mode_warning": "La modalità ricezione permette alle persone di fare l'upload di file nel tuo computer.

    Alcuni file possono potenzialmente prendere il controllo del tuo computer se li apri. Apri solamente file di persone di cui ti fidi, o se sai quello che stai facendo.", "systray_page_loaded_title": "Pagina caricata", "error_cannot_create_data_dir": "Non è possibile creare la cartella dati OnionShare: {}", "systray_page_loaded_message": "Indirizzo OnionShare caricato", "systray_share_started_title": "Condivisione iniziata", "systray_share_started_message": "Inizio dell'invio dei file a qualcuno", "systray_share_completed_title": "Condivisione completata", "systray_share_completed_message": "Completato l'invio dei file", "systray_share_canceled_title": "Condivisione annullata", "systray_share_canceled_message": "Qualcuno ha annullato la ricezione dei file", "systray_receive_started_title": "Inizio ricezione", "systray_receive_started_message": "Qualcuno ti sta inviando dei file", "gui_all_modes_history": "Storico", "gui_all_modes_clear_history": "Pulisci tutto", "gui_all_modes_transfer_started": "Iniziato {}", "gui_all_modes_transfer_finished_range": "Trasferito {} - {}", "gui_all_modes_transfer_finished": "Trasferito {}", "gui_all_modes_transfer_canceled_range": "Annullato {} - {}", "gui_all_modes_transfer_canceled": "Annullato {}", "gui_all_modes_progress_complete": "%p%, {0:s} trascorsi.", "gui_all_modes_progress_starting": "{0:s}, %p% (in calcolo)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Nessun file ancora inviato", "gui_share_mode_autostop_timer_waiting": "Terminando l'invio…", "gui_receive_mode_no_files": "Nessun file ricevuto ancora", "gui_receive_mode_autostop_timer_waiting": "Terminando la ricezione…", "gui_stop_server_autostop_timer_tooltip": "Il timer di arresto automatico termina alle {}", "gui_start_server_autostart_timer_tooltip": "Il timer di avvio automatico termina alle {}", "gui_waiting_to_start": "Programmato per avviarsi in {}. Clicca per annullare.", "gui_server_autostart_timer_expired": "L'ora pianificata è già passata. Si prega di modificarla per iniziare la condivisione.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Il tempo di arresto automatico non può essere uguale o precedente all'ora di avvio automatico. Si prega di modificarlo per iniziare la condivisione.", "gui_status_indicator_share_scheduled": "In programma…", "gui_status_indicator_receive_scheduled": "In programma…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "incorrect_password": "Password errata", "gui_website_url_description": "Chiunque, con questo indirizzo di OnionShare, può visitare il tuo sito web utilizzando il Browser Tor: ", "gui_website_mode_no_files": "Nessun sito web condiviso al momento", "history_requests_tooltip": "{} richieste web", "gui_chat_start_server": "Avvia il server della chat", "mode_settings_advanced_toggle_hide": "Nascondi le impostazioni avanzate", "mode_settings_advanced_toggle_show": "Mostra impostazioni avanzate", "gui_tab_name_chat": "Chat", "gui_tab_name_website": "Sito web", "gui_tab_name_receive": "Ricevi", "gui_tab_name_share": "Condividi", "gui_main_page_chat_button": "Inizia a Chattare", "gui_main_page_receive_button": "Inizia a Ricevere", "gui_main_page_share_button": "Inizia Condivisione", "gui_new_tab_chat_button": "Chatta in modo anonimo", "gui_new_tab_receive_button": "Ricevi File", "gui_new_tab_share_button": "Condividi Files", "gui_new_tab_tooltip": "Apri una nuova scheda", "gui_new_tab": "Nuova Scheda", "gui_open_folder_error": "Impossibile aprire la cartella con xdg-open. Il file è qui: {}", "gui_qr_code_dialog_title": "OnionShare QR Code", "gui_show_qr_code": "Mostra QR Code", "gui_receive_flatpak_data_dir": "Dato che hai installato OnionShare usando Flatpak, devi salvare i file nella cartella ~/OnionShare.", "gui_chat_stop_server": "Ferma il server della chat", "gui_file_selection_remove_all": "Rimuovi tutto", "gui_remove": "Rimuovi", "gui_close_tab_warning_receive_description": "Chiudere la scheda che sta ricevendo file?", "gui_close_tab_warning_share_description": "Chiudere la scheda che sta inviando file?", "gui_close_tab_warning_title": "Chiudere la scheda?", "gui_new_tab_website_button": "Ospita un sito web", "gui_quit_warning_description": "La condivisione è attiva in alcune delle tue schede. Uscendo, tutte le tue schede verranno chiuse. Sei sicuro di voler uscire?", "gui_quit_warning_title": "Uscire da OnionShare?", "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_website_description": "Stai ospitando un sito web. Sei sicuro di voler chiudere questa scheda?", "mode_settings_website_disable_csp_checkbox": "Non inviare l'intestazione della Politica sulla Sicurezza dei Contenuti (consente al sito web di utilizzare risorse di terze parti)", "mode_settings_receive_data_dir_browse_button": "Naviga", "mode_settings_autostop_timer_checkbox": "Interrompere il servizio onion all'ora pianificata", "mode_settings_autostart_timer_checkbox": "Avviare il servizio onion all'ora pianificata", "mode_settings_persistent_checkbox": "Aprire sempre questa scheda quando si avvia OnionShare (l'indirizzo Onion rimarrà lo stesso)", "gui_quit_warning_cancel": "Annulla", "gui_close_tab_warning_cancel": "Annulla", "gui_close_tab_warning_persistent_description": "Questa scheda è persistente. Se lo chiudi perderai l'indirizzo onion che sta usando. Sei sicuro di volerlo chiudere?", "gui_main_page_website_button": "Inizia a Ospitare", "gui_chat_url_description": "Chiunque con questo indirizzo OnionShare può unirsi a questa chat room utilizzando Tor Browser:", "mode_settings_receive_data_dir_label": "Salva i file in", "mode_settings_share_autostop_sharing_checkbox": "Interrompi la condivisione dopo che i file sono stati inviati (deseleziona per consentire lo scaricamento di singoli file)", "mode_settings_public_checkbox": "Non usare una password", "gui_rendezvous_cleanup_quit_early": "Chiudi in anticipo", "gui_rendezvous_cleanup": "In attesa che i circuiti Tor si chiudano per assicurarsi che i file siano stati trasferiti con successo.\n\nQuesto potrebbe richiedere alcuni minuti.", "error_port_not_available": "Porta OnionShare non disponibile", "gui_color_mode_changed_notice": "Riavvia OnionShare per vedere i nuovi colori.", "gui_qr_label_auth_string_title": "Chiave privata", "gui_reveal": "Rivela", "gui_tor_settings_window_title": "Impostazioni Tor", "gui_settings_bridge_moat_radio_option": "Richiedi un bridge da torproject.org", "gui_settings_controller_extras_label": "Impostazioni Tor", "gui_settings_bridge_use_checkbox": "Usa un bridge", "gui_settings_bridge_moat_button": "Richiedi un nuovo bridge", "gui_settings_moat_bridges_invalid": "Non hai ancora richiesto un bridge da torproject.org.", "mode_settings_receive_disable_files_checkbox": "Disattiva upload file", "moat_contact_label": "Contatto BridgeDB…", "moat_captcha_label": "Risolvi il CAPTCHA per richiedere un bridge.", "moat_solution_empty_error": "Inserisci i caratteri dell'immagine", "mode_tor_not_connected_label": "OnionShare non è connesso alla rete Tor", "gui_copied_client_auth": "Chiave privata copiata negli appunti", "gui_copy_client_auth": "Copia chiave privata", "gui_copied_client_auth_title": "Chiave privata copiata", "gui_qr_label_url_title": "Indirizzo OnionShare", "gui_status_indicator_chat_working": "Avvio…", "gui_autoconnect_circumventing_censorship_got_bridges": "Bridge stabiliti. Riconnessione a Tor…", "gui_settings_bridge_none_radio_option": "Non usare bridge", "gui_autoconnect_connection_error_msg": "Assicurati di essere connesso ad Internet.", "gui_please_wait_no_button": "Avvio…", "gui_hide": "Nascondi", "gui_autoconnect_trying_to_connect_to_tor": "Connessione a Tor…", "mode_settings_receive_webhook_url_checkbox": "Usa webhook notifica", "gui_settings_theme_label": "Tema", "gui_settings_theme_light": "Chiaro", "gui_enable_autoconnect_checkbox": "Connetti automaticamente a Tor", "gui_autoconnect_failed_to_connect_to_tor": "Impossibile connettersi a Tor", "gui_autoconnect_bridge_setting_options": "Impostazioni Bridge", "gui_autoconnect_circumventing_censorship": "Risoluzione problemi di connettività…", "gui_autoconnect_start": "Connettiti a Tor", "gui_autoconnect_configure": "Impostazioni di rete", "gui_autoconnect_no_bridge": "Riprova senza bridge", "gui_autoconnect_try_again_without_a_bridge": "Riprova senza bridge", "gui_general_settings_window_title": "Generale", "gui_settings_version_label": "Stai usando OnionShare {}", "gui_settings_theme_dark": "Scuro", "mode_settings_title_label": "Titolo personalizzato", "history_receive_read_message_button": "Leggi messaggio", "moat_captcha_placeholder": "Inserisci i caratteri dell'immagine", "moat_captcha_submit": "Invia", "moat_captcha_reload": "Ricarica", "moat_captcha_error": "Soluzione non corretta. Riprova.", "gui_dragdrop_sandbox_flatpak": "Per rendere la sandbox Flatpack più sicura, il \"drag and drop\" non è supportato. Usa i pulsanti \"Aggiungi file\" e \"Aggiungi cartella\" invece.", "gui_settings_bridge_radio_builtin": "Seleziona un bridge predefinito", "gui_settings_theme_auto": "Automatico", "gui_chat_url_public_description": "Chiunque con questo indirizzo OnionShare può entrare in questa chat room usando Tor Browser: ", "gui_url_instructions": "Prima di tutto invia l'indirizzo OnionShare qua sotto:", "gui_status_indicator_chat_scheduled": "Pianificato…", "gui_autoconnect_bridge_description": "Potresti riuscire a connetterti usando un bridge se la tua connessione ad Internet è censurata.", "gui_share_url_public_description": "Chiunque con questo indirizzo OnionShare può scaricare i tuoi file usando Tor Browser: ", "gui_website_url_public_description": "Chiunque con questo indirizzo OnionShare può visitare il tuo sito web usando Tor Browser: ", "gui_receive_url_public_description": "Chiunque con questo indirizzo OnionShare può caricare file sul tuo computer usando Tor Browser: ", "gui_autoconnect_description": "OnionShare si affida alla rete Tor gestita da volontari.", "gui_autoconnect_bridge_detect_automatic": "Determina il mio paese dal mio indirizzo IP per le impostazioni di bridge", "gui_autoconnect_bridge_detect_manual": "Seleziona il mio paese manualmente per le impostazioni di bridge", "gui_settings_help_label": "Hai bisogno di aiuto? Visita docs.onionshare.org", "gui_url_instructions_public_mode": "Invia l'indirizzo OnionShare qua sotto:", "gui_client_auth_instructions": "Successivamente, invia la chiave privata per consentire l'accesso al servizio OnionShare:", "moat_bridgedb_error": "Impossibile contattare BridgeDB.", "gui_status_indicator_chat_stopped": "Fermato", "gui_settings_stop_active_tabs_label": "Ci sono servizi in esecuzione in alcune delle tue schede.\nDevi arrestare tutti i servizi per modificare le impostazioni di Tor.", "waitress_web_server_error": "\"Si è verificato un problema nell'avvio del server web\"", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Eludere la censura…", "gui_settings_bridge_custom_radio_option": "\"Fornisci un bridge di cui hai avuto notizia da una fonte affidabile.\"", "gui_settings_bridge_custom_placeholder": "\"inserisci indirizzo:porta (uno per riga)\"", "mode_settings_website_custom_csp_checkbox": "\"Invia un'intestazione personalizzata per la politica di sicurezza dei contenuti\"", "gui_autoconnect_circumventing_censorship_starting_meek": "Stabilendo un bridge meek per il domain-fronting…", "gui_autoconnect_could_not_connect_to_tor_api": "Impossibile connettersi all'API di Tor. Assicurati di essere connesso a Internet prima di riprovare.", "gui_close_tab_warning_chat_description": "Chiudere la scheda che ospita un server di chat?", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Richiesta di bridge tramite la API di elusione della censura di Tor…", "gui_settings_tor_bridges_label": "I bridge consentono al tuo traffico di entrare nella rete Tor se l'accesso a Tor è bloccato. A seconda di dove ti connetti, un bridge potrebbe funzionare meglio di un altro.", "gui_status_indicator_chat_started": "\"In chat\"", "mode_settings_receive_disable_text_checkbox": "\"Disabilita l'invio di testo\"", "gui_server_doesnt_support_stealth": "Spiacenti, questa versione di Tor non supporta la modalità stealth (autenticazione del client). Prova con una versione più recente di Tor o utilizza la modalità 'pubblica' se non è necessario che sia privata.", "gui_chat_mode_explainer": "La modalità chat ti consente di chattare in modo interattivo con gli altri, in Tor Browser.

    La cronologia chat non viene archiviata in OnionShare. La cronologia della chat scomparirà quando chiudi Tor Browser.", "mode_settings_persistent_autostart_on_launch_checkbox": "Avvia automaticamente questo servizio onion all'avvio di OnionShare" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ja.json000066400000000000000000000636031521174352300271070ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} はは読み取り可能なファイルではありません。", "other_page_loaded": "アドレスを読み込みました", "close_on_autostop_timer": "自動タイマーがタイムアウトしたため停止しました", "closing_automatically": "転送を完了したため停止しました", "large_filesize": "注意: 大きなファイルを送信するには数時間かかる可能性があります", "systray_menu_exit": "終了", "gui_drag_and_drop": "共有を開始するには、ファイルやフォルダーをドラッグアンドドロップしてください", "gui_add": "追加", "gui_add_files": "ファイルを追加", "gui_add_folder": "フォルダーを追加", "gui_choose_items": "選択", "gui_share_start_server": "共有を開始", "gui_share_stop_server": "共有を停止", "gui_share_stop_server_autostop_timer": "共有を停止中です ({})", "gui_receive_start_server": "受信モードを開始", "gui_receive_stop_server": "受信モードを停止", "gui_receive_stop_server_autostop_timer": "受信モードを停止 (残り {} 秒)", "gui_copy_url": "アドレスをコピー", "gui_canceled": "キャンセルしました", "gui_copied_url_title": "OnionShare のアドレスをコピーしました", "gui_copied_url": "OnionShare のアドレスをクリップボードへコピーしました", "gui_please_wait": "開始しています… クリックしてキャンセルします。", "gui_quit_warning_quit": "終了", "zip_progress_bar_format": "圧縮しています: %p%", "gui_settings_window_title": "設定", "gui_settings_autoupdate_label": "新しいバージョンを確認", "gui_settings_autoupdate_option": "新しいバージョンがある場合に通知", "gui_settings_autoupdate_timestamp": "最終確認日時: {}", "gui_settings_autoupdate_timestamp_never": "未確認", "gui_settings_autoupdate_check_button": "新しいバージョンを確認", "gui_settings_connection_type_label": "OnionShare が Tor に接続する方法", "gui_settings_connection_type_bundled_option": "OnionShare に内蔵された Tor バージョンを使用", "gui_settings_connection_type_automatic_option": "Tor Browser との自動設定を試みる", "gui_settings_connection_type_control_port_option": "コントロールポートを使用して接続", "gui_settings_connection_type_socket_file_option": "ソケットファイルを使用して接続", "gui_settings_connection_type_test_button": "Tor への接続をテスト", "gui_settings_control_port_label": "コントロールポート", "gui_settings_socket_file_label": "ソケットファイル", "gui_settings_socks_label": "SOCKS ポート", "gui_settings_authenticate_no_auth_option": "認証なし、または Cookie 認証", "gui_settings_authenticate_password_option": "パスワード", "gui_settings_password_label": "パスワード", "gui_settings_tor_bridges": "Tor ブリッジを使用して接続しますか?", "gui_settings_meek_lite_expensive_warning": "警告: meek-azure ブリッジは Tor Project にとって非常に高額な維持費がかかります。

    直接に Tor と接続できず、obsf4 ブリッジや他のブリッジが使用できない場合のみに使用してください。", "gui_settings_tor_bridges_invalid": "追加したすべてのブリッジが機能していません。再確認するか、他のブリッジを追加してください。", "gui_settings_button_save": "保存", "gui_settings_button_cancel": "キャンセル", "gui_settings_button_help": "ヘルプ", "settings_error_unknown": "設定を解釈できないため、Torコントローラーに接続できません。", "settings_error_automatic": "Tor コントローラーに接続できません。Tor Browser (torproject.org で入手可能) がバックグラウンドで動作していますか?", "settings_error_socket_port": "{}:{} で Tor コントローラーに接続できません。", "settings_error_socket_file": "ソケットファイル {} では Tor コントローラーに接続できません。", "settings_error_auth": "{}:{} に接続しましたが、認証ができません。これは Tor コントローラーではないかもしれません。", "settings_error_missing_password": "Tor コントローラーに接続しましたが、認証にはパスワードが必要です。", "settings_error_unreadable_cookie_file": "Tor コントローラーに接続しましたが、パスワードが正しくないか、Cookie ファイルを読み込む権限がありません。", "settings_error_bundled_tor_not_supported": "Windows と macOS 上では、OnionShare に組み込まれているバージョンの Tor を開発者モードで動作させることはできません。", "settings_error_bundled_tor_timeout": "Tor に接続できません。インターネットに接続していないか、システム時刻が正しくない可能性があります。", "settings_error_bundled_tor_broken": "OnionShare は Tor に接続できませんでした:\n{}", "settings_test_success": "Tor コントローラーに接続しました。\n\nTor バージョン: {}\nエフェメラル Onion Service のサポート: {}\nクライアント認証のサポート: {}\nnext-gen .onion アドレスのサポート: {}.", "error_tor_protocol_error": "Tor にエラーが生じました: {}", "connecting_to_tor": "Tor ネットワークに接続しています", "update_available": "OnionShare の新しいバージョンが公開されました。ここをクリックすると入手できます。

    あなたが使用しているバージョンは {} で、最新のバージョンは {} です。", "update_error_check_error": "新しいバージョンを確認できませんでした。おそらく Tor に接続していないか、OnionShare 公式サイトが機能していない可能性があります。", "update_error_invalid_latest_version": "新しいバージョンを確認できませんでした。OnionShare 公式サイトによると、最新バージョンは認識不能な'{}'です…", "update_not_available": "あなたは OnionShare の最新バージョンを使っています。", "gui_tor_connection_ask": "Tor への接続に関する問題を解決するために設定画面を開きますか?", "gui_tor_connection_ask_open_settings": "はい", "gui_tor_connection_ask_quit": "終了", "gui_tor_connection_error_settings": "設定で Tor との接続方法を変更してみてください。", "gui_tor_connection_canceled": "Tor に接続できませんでした。\n\nインターネット接続を確認してから、OnionShare を再開して Tor との接続を設定してください。", "gui_tor_connection_lost": "Tor から切断しました。", "gui_server_started_after_autostop_timer": "サーバーが開始する前に、自動停止タイマーで設定している時間に到達しました。新たに共有を行ってください。", "gui_server_autostop_timer_expired": "自動停止タイマーで設定している時間に到達しました。共有を開始するには、タイマーを調整してください。", "gui_share_url_description": "この OnionShare アドレスと秘密鍵を知っている人であれば誰でもTor Browser であなたのファイルをダウンロードできます: ", "gui_receive_url_description": "この OnionShare アドレスと秘密鍵を知っている人であれば誰でもTor Browser であなたのコンピューターにファイルをアップロードできます: ", "gui_url_label_persistent": "この共有は自動では停止しません。

    次回以降の共有も同じアドレスを使用します。(1回限りのアドレスを使うには、設定で「OnionShare の起動時に常にこのタブを開く」を無効にしてください。)", "gui_url_label_stay_open": "この共有は自動では停止しません。", "gui_url_label_onetime": "この共有は最初の完了後に停止します。", "gui_url_label_onetime_and_persistent": "この共有は自動では停止しません。

    次回以降の共有も同じアドレスを使用します。(1回限りのアドレスを使うには、設定画面で「OnionShare の起動時に常にこのタブを開く」を無効にしてください。)", "gui_status_indicator_share_stopped": "停止中", "gui_status_indicator_share_working": "開始しています…", "gui_status_indicator_share_started": "共有しています", "gui_status_indicator_receive_stopped": "停止中", "gui_status_indicator_receive_working": "開始しています…", "gui_status_indicator_receive_started": "受信しています", "gui_file_info": "{} ファイル、{}", "gui_file_info_single": "{} ファイル、{}", "history_in_progress_tooltip": "{} 進行中", "history_completed_tooltip": "{} 完了", "gui_receive_mode_warning": "受信モードでは、他の人があなたのコンピューターにファイルをアップロードすることができます。

    悪意ある人物によってアップロードされたファイルを開くと、コンピューターが乗っ取られる可能性があります。自分がしようとしていることを理解している場合、または、信頼できる人物がアップロードした場合以外に、ファイルは開かないでください。", "systray_page_loaded_title": "ページを読み込みました", "gui_settings_language_label": "言語", "gui_settings_language_changed_notice": "新しい言語に切り替えるには OnionShare を再起動してください。", "error_cannot_create_data_dir": "OnionShare のデータフォルダーを作成できませんでした: {}", "systray_page_loaded_message": "OnionShare アドレスを読み込みました", "systray_share_started_title": "共有を開始しました", "systray_share_started_message": "ファイルの送信を開始しています", "systray_share_completed_title": "共有を完了しました", "systray_share_completed_message": "ファイルの送信を完了しました", "systray_share_canceled_title": "共有を停止しました", "systray_share_canceled_message": "誰かがファイルの受信を停止しました", "systray_receive_started_title": "受信を開始しました", "systray_receive_started_message": "誰かがあなたにファイルを送信しています", "gui_all_modes_history": "履歴", "gui_all_modes_clear_history": "すべてクリア", "gui_all_modes_transfer_started": "開始 {}", "gui_all_modes_transfer_finished_range": "転送 {} - {}", "gui_all_modes_transfer_finished": "転送 {}", "gui_all_modes_transfer_canceled_range": "停止 {} - {}", "gui_all_modes_transfer_canceled": "停止 {}", "gui_all_modes_progress_complete": "%p%, 経過時間 {0:s} 。", "gui_all_modes_progress_starting": "{0:s}, %p% (計算中)", "gui_all_modes_progress_eta": "{0:s}, 完了予定時刻: {1:s}, %p%", "gui_share_mode_no_files": "送信したファイルはまだありません", "gui_share_mode_autostop_timer_waiting": "送信を完了しています…", "gui_receive_mode_no_files": "受信したファイルはまだありません", "gui_receive_mode_autostop_timer_waiting": "受信を完了しています…", "gui_stop_server_autostop_timer_tooltip": "自動停止タイマーは {} に終了します", "gui_start_server_autostart_timer_tooltip": "自動開始タイマーは {} に終了します", "gui_waiting_to_start": "{} 後に開始予定。クリックしてキャンセルします。", "gui_server_autostart_timer_expired": "予定した時間が終了しました。共有を開始するには、タイマーを調整してください。", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "自動停止の時間は、自動開始の時間より後に設定しなければなりません。共有を開始するには、タイマーを調整してください。", "gui_status_indicator_share_scheduled": "スケジュール済み…", "gui_status_indicator_receive_scheduled": "スケジュール済み…", "days_first_letter": "日", "hours_first_letter": "時間", "minutes_first_letter": "分", "seconds_first_letter": "秒", "gui_website_url_description": "この OnionShare アドレスと秘密鍵を知っている人であれば誰でもTor Browser であなたのウェブサイトを閲覧できます: ", "gui_website_mode_no_files": "共有したウェブサイトはまだありません", "incorrect_password": "パスワードが正しくありません", "history_requests_tooltip": "{} ウェブリクエスト", "mode_settings_website_disable_csp_checkbox": "既定のコンテンツセキュリティポリシーヘッダーを送信しない (ウェブサイトで第三者のリソースを使用できるようになります)", "mode_settings_receive_data_dir_browse_button": "閲覧", "mode_settings_receive_data_dir_label": "ファイルの保存先", "mode_settings_share_autostop_sharing_checkbox": "ファイル送信が終了したら共有を停止 (個々のファイルのダウンロードを許可する場合はオフにします)", "mode_settings_autostop_timer_checkbox": "指定の日時に Onion Service を停止", "mode_settings_autostart_timer_checkbox": "指定の日時に Onion Service を開始", "mode_settings_public_checkbox": "公開の OnionShare のサービスとして設定 (秘密鍵が無効となります)", "mode_settings_persistent_checkbox": "OnionShare の起動時に常にこのタブを開く (Onion アドレスは変更されません)", "mode_settings_advanced_toggle_hide": "詳細設定を非表示", "mode_settings_advanced_toggle_show": "詳細設定を表示", "gui_quit_warning_cancel": "キャンセル", "gui_quit_warning_description": "共有を行っているタブがありますが、すべてのタブを閉じてもよろしいですか?", "gui_quit_warning_title": "OnionShare を終了しますか?", "gui_close_tab_warning_cancel": "キャンセル", "gui_close_tab_warning_close": "はい", "gui_close_tab_warning_website_description": "ウェブサイトをホスト中のタブを閉じてもよろしいですか?", "gui_close_tab_warning_receive_description": "ファイル受信中のタブを閉じてもよろしいですか?", "gui_close_tab_warning_share_description": "ファイル送信中のタブを閉じてもよろしいですか?", "gui_close_tab_warning_persistent_description": "固定タブを閉じると、そのタブの Onion アドレスが失われます。よろしいですか?", "gui_close_tab_warning_title": "タブを閉じますか?", "gui_tab_name_chat": "チャット", "gui_tab_name_website": "ウェブサイト", "gui_tab_name_receive": "受信", "gui_tab_name_share": "共有", "gui_main_page_chat_button": "チャットを開始", "gui_main_page_website_button": "ホストを開始", "gui_main_page_receive_button": "受信を開始", "gui_main_page_share_button": "共有を開始", "gui_new_tab_chat_button": "匿名でチャット", "gui_new_tab_website_button": "ウェブサイトをホスト", "gui_new_tab_receive_button": "ファイルを受信", "gui_new_tab_share_button": "ファイルを共有", "gui_new_tab_tooltip": "新しいタブを開く", "gui_new_tab": "新しいタブ", "gui_open_folder_error": "xdg-open でフォルダーを開くことができませんでした。ファイルはここにあります: {}", "gui_qr_code_dialog_title": "OnionShare QR コード", "gui_show_qr_code": "QR コードを表示", "gui_receive_flatpak_data_dir": "Flatpak で OnionShare をインストールしたため、ファイルを ~/OnionShare の中のフォルダーに保存しなければなりません。", "gui_chat_stop_server": "チャットサーバーを停止", "gui_chat_start_server": "チャットサーバーを開始", "gui_file_selection_remove_all": "すべてを削除", "gui_remove": "削除", "error_port_not_available": "OnionShare のポートは利用できません", "gui_rendezvous_cleanup_quit_early": "早めに終了", "gui_rendezvous_cleanup": "ファイルを確実に転送するため、Tor 回線が閉じるのを待ちます。\n\nこれには数分かかる可能性があります。", "gui_chat_url_description": "この OnionShare アドレスと秘密鍵を知っている人であれば誰でもTor Browserこのチャットルームに入れます: ", "history_receive_read_message_button": "メッセージを読む", "mode_settings_receive_webhook_url_checkbox": "Webhook を使用して通知", "mode_settings_receive_disable_files_checkbox": "ファイルのアップロードを無効にする", "mode_settings_receive_disable_text_checkbox": "テキストの送信を無効にする", "mode_settings_title_label": "カスタムタイトル", "gui_color_mode_changed_notice": "新しいカラーモードを適用するには OnionShare を再起動してください。", "gui_settings_theme_dark": "ダーク", "gui_settings_theme_light": "ライト", "gui_settings_theme_auto": "自動", "gui_settings_theme_label": "テーマ", "gui_status_indicator_chat_started": "チャット中", "gui_status_indicator_chat_scheduled": "スケジュール済み…", "gui_status_indicator_chat_working": "開始しています…", "gui_status_indicator_chat_stopped": "停止中", "gui_client_auth_instructions": "次に、OnionShare サービスへのアクセスを許可する秘密鍵を送信してください。", "gui_url_instructions_public_mode": "OnionShare のアドレスを以下に送信してください。", "gui_url_instructions": "初めに、以下に表示される OnionShare アドレスを送信してください。", "gui_chat_url_public_description": "この OnionShare アドレスを知っている人であれば誰でもTor Browserこのチャットルームに入れます: ", "gui_receive_url_public_description": "この OnionShare アドレスを知っている人であれば誰でもTor Browser であなたのコンピューターにファイルをアップロードできます: ", "gui_website_url_public_description": "この OnionShare アドレスを知っている人であれば誰でもTor Browser であなたのウェブサイトを閲覧できます: ", "gui_share_url_public_description": "この OnionShare アドレスを知っている人であれば誰でもTor Browser であなたのファイルをダウンロードできます: ", "gui_server_doesnt_support_stealth": "申し訳ありませんが、このバージョンの Tor はステルス (クライアント認証) をサポートしていません。より新しい Tor バージョンを使用するか、非公開とする必要がなければ「公開」モードを使用してください。", "gui_please_wait_no_button": "開始しています…", "gui_hide": "非表示", "gui_reveal": "表示", "gui_qr_label_auth_string_title": "秘密鍵", "gui_qr_label_url_title": "OnionShare のアドレス", "gui_copied_client_auth": "秘密鍵をクリップボードにコピーしました", "gui_copied_client_auth_title": "秘密鍵をコピーしました", "gui_copy_client_auth": "秘密鍵をコピー", "gui_tor_settings_window_title": "Tor の設定", "gui_settings_controller_extras_label": "Tor の設定", "gui_settings_bridge_use_checkbox": "ブリッジを使用", "gui_settings_bridge_radio_builtin": "内蔵ブリッジを選択", "gui_settings_bridge_moat_radio_option": "torproject.org にブリッジをリクエスト", "gui_settings_bridge_custom_radio_option": "信頼できる情報源から入手したブリッジを提供", "gui_settings_bridge_custom_placeholder": "「アドレス:ポート番号」を入力 (各行に1つずつ)", "gui_settings_moat_bridges_invalid": "まだ torproject.org にブリッジをリクエストしていません。", "gui_settings_version_label": "あなたは OnionShare {} を使用しています", "gui_settings_help_label": "サポートが必要ですか?docs.onionshare.orgをご覧ください。", "mode_settings_website_custom_csp_checkbox": "指定するコンテンツセキュリティポリシーヘッダーを送信", "moat_contact_label": "BridgeDB に接続しています…", "moat_captcha_label": "ブリッジをリクエストするには CAPTCHA を解決してください。", "moat_captcha_placeholder": "画像にある文字を入力してください", "moat_captcha_submit": "送信", "moat_captcha_reload": "再読み込み", "moat_bridgedb_error": "BridgeDB に接続できませんでした。", "moat_captcha_error": "解答が正しくありません。もう一度試してください。", "moat_solution_empty_error": "画像にある文字を入力してください", "mode_tor_not_connected_label": "OnionShare は Tor ネットワークに接続していません", "gui_dragdrop_sandbox_flatpak": "Flatpak サンドボックスの安全性を確保するため、ドラッグアンドドロップはサポートしていません。ファイルの選択には「ファイルを追加」と「フォルダーを追加」のボタンを使用してください。", "gui_settings_tor_bridges_label": "Tor へのアクセスが遮断されている場合、ブリッジは Tor ネットワークに接続するのに役立ちます。接続元の場所に応じて、どのブリッジがよく動作するかは変わる可能性があります。", "gui_settings_bridge_none_radio_option": "ブリッジを使用しない", "gui_settings_bridge_moat_button": "新しいブリッジをリクエスト", "gui_settings_stop_active_tabs_label": "いくつかのタブでサービスが動作しています。\nTor の設定を変更するには、すべてのサービスを停止する必要があります。", "gui_autoconnect_description": "OnionShare はボランティアによって運用されている Tor ネットワークに支えられています。", "gui_enable_autoconnect_checkbox": "自動的に Tor に接続", "gui_autoconnect_failed_to_connect_to_tor": "Tor に接続できませんでした", "gui_autoconnect_trying_to_connect_to_tor": "Tor に接続しています…", "gui_autoconnect_connection_error_msg": "インターネットに接続していることをご確認ください。", "gui_autoconnect_bridge_description": "インターネットへの接続が検閲されている場合は、ブリッジを使用すると接続できる可能性があります。", "gui_autoconnect_bridge_detect_automatic": "ブリッジを設定する際、IP アドレスに基づき自動的に国を確定", "gui_autoconnect_bridge_detect_manual": "ブリッジを設定する際、手動で国を選択", "gui_autoconnect_bridge_setting_options": "ブリッジ設定", "gui_autoconnect_start": "Tor に接続", "gui_autoconnect_configure": "ネットワーク設定", "gui_autoconnect_no_bridge": "ブリッジなしで再試行", "gui_autoconnect_try_again_without_a_bridge": "ブリッジなしで再試行", "gui_autoconnect_circumventing_censorship": "接続に関する問題を解決しています…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "検閲を回避しています…", "gui_autoconnect_circumventing_censorship_starting_meek": "ドメインフロンティング用に Meek ブリッジを確立しています…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Tor Censorship Circumvention API にブリッジをリクエストしています…", "gui_autoconnect_circumventing_censorship_got_bridges": "ブリッジを確立しました。Tor に再接続しています…", "gui_autoconnect_could_not_connect_to_tor_api": "Tor API に接続できませんでした。インターネットに接続していることを確認してから再度試してください。", "gui_general_settings_window_title": "一般", "gui_close_tab_warning_chat_description": "チャットサーバーをホスト中のタブを閉じてもよろしいですか?", "waitress_web_server_error": "ウェブサーバーを起動する際に問題が生じました", "gui_chat_mode_explainer": "チャットモードを使用すると、Tor Browser で他のユーザーとチャットを行うことができるようになります。

    チャットの履歴は OnionShare には保存されません。Tor Browser を終了すると、チャットの履歴は消去されます。", "mode_settings_persistent_autostart_on_launch_checkbox": "OnionShare の起動時にこの Onion Service を自動的に開始する", "error_generic": "OnionShare で予期せぬエラーが発生しました:\n{}", "gui_settings_license_label": "OnionShare は GPL v3 の下でライセンスされています。
    サードパーティのライセンスに関する情報:
    https://github.com/onionshare/onionshare/tree/main/licenses" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ka.json000066400000000000000000000104371521174352300271050ustar00rootroot00000000000000{ "systray_menu_exit": "პროგრამის დატოვება", "gui_add": "დამატება", "gui_quit_warning_quit": "პროგრამის დატოვება", "gui_settings_button_save": "შენახვა", "gui_tor_connection_ask_quit": "პროგრამის დატოვება", "gui_settings_theme_dark": "ბნელი", "gui_settings_autoupdate_timestamp_never": "არასდროს", "gui_settings_window_title": "მორგება", "gui_settings_authenticate_password_option": "პაროლი", "gui_tab_name_share": "გაზიარება", "gui_close_tab_warning_cancel": "გაუქმება", "gui_quit_warning_cancel": "გაუქმება", "gui_settings_theme_auto": "ავტო", "gui_settings_bridge_moat_radio_option": "გადამცემი ხიდის მოთხოვნა საიტიდან torproject.org", "gui_status_indicator_chat_working": "გაშვება…", "gui_general_settings_window_title": "ზოგადი", "gui_all_modes_history": "ისტორია", "gui_settings_bridge_custom_placeholder": "აკრიფეთ მისამართი:პორტი (თითო ცალკე ხაზზე)", "gui_settings_language_label": "ენა", "gui_status_indicator_share_started": "გაზიარება", "gui_settings_password_label": "პაროლი", "gui_please_wait_no_button": "გაშვება…", "moat_solution_empty_error": "შეიყვანეთ სურათიდან სიმბოლოები", "gui_status_indicator_share_working": "გაშვება…", "gui_autoconnect_start": "დააკავშირეთ Tor", "gui_settings_button_cancel": "გაუქმება", "gui_settings_button_help": "დახმარება", "gui_tor_connection_ask_open_settings": "დიახ", "gui_status_indicator_receive_working": "გაშვება…", "gui_all_modes_clear_history": "ყველას გასუფთავება", "gui_tab_name_website": "ვებსაიტი", "gui_settings_theme_label": "თემა", "gui_settings_theme_light": "მსუბუქი", "moat_captcha_reload": "თავიდან ჩატვირთვა", "gui_main_page_share_button": "გაზიარების დაწყება", "gui_autoconnect_trying_to_connect_to_tor": "უკავშირდება Tor-ს…", "mode_settings_receive_data_dir_browse_button": "ნუსხა", "gui_tab_name_chat": "ჩატი", "gui_file_selection_remove_all": "ყველას მოცილება", "moat_captcha_label": "გაიარეთ CAPTCHA, გადამცემი ხიდის მოთხოვნისთვის.", "gui_remove": "წაშლა", "gui_hide": "დამალვა", "moat_captcha_submit": "გაგზავნა", "gui_choose_items": "აირჩიეთ", "gui_canceled": "გაუქმებული", "moat_captcha_placeholder": "შეიყვანეთ სურათიდან სიმბოლოები", "gui_share_stop_server": "გაზიარების გაჩერება", "gui_qr_label_url_title": "OnionShare-ის მისამართი", "gui_add_folder": "საქაღალდის დამატება", "gui_share_start_server": "გაზიარების დაწყება", "gui_settings_bridge_use_checkbox": "ხიდის გამოყენება", "gui_copied_url": "OnionShare-მისამართის ასლი აღებულია", "gui_copy_url": "მისამართის ასლი", "gui_settings_bridge_radio_builtin": "აირჩიეთ ჩაშენებული ხიდი", "gui_share_url_public_description": "ყველას, ვისაც ეს OnionShare მისამართი აქვს, შეუძლია, გადმოწეროს თქვენი ფაილები Tor ბრაუზერით: ", "gui_tab_name_receive": "მიღება" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/kab.json000066400000000000000000000061411521174352300272440ustar00rootroot00000000000000{ "gui_settings_window_title": "Iɣewwaren", "gui_general_settings_window_title": "Amatu", "gui_settings_autoupdate_timestamp_never": "Werǧin", "gui_settings_authenticate_password_option": "Awal n uεeddi", "gui_settings_password_label": "Awal n uεeddi", "gui_settings_bridge_custom_placeholder": "type address:port (one per line)", "gui_settings_button_save": "Sekles", "gui_settings_button_cancel": "Sefsex", "gui_settings_button_help": "Tallalt", "gui_tor_connection_ask_open_settings": "Ih", "gui_tor_connection_ask_quit": "Ffeɣ", "gui_status_indicator_share_working": "Asenker…", "gui_status_indicator_share_started": "Beṭṭu", "gui_status_indicator_receive_working": "Asenker…", "gui_new_tab": "Iccer amaynut", "mode_settings_receive_data_dir_browse_button": "Snirem", "gui_add": "Rnu", "gui_add_files": "Rnu ifuyla", "gui_add_folder": "Rnu akaram", "gui_remove": "Kkes", "gui_file_selection_remove_all": "Kkes-iten akk", "gui_choose_items": "Fren", "gui_qr_label_auth_string_title": "Tasarut tusligt", "gui_hide": "Ffer", "gui_please_wait_no_button": "Asenker…", "gui_status_indicator_chat_working": "Asenker…", "gui_settings_language_label": "Tutlayt", "gui_settings_theme_label": "Asentel", "gui_settings_theme_auto": "Awurman", "gui_settings_theme_light": "Aceɛlal", "gui_settings_theme_dark": "Ubrik", "systray_menu_exit": "Ffeɣ", "gui_all_modes_history": "Amazray", "gui_all_modes_clear_history": "Sfeḍ kullec", "gui_main_page_share_button": "Bdu beṭṭu", "gui_tab_name_share": "Bḍu", "gui_tab_name_website": "Asmel n web", "gui_tab_name_chat": "Asqerdec", "gui_quit_warning_quit": "Ffeɣ", "gui_quit_warning_cancel": "Sefsex", "gui_close_tab_warning_cancel": "Sefsex", "moat_captcha_submit": "Azen", "moat_captcha_reload": "Smiren", "gui_canceled": "Yettwasemmet", "gui_status_indicator_share_stopped": "Yettwaḥbes", "gui_status_indicator_receive_stopped": "Yettwaḥbes", "gui_status_indicator_chat_stopped": "Yettwaḥbes", "days_first_letter": "a", "incorrect_password": "Awal n uɛeddi d arameɣtu", "gui_copy_url": "Nɣel tansa", "gui_qr_label_url_title": "Tansa n OnionShare", "zip_progress_bar_format": "Tussda: %p%", "gui_tor_settings_window_title": "Iɣewwaren n Tor", "gui_autoconnect_bridge_setting_options": "Iɣewwaren n tqenṭert", "gui_autoconnect_configure": "Iɣewwaren n uẓeṭṭa", "gui_settings_controller_extras_label": "Iɣewwaren n Tor", "gui_all_modes_transfer_started": "Yebda {}", "gui_new_tab_share_button": "Bḍu ifuyla", "gui_close_tab_warning_title": "Mdel Iccer?", "gui_quit_warning_title": "Ffeɣ seg OnionShare?", "mode_settings_title_label": "Azwel udmawan", "gui_all_modes_transfer_canceled": "Yettwasemmet {}", "history_receive_read_message_button": "Ɣeṛ izen", "gui_share_stop_server_autostop_timer": "Seḥbes beṭṭu ({})", "gui_autoconnect_start": "Tuqqna ɣer Tor", "gui_main_page_website_button": "Start Hosting" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/km.json000066400000000000000000001106711521174352300271220ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} មិនមែនជាឯកសារដែលអាចអានបាន។", "other_page_loaded": "អាសយដ្ឋានត្រូវបានដាក់បញ្ចូល", "close_on_autostop_timer": "បានបញ្ឈប់ ដោយសារកម្មវិធីកំណត់ម៉ោងបញ្ឈប់ដោយស្វ័យប្រវត្តិអស់ពេល", "closing_automatically": "បានបញ្ឈប់ ដោយសារការផ្ទេរត្រូវបានបញ្ចប់", "large_filesize": "ក្រើនរំឭក៖ ការផ្ញើដែលមានទំហំផ្ទុកធំ អាចចំណាយពេលយូរ", "gui_drag_and_drop": "ទាញ និងដាក់បញ្ចូលឯកសារ និងថតឯកសារ ដើម្បីចាប់ផ្តើមចែកចាយ", "gui_add": "បញ្ចូល", "gui_add_files": "បញ្ចូល​ឯកសារ", "gui_add_folder": "បញ្ចូលថតឯកសារ", "gui_choose_items": "ជ្រើសរើស", "gui_share_start_server": "ចាប់ផ្តើមចែករំលែក", "gui_share_stop_server": "បញ្ឈប់ចែករំលែក", "gui_share_stop_server_autostop_timer": "បញ្ឈប់ការចែករំលែកនៅ ({})", "gui_stop_server_autostop_timer_tooltip": "មុខងារបញ្ឈប់ម៉ោងដោយស្វ័យប្រវត្តិ នឹងចប់នៅ {}", "gui_start_server_autostart_timer_tooltip": "មុខងារចាប់ផ្តើមម៉ោងដោយស្វ័យប្រវត្តិ នឹងចប់នៅ {}", "gui_receive_start_server": "ចាប់ផ្តើមទម្រង់ទទួល", "gui_receive_stop_server": "បញ្ឈប់ទម្រង់ទទួល", "gui_receive_stop_server_autostop_timer": "បញ្ឈប់ទម្រង់ទទួល (នៅសល់ពេល{})", "gui_copy_url": "ចម្លងអាសយដ្ឋាន", "gui_canceled": "បានបញ្ឈប់", "gui_copied_url_title": "បានចម្លងអាសយដ្ឋាន OnionShare", "gui_copied_url": "អាសយដ្ឋាន OnionShare ត្រូវបានចម្លងទៅ clipboard", "gui_waiting_to_start": "ការកំណត់ពេលចាប់ផ្តើមនៅ {}។ ចុចដើម្បីបញ្ឈប់។", "gui_please_wait": "កំពុងចាប់ផ្តើម... ចុចដើម្បីបញ្ឈប់។", "gui_quit_warning_quit": "ឈប់", "zip_progress_bar_format": "កំពុងបង្ហាប់ឯកសារ៖ %p%", "gui_settings_window_title": "ការកំណត់", "gui_settings_autoupdate_label": "ពិនិត្យមើលកំណែថ្មី", "gui_settings_autoupdate_option": "ជូនដំណឹងខ្ញុំនៅពេលមានកំណែថ្មី", "gui_settings_autoupdate_timestamp": "បានពិនិត្យចុងក្រោយ៖ {}", "gui_settings_autoupdate_timestamp_never": "មិនដែល", "gui_settings_autoupdate_check_button": "ពិនិត្យមើលកំណែថ្មី", "gui_settings_connection_type_label": "តើ OnionShare ភ្ជាប់ទៅ Tor យ៉ាងដូចម្តេច?", "gui_settings_connection_type_bundled_option": "ប្រើកម្មវិធី Tor ដែលបានដំឡើងក្នុង OnionShare", "gui_settings_connection_type_automatic_option": "ព្យាយាមកំណត់រចនាសម្ព័ន្ធដោយស្វ័យប្រវត្តិជាមួយកម្មវិធីរុករក Tor", "gui_settings_connection_type_control_port_option": "ភ្ជាប់ដោយប្រើច្រកត្រួតពិនិត្យ", "gui_settings_connection_type_socket_file_option": "តភ្ជាប់ដោយប្រើ socket file", "gui_settings_connection_type_test_button": "សាកល្បងការតភ្ជាប់ទៅ Tor", "gui_settings_control_port_label": "ច្រកត្រួតពិនិត្យ", "gui_settings_socket_file_label": "Socket file", "gui_settings_socks_label": "ច្រក SOCKS", "gui_settings_authenticate_no_auth_option": "គ្មានយថាភូតកម្ម ឬ យថាភូតកម្មរបស់ខូឃី", "gui_settings_authenticate_password_option": "ពាក្យ​សម្ងាត់", "gui_settings_password_label": "ពាក្យ​សម្ងាត់", "gui_settings_tor_bridges": "ភ្ជាប់ដោយប្រើ Tor bridge?", "gui_settings_meek_lite_expensive_warning": "ប្រុងប្រយ័ត្ន៖ meek-azure bridges វាត្រូវចំណាយច្រើនសម្រាប់គម្រោង Tor ដើម្បីដំណើរការ។

    សូមប្រើវា បើសិនជាមិនអាចភ្ជាប់ទៅ Tor ដោយផ្ទាល់ តាមរយៈ obfs4 transports ឬ Bridges ធម្មតាផ្សេងទៀត។", "gui_settings_tor_bridges_invalid": "គ្មាន Bridge ណាដែលអ្នកបានបន្ថែមដំណើរការនោះទេ។ ត្រួតពិនិត្យម្ដងទៀត ឬបន្ថែម Bridge ផ្សេងទៀត។", "gui_settings_button_save": "រក្សាទុក", "gui_settings_button_cancel": "បោះបង់", "gui_settings_button_help": "ជំនួយ", "settings_error_unknown": "មិនអាចភ្ជាប់ទៅកន្លែងបញ្ជារបស់ Tor ដោយសារតែការកំណត់របស់អ្នកមិនត្រឹមត្រូវ។", "settings_error_automatic": "មិនអាចភ្ជាប់ទៅកន្លែងបញ្ជារបស់ Tor បានទេ។ តើកម្មវិធីរុករក Tor (អាចរកបានពី torproject.org) ដំណើរការពេលដែលកម្មវិធីមិនបើកដំណើរការឬទេ?", "settings_error_socket_port": "មិនអាចភ្ជាប់ទៅកន្លែងបញ្ជារបស់ Tor នៅ {}:{} ។", "settings_error_socket_file": "មិនអាចភ្ជាប់ទៅកន្លែងបញ្ជារបស់ Tor ដោយប្រើ socket file {}។", "settings_error_auth": "បានភ្ជាប់ទៅ {}:{} ប៉ុន្តែមិនអាចផ្ទៀងផ្ទាត់បានទេ។ ប្រហែលវាមិនមែនជាកន្លែងបញ្ជារបស់ Tor?", "settings_error_missing_password": "បានភ្ជាប់ទៅកន្លែងបញ្ជារបស់ Tor ប៉ុន្តែវាទាមទារពាក្យសម្ងាត់ដើម្បីផ្ទៀងផ្ទាត់។", "settings_error_unreadable_cookie_file": "បានភ្ជាប់ទៅកន្លែងបញ្ជារបស់ Tor ប៉ុន្តែពាក្យសម្ងាត់អាចខុស ឬឈ្មោះប្រើប្រាស់របស់អ្នកមិនត្រូវបានអនុញ្ញាតឱ្យអានឯកសារខូឃីនោះទេ។", "settings_error_bundled_tor_not_supported": "ការប្រើប្រាស់កំណែរបស់ Tor ដែលភ្ជាប់មកជាមួយ OnionShare មិនដំណើរការនៅក្នុងទម្រង់ developer នៅលើ Windows ឬ macOS ទេ។", "settings_error_bundled_tor_timeout": "ចំណាយពេលយូរដើម្បីភ្ជាប់ទៅ Tor ។ ប្រហែលជាអ្នកមិនបានភ្ជាប់អ៊ីនធឺណិត ឬប្រព័ន្ធនាឡិកាក្នុងកំព្យុទ័ររបស់អ្នកមិនត្រឹមត្រូវ?", "settings_error_bundled_tor_broken": "OnionShare មិនអាចភ្ជាប់ទៅ Tor បានទេ៖\n{}", "settings_test_success": "បានភ្ជាប់ទៅកន្លែងបញ្ជា Tor ។\n\nកំណែរបស់ Tor៖ {}\nដំណើរការលើសេវាកម្ម onion រយៈពេលខ្លី៖ {}។\nដំណើរការចំពោះយថាភូតកម្មអ្នកប្រើ៖ {} ។\nដំណើរការចំពោះអាសយដ្ឋាន .onion ជំនាន់បន្ទាប់៖ {}។", "error_tor_protocol_error": "មានកំហុសជាមួយ Tor: {}", "connecting_to_tor": "កំពុងភ្ជាប់ទៅបណ្តាញ Tor", "update_available": "OnionShare ចេញកំណែថ្មី។ ចុចទីនេះ ដើម្បីទទួលបានកំណែថ្មី។

    អ្នកកំពុងប្រើកំណែ {} ហើយកំណែចុងក្រោយបំផុតគឺ {}។", "update_error_check_error": "មិនអាចពិនិត្យមើលកំណែថ្មីបានទេ៖ ប្រហែលជាអ្នកមិនបានភ្ជាប់ទៅ Tor ឬវេបសាយ OnionShare មិនដំណើរការ?", "update_error_invalid_latest_version": "មិន​អាច​ពិនិត្យ​មើល​កំណែ​ថ្មី​បាន​ទេ៖ វេបសាយ OnionShare បង្ហាញថា កំណែ​ចុងក្រោយ​បំផុត​គឺ​មិន​អាច​ស្គាល់ '{}'…", "update_not_available": "អ្នកកំពុងដំណើរការ OnionShare កំណែចុងក្រោយបង្អស់។", "gui_tor_connection_ask": "បើកការកំណត់ដើម្បីជ្រើសការតភ្ជាប់ទៅ Tor?", "gui_tor_connection_ask_open_settings": "យល់ព្រម", "gui_tor_connection_ask_quit": "ចាកចេញ", "gui_tor_connection_error_settings": "សាកល្បងផ្លាស់ប្តូររបៀបដែល OnionShare ភ្ជាប់ទៅបណ្តាញ Tor នៅក្នុងមុខងារការកំណត់។", "gui_tor_connection_canceled": "មិនអាចភ្ជាប់ទៅ Tor បានទេ។\n\nត្រូវប្រាកដថាអ្នកបានភ្ជាប់ទៅអ៊ីនធឺណិត បន្ទាប់មកបើក OnionShare ឡើងវិញ ហើយដំឡើងការតភ្ជាប់របស់វាទៅ Tor ។", "gui_tor_connection_lost": "បានផ្តាច់ចេញពី Tor ។", "gui_server_started_after_autostop_timer": "កម្មវិធីកំណត់ម៉ោងបញ្ឈប់ដោយស្វ័យប្រវត្តិ បានផុតពេលកំណត់មុនម៉ាស៊ីនមេចាប់ផ្តើម។ សូមដំណើរការ ការបញ្ជូនថ្មី។", "gui_server_autostop_timer_expired": "កម្មវិធីកំណត់ម៉ោងបញ្ឈប់ដោយស្វ័យប្រវត្តិបានផុតពេលហើយ។ សូមកែតម្រូវវា ដើម្បីចាប់ផ្តើមការបញ្ជូន។", "gui_server_autostart_timer_expired": "ពេលវេលាដែលបានកំណត់ កន្លងផុតទៅហើយ។ សូមកែតម្រូវវា ដើម្បីចាប់ផ្តើមការបញ្ជូន។", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "កម្មវិធីកំណត់ម៉ោងបញ្ឈប់ដោយស្វ័យប្រវត្តិមិនអាចដូចគ្នា ឬ មុនកម្មវិធីកំណត់ម៉ោងដោយស្វ័យប្រវត្តិចាប់ផ្តើមនោះទេ។ សូមកែតម្រូវវា ដើម្បីចាប់ផ្តើមការបញ្ជូន។", "gui_share_url_description": "នរណាក៏ដោយ ដែលមានអាសយដ្ឋាន OnionShare និងកូនសោសម្ងាត់នេះ អាច ទាញយក ឯកសាររបស់អ្នកដោយប្រើ កម្មវិធីរុករក Tor: ", "gui_receive_url_description": "នរណាក៏ដោយ ដែលមានអាសយដ្ឋាន OnionShare និងកូនសោសម្ងាត់នេះ អាច ផ្ទុកឡើង ឯកសារទៅកុំព្យូទ័ររបស់អ្នក ដោយប្រើ កម្មវិធីរុករក Tor: ", "gui_url_label_persistent": "ការបញ្ជូននេះនឹងមិនឈប់ដោយស្វ័យប្រវត្តិទេ។

    រាល់ការបញ្ជូនបន្តបន្ទាប់ ប្រើអាសយដ្ឋានដដែល។ (ដើម្បីប្រើអាសយដ្ឋានតែម្តង សូមបិទ \"ប្រើអាសយដ្ឋានជាប់ជានិច្ច\" នៅក្នុងការកំណត់។ )", "gui_url_label_stay_open": "ការចែករំលែកនេះ នឹងមិនឈប់ដោយស្វ័យប្រវត្តិទេ។", "gui_url_label_onetime": "ការបញ្ជូននេះ នឹងបញ្ឈប់បន្ទាប់ពីការបញ្ចប់លើកដំបូង។", "gui_url_label_onetime_and_persistent": "ការបញ្ជូននេះ នឹងមិនបញ្ឈប់ដោយស្វ័យប្រវត្តិទេ។

    រាល់ការបញ្ជូនបន្តបន្ទាប់ នឹងប្រើអាសយដ្ឋានដដែល។ (ដើម្បីប្រើអាសយដ្ឋានតែមួយដង សូមបិទ \"ប្រើអាសយដ្ឋានជាប់ជានិច្ច\" នៅក្នុងការកំណត់។ )", "gui_status_indicator_share_stopped": "រួចរាល់ដើម្បីបញ្ជូន", "gui_status_indicator_share_working": "កំពុងចាប់ផ្តើម…", "gui_status_indicator_share_scheduled": "បានកំណត់ពេល…", "gui_status_indicator_share_started": "ការបញ្ជូន", "gui_status_indicator_receive_stopped": "ត្រៀមទទួល", "gui_status_indicator_receive_working": "កំពុងចាប់ផ្តើម…", "gui_status_indicator_receive_scheduled": "បានកំណត់ពេល…", "gui_status_indicator_receive_started": "កំពុងទទួល", "gui_file_info": "{} ឯកសារ, {}", "gui_file_info_single": "{} ឯកសារ, {}", "history_in_progress_tooltip": "{} កំពុង​ដំណើរការ", "history_completed_tooltip": "{} បានបញ្ចប់", "error_cannot_create_data_dir": "មិនអាចបង្កើតថតទិន្នន័យ OnionShare បានទេ៖ {}", "gui_receive_mode_warning": "ទម្រង់ទទួល អនុញ្ញាតឱ្យអ្នកផ្ទុកឡើងនូវឯកសារទៅក្នុងកុំព្យូទ័ររបស់អ្នក។

    ឯកសារមួយចំនួនអាចគ្រប់គ្រងកុំព្យូទ័ររបស់អ្នក ប្រសិនបើអ្នកបើកវាឱ្យដំណើរការ។ បើកតែឯកសារណាដែលផ្ញើមកពីមនុស្សដែលអ្នកទុកចិត្តប៉ុណ្ណោះ ឬអ្នកដឹងថាពីអ្វីដែលអ្នកកំពុងធ្វើ។", "gui_settings_language_label": "ភាសា", "gui_settings_language_changed_notice": "ចាប់ផ្ដើម OnionShare ឡើងវិញសម្រាប់ភាសាថ្មីដែលបានកំណត់។", "systray_menu_exit": "ចាកចេញ", "systray_page_loaded_title": "ទំព័រត្រូវបានផ្ទុក", "systray_page_loaded_message": "អាសយដ្ឋាន OnionShare បានផ្ទុក", "systray_share_started_title": "ការបញ្ជូនបានចាប់ផ្តើម", "systray_share_started_message": "ចាប់ផ្តើមផ្ញើឯកសារទៅនរណាម្នាក់", "systray_share_completed_title": "ការបញ្ជូនត្រូវបានបញ្ចប់", "systray_share_completed_message": "បានបញ្ចប់ការផ្ញើឯកសារ", "systray_share_canceled_title": "ការចែករំលែកត្រូវបានលុបចោល", "systray_share_canceled_message": "មានគេលុបចោលការទទួលឯកសាររបស់អ្នក", "systray_receive_started_title": "ចាប់ផ្តើមទទួល", "systray_receive_started_message": "មានគេកំពុងផ្ញើឯកសារឱ្យអ្នក", "gui_all_modes_history": "ប្រវត្តិ", "gui_all_modes_clear_history": "លុបចេញ​ទាំងអស់", "gui_all_modes_transfer_started": "បានចាប់ផ្តើម {}", "gui_all_modes_transfer_finished_range": "បានផ្ទេរ {} - {}", "gui_all_modes_transfer_finished": "បានផ្ទេរ {}", "gui_all_modes_transfer_canceled_range": "បាន​បោះបង់ {} - {}", "gui_all_modes_transfer_canceled": "បាន​បោះបង់ {}", "gui_all_modes_progress_complete": "%p%, {0:s} កន្លងផុតទៅ។", "gui_all_modes_progress_starting": "{0:s}, %p% (ការគណនា)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "មិនមានឯកសារដែលបានផ្ញើចេញនៅឡើយទេ", "gui_share_mode_autostop_timer_waiting": "កំពុង​រង់ចាំ​ដើម្បី​បញ្ចប់​ការ​ផ្ញើចេញ…", "gui_receive_mode_no_files": "មិនទាន់ទទួលបានឯកសារនៅឡើយទេ", "gui_receive_mode_autostop_timer_waiting": "កំពុងរង់ចាំបញ្ចប់ការទទួល…", "days_first_letter": "ថ", "hours_first_letter": "ម", "minutes_first_letter": "ន", "seconds_first_letter": "វ", "incorrect_password": "ពាក្យសម្ងាត់មិនត្រឹមត្រូវ", "gui_remove": "លុបចេញ", "gui_dragdrop_sandbox_flatpak": "ដើម្បីធ្វើឱ្យ Flatpak sandbox កាន់តែមានសុវត្ថិភាព ការទាញបញ្ចូលមិនដំណើរការនោះទេ។ ប្រើប៊ូតុង បញ្ចូលឯកសារ និង បញ្ចូលថតឯកសារ ដើម្បីជ្រើសរើសឯកសារដទៃទៀតជំនួសវិញ។", "gui_chat_start_server": "ចាប់ផ្តើមបើកម៉ាស៊ីនមេដើម្បីឈែត", "gui_chat_stop_server": "បញ្ឈប់ម៉ាស៊ីនមេឈែត", "gui_receive_flatpak_data_dir": "ដោយសារតែអ្នកបានដំឡើង OnionShare ដោយប្រើ Flatpak អ្នកត្រូវតែរក្សាទុកឯកសារទៅក្នុងថតឯកសារ ក្នុង ~/OnionShare ។", "gui_tab_name_website": "វេបសាយ", "gui_chat_url_public_description": "នរណាក៏ដោយ ដែលមានអាសយដ្ឋាន OnionShare នេះ អាច ចូលរួមក្នុងបន្ទប់ឈែតនេះ ដោយប្រើ កម្មវិធីរុករក Tor: ", "gui_server_doesnt_support_stealth": "សូមអភ័យទោស កំណែរបស់ Tor នេះមិនដំណើរការសម្រាប់យថាភូតកម្មអតិថិជននោះទេ។ សូមសាកល្បងជាមួយកំណែថ្មីរបស់ Tor ឬប្រើទម្រង់ 'សាធារណៈ' ប្រសិនបើវាមិនចាំបាច់ត្រូវការឯកជនភាព។", "gui_website_url_description": "នរណាក៏ដោយ ដែលមានអាសយដ្ឋាន OnionShare និងកូនសោសម្ងាត់នេះ អាច ចូលមើល វេបសាយរបស់អ្នក ដោយប្រើ កម្មវិធីរុករក Tor: ", "gui_settings_tor_bridges_label": "Bridges ជួយអ្នកចូលប្រើបណ្តាញ Tor នៅកន្លែងដែល Tor ត្រូវបានរាំងខ្ទប់។ Bridge មួយអាចដំណើរការបានល្អជាងមួយទៀត វាអាស្រ័យលើទីតាំងរបស់អ្នក។", "gui_settings_moat_bridges_invalid": "អ្នកមិនទាន់បានស្នើសុំ Bridge ពី torproject.org នៅឡើយទេ។", "gui_settings_stop_active_tabs_label": "មានសេវាកម្មផ្សេងទៀតដែលកំពុងដំណើរការនៅក្នុងផ្ទាំងមួយចំនួនរបស់អ្នក។\nអ្នកត្រូវតែបញ្ឈប់សេវាកម្មទាំងអស់ដើម្បីផ្លាស់ប្តូរការកំណត់ Tor របស់អ្នក។", "mode_settings_persistent_checkbox": "បើកផ្ទាំង​ tab នេះជានិច្ច នៅពេលដែល OnionShare ត្រូវបានចាប់ផ្តើម", "mode_settings_autostop_timer_checkbox": "បញ្ឈប់សេវាកម្ម Onion តាមពេលវេលាកំណត់", "mode_settings_advanced_toggle_hide": "លាក់ការកំណត់កម្រិតខ្ពស់", "mode_settings_public_checkbox": "នេះគឺជាសេវាកម្ម OnionShare សាធារណៈ (បិទកូនសោសម្ងាត់)", "mode_settings_receive_data_dir_label": "រក្សាទុកឯកសារទៅ", "mode_settings_receive_disable_text_checkbox": "បិទការដាក់ស្នើអត្ថបទ", "mode_settings_autostart_timer_checkbox": "ចាប់ផ្តើមសេវាកម្ម Onion តាមពេលវេលាកំណត់", "mode_settings_share_autostop_sharing_checkbox": "បញ្ឈប់ការបញ្ជូនបន្ទាប់ពីឯកសារត្រូវបានផ្ញើចេញ (ដោះធីកដើម្បីអនុញ្ញាតឱ្យទាញយកឯកសារនីមួយៗ)", "moat_bridgedb_error": "មិនអាចទាក់ទង BridgeDB។", "mode_settings_website_disable_csp_checkbox": "កុំផ្ញើ header លំនាំដើមរបស់គោលការណ៍សុវត្ថិភាពមាតិកា (អនុញ្ញាតឱ្យវេបសាយរបស់អ្នកប្រើប្រភពពីភាគីទីបី)", "moat_captcha_placeholder": "បញ្ចូលតួអក្សរពីរូបភាព", "moat_captcha_submit": "ដាក់ស្នើ", "moat_captcha_reload": "បើកឡើង​វិញ", "gui_show_qr_code": "បង្ហាញ QR Code", "gui_hide": "លាក់", "gui_tor_settings_window_title": "ការកំណត់ Tor", "gui_settings_controller_extras_label": "ការកំណត់ Tor", "gui_settings_bridge_use_checkbox": "ប្រើ Bridge", "gui_settings_bridge_radio_builtin": "ជ្រើសរើស Bridge ដែលមានស្រាប់", "gui_settings_bridge_none_radio_option": "កុំប្រើ Bridges", "gui_settings_bridge_moat_radio_option": "ស្នើសុំ Bridge ពី torproject.org", "gui_settings_bridge_moat_button": "ស្នើសុំ Bridge ថ្មី", "gui_settings_bridge_custom_radio_option": "ផ្តល់ Bridge ដែលអ្នកបានដឹងពីប្រភពដែលទុកចិត្ត", "gui_settings_bridge_custom_placeholder": "ប្រភេទអាសយដ្ឋាន៖ ច្រក (មួយក្នុងមួយជួរ)", "gui_settings_version_label": "អ្នកកំពុងប្រើ OnionShare {}", "gui_settings_help_label": "ត្រូវការ​ជំនួយ? សូមមើល docs.onionshare.org", "gui_website_url_public_description": "នរណាក៏ដោយ ដែលមានអាសយដ្ឋាន OnionShare នេះ អាច ចូលមើល វេបសាយរបស់អ្នក ដោយប្រើ កម្មវិធីរុករក Tor: ", "gui_chat_url_description": "នរណាក៏ដោយ ដែលមានអាសយដ្ឋាន OnionShare និងកូនសោសម្ងាត់នេះ អាច ចូលរួមក្នុងបន្ទប់ឈែតនេះ ដោយប្រើ កម្មវិធីរុករក Tor: ", "gui_url_instructions": "ជាដំបូង សូមផ្ញើអាសយដ្ឋាន OnionShare ខាងក្រោម៖", "gui_status_indicator_chat_stopped": "រួចរាល់ដើម្បីឈែត", "gui_status_indicator_chat_working": "កំពុងចាប់ផ្តើម…", "history_requests_tooltip": "{} សំណើវេបសាយ", "gui_open_folder_error": "បរាជ័យក្នុងការបើកថតឯកសារជាមួយ xdg-open ។ ឯកសារនៅទីនេះ៖ {}", "gui_website_mode_no_files": "វេបសាយមិនទាន់បានបញ្ជូននៅឡើយទេ", "gui_new_tab_tooltip": "បើកផ្ទាំងថ្មី", "gui_new_tab_share_button": "ចែករំលែកឯកសារ", "gui_new_tab_receive_button": "ទទួលឯកសារ", "gui_new_tab_website_button": "ផ្ទុកទិន្នន័យវេបសាយ", "gui_main_page_share_button": "ចាប់ផ្តើមបញ្ជូន", "gui_main_page_receive_button": "ចាប់ផ្តើមទទួល", "gui_main_page_website_button": "ចាប់ផ្ដើម Hosting", "gui_tab_name_share": "ចែករំលែក", "gui_tab_name_receive": "ទទួល", "gui_tab_name_chat": "ឈែត", "gui_close_tab_warning_title": "បិទផ្ទាំង tab?", "gui_close_tab_warning_share_description": "បិទផ្ទាំង tab ដែលអ្នកកំពុងតែផ្ញើឯកសារ?", "gui_close_tab_warning_website_description": "បិទផ្ទាំង tab ដែលកំពុងបង្ហោះវេបសាយ?", "gui_close_tab_warning_cancel": "បោះបង់", "gui_quit_warning_title": "បិទ OnionShare?", "gui_quit_warning_cancel": "បោះបង់", "mode_settings_advanced_toggle_show": "បង្ហាញការកំណត់កម្រិតខ្ពស់", "mode_settings_receive_data_dir_browse_button": "រុករក", "mode_settings_receive_webhook_url_checkbox": "ប្រើ webhook ជូនដំណឹង", "mode_settings_website_custom_csp_checkbox": "ផ្ញើ header គោលការណ៍សុវត្ថិភាពមាតិកាដែលអាចកែប្រែដោយខ្លួនឯងបាន", "gui_rendezvous_cleanup": "កំពុងរង់ចាំសៀគ្វី Tor បិទ ដើម្បីប្រាកដថាឯកសាររបស់អ្នកបានផ្ទេរដោយជោគជ័យ។\n\nវាអាចចំណាយពេលពីរបីនាទី។", "gui_rendezvous_cleanup_quit_early": "ឈប់មុន", "history_receive_read_message_button": "អានសារ", "moat_contact_label": "កំពុងទាក់ទង BridgeDB…", "moat_captcha_label": "ដោះស្រាយបញ្ហា CAPTCHA ដើម្បីស្នើសុំ bridge។", "moat_captcha_error": "ដំណោះស្រាយមិនត្រឹមត្រូវទេ។ សូម​ព្យាយាម​ម្តង​ទៀត។", "moat_solution_empty_error": "សូមបញ្ចូលតួអក្សរពីរូបភាព", "mode_tor_not_connected_label": "OnionShare មិនត្រូវបានភ្ជាប់ទៅបណ្តាញ Tor ទេ", "gui_please_wait_no_button": "កំពុងចាប់ផ្តើម…", "gui_receive_url_public_description": "នរណាក៏ដោយ ដែលមានអាសយដ្ឋាន OnionShare នេះ អាច ផ្ទុកឡើង ឯកសារទៅកុំព្យូទ័ររបស់អ្នក ដោយប្រើ កម្មវិធីរុករក Tor: ", "gui_share_url_public_description": "នរណាក៏ដោយ ដែលមានអាសយដ្ឋាន OnionShare នេះ អាច ទាញយក ឯកសាររបស់អ្នកដោយប្រើ កម្មវិធីរុករក Tor: ", "gui_new_tab_chat_button": "ឈែតគ្នាដោយអនាមិក", "gui_close_tab_warning_receive_description": "បិទផ្ទាំង tab ដែលអ្នកកំពុងទទួលឯកសារ?", "gui_main_page_chat_button": "ចាប់ផ្តើមឈែតគ្នា", "gui_close_tab_warning_persistent_description": "បិទផ្ទាំង tab ហើយបាត់បង់អាសយដ្ឋាន onion ដែលវាកំពុងប្រើ?", "gui_quit_warning_description": "ចាកចេញ និងបិទផ្ទាំង tab ទាំងអស់ ទោះបីជាផ្ទាំងខ្លះកំពុងចែករំលែក?", "mode_settings_receive_disable_files_checkbox": "បិទការផ្ទុកឡើងឯកសារ", "error_port_not_available": "ច្រក OnionShare មិនមានទេ", "gui_copy_client_auth": "ចម្លងកូនសោសម្ងាត់", "gui_copied_client_auth_title": "បានចម្លងកូនសោសម្ងាត់", "gui_copied_client_auth": "កូនសោសម្ងាត់ត្រូវបានចម្លងទៅកាន់ clipboard", "gui_qr_label_url_title": "អាសយដ្ឋាន OnionShare", "gui_qr_label_auth_string_title": "កូនសោសម្ងាត់", "gui_reveal": "បង្ហាញ", "mode_settings_title_label": "ចំណងជើងអាចកែប្រែដោយខ្លួនឯង", "gui_client_auth_instructions": "បន្ទាប់មក សូមផ្ញើកូនសោសម្ងាត់ ដើម្បីអនុញ្ញាតឱ្យចូលប្រើសេវាកម្ម OnionShare របស់អ្នក៖", "gui_url_instructions_public_mode": "សូមផ្ញើអាសយដ្ឋាន OnionShare ខាងក្រោម៖", "gui_status_indicator_chat_started": "កំពុងឈែត", "gui_status_indicator_chat_scheduled": "បានកំណត់ពេល…", "gui_settings_theme_label": "ពណ៌", "gui_settings_theme_auto": "ស្វ័យប្រវត្តិ", "gui_settings_theme_light": "ភ្លឺ", "gui_settings_theme_dark": "ងងឹត", "gui_color_mode_changed_notice": "ចាប់ផ្ដើម OnionShare ឡើងវិញសម្រាប់ទម្រង់ពណ៌ថ្មីដែលបានកំណត់។", "gui_new_tab": "ផ្ទាំងថ្មី", "gui_close_tab_warning_close": "យល់ព្រម", "gui_qr_code_dialog_title": "OnionShare QR Code", "gui_file_selection_remove_all": "ដកចេញទាំងអស់", "gui_enable_autoconnect_checkbox": "ភ្ជាប់ទៅ Tor ដោយស្វ័យប្រវត្តិ", "gui_autoconnect_failed_to_connect_to_tor": "បរាជ័យក្នុងការតភ្ជាប់ទៅ Tor", "gui_autoconnect_trying_to_connect_to_tor": "កំពុងភ្ជាប់ទៅកាន់ Tor…", "gui_autoconnect_circumventing_censorship": "កំពុងដោះស្រាយបញ្ហាការតភ្ជាប់…", "gui_autoconnect_bridge_description": "អ្នកអាចភ្ជាប់ដោយប្រើ bridge ប្រសិនបើការភ្ជាប់អ៊ីនធឺណិតរបស់អ្នកត្រូវបានតាមដាន។", "gui_autoconnect_bridge_detect_automatic": "កំណត់ប្រទេសរបស់ខ្ញុំតាមរយៈអាសយដ្ឋាន IP របស់ខ្ញុំសម្រាប់ការកំណត់ bridge", "gui_autoconnect_bridge_detect_manual": "ជ្រើសរើសប្រទេសរបស់ខ្ញុំសម្រាប់ការកំណត់ bridge ដោយខ្លួនឯង", "gui_autoconnect_configure": "ការកំណត់បណ្ដាញ", "gui_autoconnect_no_bridge": "ព្យាយាមម្ដងទៀតដោយគ្មាន bridges", "gui_autoconnect_circumventing_censorship_starting_circumvention": "កំពុង​គេច​ពី​ការ​តាមដាន…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "កំពុងស្នើសុំ bridges ពី Tor censorship circumvention API…", "waitress_web_server_error": "វាមានបញ្ហាពេលចាប់ផ្ដើមម៉ាស៊ីនមេវេប", "gui_autoconnect_could_not_connect_to_tor_api": "មិនអាចភ្ជាប់ទៅ Tor API បានទេ។ ត្រូវប្រាកដថាអ្នកបានភ្ជាប់អ៊ីនធឺណិត មុនពេលព្យាយាមម្តងទៀត។", "gui_general_settings_window_title": "ទូទៅ", "gui_close_tab_warning_chat_description": "បិទផ្ទាំង tab ដែលកំពុងបង្ហោះជាម៉ាស៊ីនមេសម្រាប់ឈែត?", "gui_autoconnect_description": "OnionShare ពឹងផ្អែកលើបណ្តាញ Tor ដែលដំណើរការដោយស្ម័គ្រចិត្ត។", "gui_autoconnect_connection_error_msg": "ត្រូវប្រាកដថាអ្នកបានភ្ជាប់អ៊ីនធឺណិត។", "gui_autoconnect_bridge_setting_options": "ការកំណត់ Bridge", "gui_autoconnect_start": "ភ្ជាប់ទៅកាន់ Tor", "gui_autoconnect_try_again_without_a_bridge": "ព្យាយាមម្តងទៀតដោយគ្មាន bridges", "gui_autoconnect_circumventing_censorship_starting_meek": "កំពុង​បង្កើត​ meek bridge សម្រាប់​ដែន​មុខ…", "gui_autoconnect_circumventing_censorship_got_bridges": "Bridges ត្រូវបានបង្កើតឡើង។ កំពុងភ្ជាប់ទៅ Tor…", "gui_chat_mode_explainer": "មុខងារជជែកអនុញ្ញាតឱ្យអ្នកជជែកជាមួយអ្នកដទៃនៅក្នុងកម្មវិធីរុករក Tor ។

    ប្រវត្តិជជែកមិនត្រូវបានរក្សាទុកនៅក្នុង OnionShare ទេ។ ប្រវត្តិជជែកនឹងបាត់នៅពេលដែលអ្នកបិទកម្មវិធីរុករក Tor។" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ko.json000066400000000000000000000153571521174352300271310ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s}는 읽을 수 있는 파일이 아니에요.", "other_page_loaded": "주소 불러옴", "close_on_autostop_timer": "자동 멈춤 타이머가 끝나서 중지됨", "closing_automatically": "전송이 완료되어 중지됨", "large_filesize": "경고: 대용량 공유는 오래 걸릴 수 있음", "systray_menu_exit": "종료", "gui_drag_and_drop": "파일과 폴더를 끌어다 놓아 공유 시작", "gui_add": "추가", "gui_choose_items": "선택", "gui_share_start_server": "공유 시작", "gui_share_stop_server": "공유 중지", "gui_share_stop_server_autostop_timer": "공유 중지 ({})", "gui_receive_start_server": "수신 모드 시작", "gui_receive_stop_server": "수신 모드 중지", "gui_receive_stop_server_autostop_timer": "수신 모드 중지 ({} 남음)", "gui_copy_url": "주소 복사", "gui_canceled": "취소됨", "gui_copied_url_title": "OnionShare 주소가 복사됨", "gui_copied_url": "OnionShare 주소가 클립보드로 복사됨", "gui_please_wait": "시작 중... 취소하려면 클릭하세요.", "gui_quit_warning_quit": "종료", "zip_progress_bar_format": "압축 중: %p%", "gui_settings_window_title": "설정", "gui_settings_autoupdate_timestamp_never": "안함", "gui_settings_control_port_label": "제어 포트", "gui_settings_authenticate_password_option": "암호", "gui_settings_password_label": "암호", "gui_settings_button_save": "저장하기", "gui_settings_button_cancel": "취소하기", "gui_settings_button_help": "도움말", "gui_tor_connection_ask_quit": "종료", "gui_status_indicator_receive_started": "수신", "gui_settings_language_label": "언어", "gui_autoconnect_bridge_description": "인터넷 연결이 검열된 경우 브리지를 사용하여 연결할 수 있어요.", "gui_receive_flatpak_data_dir": "Flatpak으로 OnionShare를 설치했으므로 ~/OnionShare의 폴더에 파일을 저장해야 해요.", "gui_add_files": "파일 추가", "gui_remove": "삭제", "gui_start_server_autostart_timer_tooltip": "자동 시작 타이머가 {}에 끝남", "gui_enable_autoconnect_checkbox": "Tor에 자동 연결", "gui_autoconnect_failed_to_connect_to_tor": "Tor에 연결할 수 없음", "gui_autoconnect_trying_to_connect_to_tor": "Tor에 연결 중…", "gui_autoconnect_connection_error_msg": "인터넷에 연결되어 있는지 확인하세요.", "gui_autoconnect_bridge_detect_manual": "브리지 설정을 위해 수동으로 국가 선택", "gui_autoconnect_bridge_detect_automatic": "브리지 설정을 위해 IP 주소에서 국가 추정", "gui_autoconnect_circumventing_censorship": "연결성 문제 해결 중…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "검열 우회 중…", "gui_autoconnect_circumventing_censorship_starting_meek": "도메인 프론팅을 위해 meek 브리지 구축 중…", "gui_qr_code_dialog_title": "OnionShare QR 코드", "gui_dragdrop_sandbox_flatpak": "Flatpak 샌드박스를 보다 안전하게 만들기 위해 끌어서 놓기가 지원되지 않아요. 대신 \"파일 추가\" 및 \"폴더 추가\" 버튼을 사용하여 파일을 선택하세요.", "gui_copy_client_auth": "비밀키 복사", "gui_copied_client_auth": "비밀키가 클립보드에 복사됨", "gui_show_qr_code": "QR 코드 표시", "gui_qr_label_url_title": "OnionShare 주소", "gui_qr_label_auth_string_title": "비밀키", "gui_hide": "숨기기", "gui_waiting_to_start": "{}에 시작하도록 예약됨. 취소하려면 클릭하세요.", "gui_tor_settings_window_title": "Tor 설정", "gui_please_wait_no_button": "시작 중…", "gui_reveal": "보이기", "gui_autoconnect_description": "OnionShare는 자원봉사자가 운영하는 Tor 네트워크에 의존하고 있어요.", "gui_autoconnect_no_bridge": "브리지 없이 다시 시도하세요", "gui_autoconnect_try_again_without_a_bridge": "브리지 없이 다시 시도하세요", "gui_chat_stop_server": "채팅 서버 중지", "gui_stop_server_autostop_timer_tooltip": "자동 멈춤 타이머가 {}에 끝남", "gui_chat_start_server": "채팅 서버 시작", "gui_file_selection_remove_all": "모두 삭제", "gui_add_folder": "폴더 추가", "incorrect_password": "잘못된 암호", "gui_copied_client_auth_title": "비밀키 복사됨", "gui_autoconnect_bridge_setting_options": "브리지 설정", "gui_autoconnect_start": "Tor에 연결", "gui_autoconnect_configure": "네트워크 설정", "gui_close_tab_warning_close": "확인", "gui_tab_name_share": "공유", "gui_settings_theme_label": "테마 설정", "gui_status_indicator_chat_working": "시작 중…", "gui_tor_connection_ask_open_settings": "예", "gui_settings_theme_auto": "자동", "gui_all_modes_history": "내력", "gui_quit_warning_cancel": "취소", "moat_captcha_label": "브리지를 요청하기 위해 CAPCHA를 풀어주세요.", "gui_status_indicator_share_working": "시작 중…", "gui_settings_theme_dark": "어두움", "moat_solution_empty_error": "이미지의 문자를 입력하세요", "gui_tab_name_website": "웹사이트", "gui_settings_bridge_custom_placeholder": "주소:포트번호 입력하세요.(한줄에 하나씩)", "moat_captcha_reload": "다시 로드", "moat_captcha_placeholder": "이미지의 문자를 입력하세요", "gui_status_indicator_receive_working": "시작 중…", "gui_status_indicator_share_started": "공유", "gui_all_modes_clear_history": "전체 지우기", "gui_new_tab": "새 탭", "gui_tab_name_receive": "수신", "gui_tab_name_chat": "채팅", "gui_close_tab_warning_cancel": "취소", "mode_settings_receive_data_dir_browse_button": "찾아보기", "gui_settings_theme_light": "밝음", "gui_settings_bridge_moat_radio_option": "torproject.org에서 브릿지 요청하기", "moat_captcha_submit": "제출", "gui_general_settings_window_title": "일반", "gui_main_page_website_button": "호스팅 시작", "gui_main_page_share_button": "공유 시작", "gui_new_tab_share_button": "파일 공유", "mode_settings_title_label": "커스텀 제목", "mode_settings_public_checkbox": "공개 OnionShare 서비스 (비밀키 비활성화)", "mode_settings_persistent_checkbox": "OnionShare가 시작될 때 항상 이 탭 열기", "gui_settings_bridge_use_checkbox": "브리지 사용", "gui_status_indicator_receive_stopped": "중지됨", "gui_status_indicator_share_stopped": "중지됨", "gui_status_indicator_chat_stopped": "중지됨", "gui_new_tab_tooltip": "새 탭 열기" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/lg.json000066400000000000000000000000551521174352300271070ustar00rootroot00000000000000{ "gui_settings_button_save": "Tereka" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/lt.json000066400000000000000000000535031521174352300271320ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} nėra perskaitomas failas.", "other_page_loaded": "Adresas įkeltas", "incorrect_password": "Neteisingas slaptažodis", "close_on_autostop_timer": "Sustabdyta, nes baigėsi automatinio sustabdymo laikmatis", "closing_automatically": "Sustabdyta, nes perdavimas yra užbaigtas", "large_filesize": "Įspėjimas: Didelio viešinio siuntimas gali užtrukti ilgą laiką (kelias valandas)", "gui_drag_and_drop": "Norėdami bendrinti, tempkite failus ir aplankus čia", "gui_add": "Pridėti", "gui_add_files": "Pridėti failus", "gui_add_folder": "Pridėti aplanką", "gui_choose_items": "Pasirinkti", "gui_share_start_server": "Pradėti bendrinti", "gui_share_stop_server": "Nustoti bendrinti", "gui_share_stop_server_autostop_timer": "Nustoti bendrinti ({})", "gui_stop_server_autostop_timer_tooltip": "Automatinio sustabdymo laikmatis baigiasi {}", "gui_start_server_autostart_timer_tooltip": "Automatinio paleidimo laikmatis baigiasi {}", "gui_receive_start_server": "Įjungti gavimo veikseną", "gui_receive_stop_server": "Išjungti gavimo veikseną", "gui_receive_stop_server_autostop_timer": "Išjungti gavimo veikseną (Liko {})", "gui_copy_url": "Kopijuoti adresą", "gui_canceled": "Atsisakyta", "gui_copied_url_title": "„OnionShare“ adresas nukopijuotas", "gui_copied_url": "„OnionShare“ adresas nukopijuotas į iškarpinę", "gui_waiting_to_start": "Planuojama pradėti {}. Spustelėkite , jei norite atšaukti.", "gui_please_wait": "Pradedama… Spustelėkite norėdami atsisakyti.", "zip_progress_bar_format": "Glaudinama: %p%", "gui_settings_window_title": "Nustatymai", "gui_settings_autoupdate_label": "Tikrinti, ar yra nauja versija", "gui_settings_autoupdate_option": "Pranešti, kai bus prieinama nauja versija", "gui_settings_autoupdate_timestamp": "Paskutinį kartą tikrinta: {}", "gui_settings_autoupdate_timestamp_never": "Niekada", "gui_settings_autoupdate_check_button": "Tikrinti, ar yra nauja versija", "gui_settings_connection_type_label": "Kaip „OnionShare“ turėtų jungtis prie „Tor“?", "gui_settings_connection_type_bundled_option": "Naudokite „Tor“ versiją, integruotą į „OnionShare“", "gui_settings_connection_type_automatic_option": "Bandyti automatiškai konfigūruoti naudojant „Tor“ naršyklę", "gui_settings_connection_type_control_port_option": "Prisijunkti naudojant valdymo prievadą", "gui_settings_connection_type_socket_file_option": "Prisijungti naudojant socket failą", "gui_settings_connection_type_test_button": "Tikrinti ryšį su „Tor“", "gui_settings_control_port_label": "Valdymo prievadas", "gui_settings_socket_file_label": "Socket failas", "gui_settings_socks_label": "SOCKS prievadas", "gui_settings_authenticate_no_auth_option": "Jokio autentifikavimo ar slapukų autentifikavimo", "gui_settings_authenticate_password_option": "Slaptažodis", "gui_settings_password_label": "Slaptažodis", "gui_settings_tor_bridges": "Prisijunkti naudodami „Tor“ tiltą?", "gui_settings_meek_lite_expensive_warning": "Įspėjimas:

    Meek_lite tiltai labai brangiai kainuoja „Tor“ projektui.

    Jais naudokitės tik tuo atveju, jei negalite prisijungti prie „Tor“ tiesiogiai, per obfs4 transportą ar kitus įprastus tiltus.", "gui_settings_tor_bridges_invalid": "Nė vienas iš jūsų pridėtų tiltų neveikia. Patikrinkite juos dar kartą arba pridėkite kitus.", "gui_settings_button_save": "Įrašyti", "gui_settings_button_cancel": "Atsisakyti", "gui_settings_button_help": "Žinynas", "settings_error_unknown": "Nepavyksta prisijungti prie „Tor“ valdiklio, nes jūsų nustatymai nustatyti nesuprantamai.", "settings_error_automatic": "Nepavyko prisijungti prie „Tor“ valdiklio. Ar „Tor“ naršyklė (prieinama torproject.org) veikia fone?", "settings_error_socket_port": "Nepavyksta prisijungti prie „Tor“ valdiklio adresu {}:{}.", "settings_error_socket_file": "Negalima prisijungti prie „Tor“ valdiklio naudojant lizdo failą {}.", "settings_error_auth": "Prisijungta prie {}:{}, bet negalima patvirtinti autentiškumo. Galbūt tai ne „Tor“ valdiklis?", "settings_error_missing_password": "Prisijungta prie „Tor“ valdiklio, tačiau norint jį autentifikuoti reikia slaptažodžio.", "settings_error_unreadable_cookie_file": "Prisijungta prie „Tor“ valdiklio, bet slaptažodis gali būti klaidingas arba jūsų naudotojui neleidžiama skaityti slapukų failo.", "settings_error_bundled_tor_not_supported": "Naudojant „Tor“ versiją, kuri pateikiama kartu su \"OnionShare\", \"Windows\" arba \"macOS\" sistemose ji neveiks kūrėjo režime.", "settings_error_bundled_tor_timeout": "Per ilgai trunka prisijungimas prie „Tor“. Galbūt nesate prisijungę prie interneto arba turite netikslų sistemos laikrodį?", "settings_error_bundled_tor_broken": "„OnionShare“ nepavyko prisijungti prie „Tor“:\n{}", "settings_test_success": "Prisijungta prie „Tor“ valdiklio.\n\n„Tor“ versija: {}\nPalaiko efemerines onion paslaugas: {}.\nPalaiko kliento autentifikavimą: {}.\nPalaiko naujos kartos .onion adresus: {}.", "error_tor_protocol_error": "Įvyko „Tor“ klaida: {}", "connecting_to_tor": "Jungiamasi prie „Tor“ tinklo", "update_available": "Išleistas naujas „OnionShare“. Paspauskite čia, kad jį gautumėte.

    Jūs naudojate {}, o naujausia versija yra {}.", "update_error_invalid_latest_version": "Nepavyko patikrinti naujos versijos: „OnionShare“ svetainė sako, kad naujausia versija yra neatpažįstama „{}“…", "update_error_check_error": "Nepavyko patikrinti naujos versijos: Galbūt nesate prisijungę prie „Tor“ arba „OnionShare“ svetainė neveikia?", "update_not_available": "Jūs naudojate naujausią OnionShare versiją.", "gui_tor_connection_ask": "Atidarykite nustatymus, kad sutvarkytumėte ryšį su „Tor“?", "gui_tor_connection_ask_open_settings": "Taip", "gui_tor_connection_ask_quit": "Išeiti", "gui_tor_connection_error_settings": "Pabandykite nustatymuose pakeisti tai, kaip OnionShare jungiasi prie Tor tinklo.", "gui_tor_connection_canceled": "Nepavyko prisijungti prie „Tor“.\n\nĮsitikinkite, kad esate prisijungę prie interneto, o tuomet iš naujo atverkite „OnionShare“ ir nustatykite prisijungimą prie „Tor“.", "gui_tor_connection_lost": "Atsijungta nuo „Tor“.", "gui_server_started_after_autostop_timer": "Automatinio sustabdymo laikmatis baigėsi prieš paleidžiant serverį. Prašome sukurti naują bendrinimą.", "gui_server_autostop_timer_expired": "Automatinio sustabdymo laikmatis jau baigėsi. Sureguliuokite jį, kad pradėtumėte dalintis.", "gui_server_autostart_timer_expired": "Numatytas laikas jau praėjo. Pakoreguokite jį, kad galėtumėte pradėti dalintis.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Automatinio sustabdymo laikas negali būti toks pat arba ankstesnis už automatinio paleidimo laiką. Sureguliuokite jį, kad galėtumėte pradėti dalytis.", "gui_share_url_description": "Visi, turintys šį „OnionShare“ adresą ir privatųjį raktą gali atsisiųsti jūsų failus, naudodamiesi „Tor“Naršykle: ", "gui_website_url_description": "Kiekvienas, turintis šį „OnionShare“ adresą ir privatųjį raktą, gali apsilankyti jūsų svetainėje naudodamas „Tor“ naršyklę: ", "gui_receive_url_description": "Kiekvienas, turintis šį „OnionShare“ adresą ir privatųjį raktą, gali įkelti failus į jūsų kompiuterį naudodamas „Tor“ naršyklę: ", "gui_url_label_persistent": "Šis bendrinimas nebus automatiškai sustabdytas.

    Kiekvienas vėlesnis bendrinimas pakartotinai naudoja adresą. (Norėdami naudoti vienkartinius adresus, nustatymuose išjunkite \"Naudoti nuolatinį adresą\".)", "gui_url_label_stay_open": "Šis bendrinimas nebus automatiškai sustabdytas.", "gui_url_label_onetime": "Šis bendrinimas pabaigus bus automatiškai sustabdytas.", "gui_url_label_onetime_and_persistent": "Šis bendrinimas nebus automatiškai sustabdytas.

    Kiekvienas vėlesnis bendrinimas pakartotinai naudos adresą. (Norėdami naudoti vienkartinius adresus, nustatymuose išjunkite \"Naudoti nuolatinį adresą\".)", "gui_status_indicator_share_stopped": "Persiuntimas sustabdytas", "gui_status_indicator_share_working": "Pradedama…", "gui_status_indicator_share_scheduled": "Suplanuota…", "gui_status_indicator_share_started": "Dalijimasis", "gui_status_indicator_receive_stopped": "Persiuntimas sustabdytas", "gui_status_indicator_receive_working": "Pradedama…", "gui_status_indicator_receive_scheduled": "Suplanuota…", "gui_status_indicator_receive_started": "Gaunama", "gui_file_info": "{} failai, {}", "gui_file_info_single": "{} failas, {}", "history_in_progress_tooltip": "{} vykdoma", "history_completed_tooltip": "{} baigta", "history_requests_tooltip": "{} žiniatinklio užklausos", "error_cannot_create_data_dir": "Nepavyko sukurti „OnionShare “duomenų aplanko: {}", "gui_receive_mode_warning": "Gavimo režimas leidžia žmonėms nusiųsti failus į jūsų kompiuterį.

    Kai kurie failai gali perimti kompiuterio valdymą, jei juos atidarysite. Atidarykite failus tik iš žmonių, kuriais pasitikite, arba jei žinote, ką darote.", "gui_settings_language_label": "Pageidaujama kalba", "gui_settings_language_changed_notice": "Norėdami pritaikyti naują kalbą, paleiskite „OnionShare“ iš naujo.", "systray_menu_exit": "Išeiti", "systray_page_loaded_title": "Puslapis įkeltas", "systray_page_loaded_message": "„OnionShare“ adresas įkeltas", "systray_share_started_title": "Pradėtas dalijimasis", "systray_share_started_message": "Pradedama kažkam siųsti failus", "systray_share_completed_title": "Dalijimasis baigtas", "systray_share_completed_message": "Failų siuntimas užbaigtas", "systray_share_canceled_title": "Dalijimasis atšauktas", "systray_share_canceled_message": "Kažkas atšaukė jūsų failų gavimą", "systray_receive_started_title": "Pradėtas gavimas", "systray_receive_started_message": "Kažkas siunčia jums failus", "gui_all_modes_history": "Istorija", "gui_all_modes_clear_history": "Išvalyti viską", "gui_all_modes_transfer_started": "Pradėta {}", "gui_all_modes_transfer_finished_range": "Perkelta {} - {}", "gui_all_modes_transfer_finished": "Perkelta {}", "gui_all_modes_transfer_canceled_range": "Atšaukta {} - {}", "gui_all_modes_transfer_canceled": "Atšaukta {}", "gui_all_modes_progress_complete": "Praėjo %p%, {0:s}.", "gui_all_modes_progress_starting": "{0:s}, %p% (apskaičiuojama)", "gui_all_modes_progress_eta": "{0:s}, Preliminarus laikas: {1:s}, %p%", "gui_share_mode_no_files": "Kol kas nėra išsiųstų failų", "gui_share_mode_autostop_timer_waiting": "Baigiamas siuntimas…", "gui_website_mode_no_files": "Dar nėra bendrinama jokia svetainė", "gui_receive_mode_no_files": "Kol kas nėra gautų failų", "gui_receive_mode_autostop_timer_waiting": "Baigiamas gavimas…", "days_first_letter": "d", "hours_first_letter": "val", "minutes_first_letter": "min", "seconds_first_letter": "s", "gui_new_tab": "Nauja kortelė", "gui_new_tab_tooltip": "Atverti naują kortelę", "gui_new_tab_share_button": "Dalytis failais", "gui_new_tab_receive_button": "Gauti failus", "gui_new_tab_website_button": "Talpinti svetainę", "gui_close_tab_warning_title": "Uždaryti skirtuką?", "gui_close_tab_warning_persistent_description": "Uždaryti nuolatinį skirtuką ir prarasti jo naudojamą „onion“ adresą?", "gui_close_tab_warning_share_description": "Uždaryti skirtuką, iš kurio siunčiami failai?", "gui_close_tab_warning_receive_description": "Uždaryti skirtuką, kuriame gaunami failai?", "gui_close_tab_warning_website_description": "Uždaryti skirtuką, kuriame talpinama svetainė?", "gui_close_tab_warning_close": "Gerai", "gui_close_tab_warning_cancel": "Atsisakyti", "gui_quit_warning_title": "Išeiti iš „OnionShare“?", "gui_quit_warning_description": "Išeiti ir uždaryti visus skirtukus, net jei kai kuriuose iš jų yra aktyvus bendrinimas?", "gui_quit_warning_quit": "Išeiti", "gui_quit_warning_cancel": "Atsisakyti", "mode_settings_advanced_toggle_show": "Rodyti išplėstinius nustatymus", "mode_settings_advanced_toggle_hide": "Slėpti išplėstinius nustatymus", "mode_settings_persistent_checkbox": "Visada atidaryti šį skirtuką paleidus „OnionShare“", "mode_settings_public_checkbox": "Tai yra vieša „OnionShare“ paslauga (išjungia privatųjį raktą)", "mode_settings_autostart_timer_checkbox": "Pradėti onion paslaugos paleidimą suplanuotu laiku", "mode_settings_autostop_timer_checkbox": "Sustabdyti onion paslaugos paleidimą suplanuotu laiku", "mode_settings_share_autostop_sharing_checkbox": "Sustabdyti dalijimąsi po to, kai failai buvo išsiųsti (atžymėkite, jei norite leisti atsisiųsti atskirus failus)", "mode_settings_receive_data_dir_label": "Įrašyti failus į", "mode_settings_receive_data_dir_browse_button": "Naršyti", "mode_settings_website_disable_csp_checkbox": "Nesiųskite turinio saugumo politikos antraštės (leidžia jūsų svetainei naudoti trečiųjų šalių išteklius)", "gui_file_selection_remove_all": "Šalinti visus", "gui_remove": "Šalinti", "gui_qr_code_dialog_title": "OnionShare QR kodas", "gui_show_qr_code": "Rodyti QR kodą", "gui_open_folder_error": "Nepavyko atverti aplanko naudojant xdg-open. Failas yra čia: {}", "gui_chat_stop_server": "Sustabdyti pokalbių serverį", "gui_chat_start_server": "Pradėti pokalbių serverį", "history_receive_read_message_button": "Skaityti žinutę", "mode_settings_title_label": "Pasirinktinis pavadinimas", "gui_main_page_chat_button": "Pradėti pokalbį", "gui_main_page_receive_button": "Pradėti gavimą", "gui_main_page_share_button": "Pradėti dalintis", "gui_new_tab_chat_button": "Kalbėtis anonimiškai", "gui_status_indicator_chat_scheduled": "Suplanuota…", "gui_status_indicator_chat_working": "Pradedama…", "gui_tab_name_chat": "Pokalbiai", "gui_tab_name_website": "Tinklalapis", "gui_tab_name_receive": "Gauti", "gui_tab_name_share": "Dalintis", "gui_receive_flatpak_data_dir": "Kadangi „OnionShare“ įdiegėte naudodami „Flatpak“, turite išsaugoti failus aplanke, esančiame ~/OnionShare.", "mode_settings_receive_webhook_url_checkbox": "Naudoti pranešimų webhook", "gui_main_page_website_button": "Pradėti talpinimą", "gui_status_indicator_chat_started": "Kalbamasi", "gui_status_indicator_chat_stopped": "Persiuntimas sustabdytas", "gui_color_mode_changed_notice": "Iš naujo paleiskite „OnionShare“, kad būtų pritaikytas naujas spalvų režimas.", "mode_settings_receive_disable_files_checkbox": "Išjungti failų įkėlimą", "mode_settings_receive_disable_text_checkbox": "Išjungti teksto pateikimą", "gui_rendezvous_cleanup": "Laukiama, kol užsidarys „Tor“ grandinės, kad įsitikintume, jog jūsų failai perkelti.\n\nTai gali užtrukti kelias minutes.", "gui_rendezvous_cleanup_quit_early": "Išeiti anksčiau", "error_port_not_available": "„OnionShare“ prievadas nepasiekiamas", "gui_chat_url_description": "Kiekvienas, turintis šį „OnionShare“ adresą ir privatųjį raktą, gali prisijungti prie šio pokalbių kambario naudodamas „Tor“ naršyklę: ", "gui_settings_theme_dark": "Tamsi", "gui_settings_theme_light": "Šviesi", "gui_settings_theme_auto": "Automatinė", "gui_settings_theme_label": "Tema", "gui_please_wait_no_button": "Pradedama…", "gui_client_auth_instructions": "Tuomet nusiųskite privatųjį raktą, kad leistumėte pasiekti jūsų \"OnionShare\" paslaugą:", "gui_url_instructions_public_mode": "Siųsti toliau nurodytą \"OnionShare\" adresą:", "gui_url_instructions": "Pirmiausia nusiųskite žemiau nurodytą \"OnionShare\" adresą:", "gui_chat_url_public_description": "Kiekvienas, turintis šį „OnionShare“ adresą, gali prisijungti prie šio pokalbių kambario naudodamas „Tor“ naršyklę: ", "gui_receive_url_public_description": "Kiekvienas, turintis šį „OnionShare“ adresą, gali įkelti failus į jūsų kompiuterį naudodamas „Tor“ naršyklę: ", "gui_website_url_public_description": "Kiekvienas , turintis šį „OnionShare“ adresą, gali apsilankyti jūsų svetainėje naudodamas „Tor“ naršyklę : ", "gui_share_url_public_description": "Kiekvienas, turintis šį „OnionShare“ adresą, gali atsisiųsti jūsų failus naudodamas „Tor“ naršyklę: ", "gui_server_doesnt_support_stealth": "Atsiprašome, ši „Tor“ versija nepalaiko slapto (kliento autentifikavimo). Pabandykite naudoti naujesnę „Tor“ versiją arba naudokite viešąjį režimą, jei jis neturi būti privatus.", "gui_hide": "Slėpti", "gui_reveal": "Parodyti", "gui_qr_label_auth_string_title": "Privatusis raktas", "gui_qr_label_url_title": "OnionShare adresas", "gui_copied_client_auth": "Privatusis raktas nukopijuotas į iškarpinę", "gui_copied_client_auth_title": "Privatusis raktas nukopijuotas", "gui_copy_client_auth": "Kopijuoti privatųjį raktą", "gui_tor_settings_window_title": "„Tor“ nustatymai", "gui_settings_controller_extras_label": "„Tor“ nustatymai", "gui_settings_bridge_use_checkbox": "Naudoti tiltą", "gui_settings_bridge_none_radio_option": "Nenaudoti tiltų", "gui_settings_bridge_radio_builtin": "Pasirinkti programoje esantį tiltą", "gui_settings_bridge_moat_radio_option": "Prašyti tilto iš torproject.org", "gui_settings_version_label": "Naudojate „OnionShare“ {}", "mode_settings_website_custom_csp_checkbox": "Siųsti pasirinktinę turinio saugumo politikos antraštę", "moat_contact_label": "Susisiekiama su „BridgeDB“…", "moat_captcha_placeholder": "Įveskite simbolius iš paveikslėlio", "moat_captcha_submit": "Pateikti", "moat_captcha_label": "Išspręskite „CAPTCHA“, kad galėtumėte prašyti tiltų.", "mode_tor_not_connected_label": "„OnionShare“ neprijungtas prie „Tor“ tinklo", "gui_autoconnect_description": "„OnionShare“ remiasi savanorių valdomu „Tor“ tinklu.", "gui_enable_autoconnect_checkbox": "Automatiškai prisijungti prie „Tor“", "gui_autoconnect_bridge_description": "Jei jūsų interneto ryšys cenzūruojamas, galbūt galėsite prisijungti naudodami tiltą.", "gui_autoconnect_bridge_detect_automatic": "Tilto nustatymams nustatyti mano šalį pagal mano IP adresą", "gui_autoconnect_bridge_detect_manual": "Pasirinkti mano šalį tilto nustatymams rankiniu būdu", "gui_autoconnect_no_bridge": "Bandyti dar kartą be tiltų", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Apeinama cenzūra…", "gui_autoconnect_circumventing_censorship_starting_meek": "Kuriamas „meek“ tiltas, skirtas domenų sąsajoms…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Prašoma tiltų iš „Tor“ cenzūros apėjimo API…", "gui_autoconnect_could_not_connect_to_tor_api": "Nepavyko prisijungti prie „Tor“ API. Prieš bandydami dar kartą įsitikinkite, kad esate prisijungę prie interneto.", "gui_autoconnect_start": "Prisijungti prie „Tor“", "gui_settings_bridge_custom_placeholder": "įveskite adresas:prievadas (po vieną eilutėje)", "gui_settings_stop_active_tabs_label": "Kai kuriuose jūsų skirtukuose veikia paslaugos.\nNorėdami pakeisti „Tor“ nustatymus, turite sustabdyti visas paslaugas.", "gui_settings_help_label": "Reikia pagalbos? Žr. docs.onionshare.org", "moat_solution_empty_error": "Įveskite simbolius iš paveikslėlio", "moat_bridgedb_error": "Nepavyko susisiekti su „BridgeDB“.", "gui_general_settings_window_title": "Bendrieji", "gui_settings_bridge_moat_button": "Prašyti naujo tilto", "gui_autoconnect_failed_to_connect_to_tor": "Nepavyko prisijungti prie „Tor“", "gui_autoconnect_circumventing_censorship": "Sprendžiamos ryšio problemos…", "gui_autoconnect_trying_to_connect_to_tor": "Prisijungiama prie „Tor“…", "gui_autoconnect_circumventing_censorship_got_bridges": "Nustatyti tiltai. Iš naujo prisijungiama prie „Tor“…", "gui_autoconnect_connection_error_msg": "Įsitikinkite, kad esate prisijungę prie interneto.", "gui_autoconnect_bridge_setting_options": "Tilto nustatymai", "gui_autoconnect_configure": "Tinklo nustatymai", "gui_autoconnect_try_again_without_a_bridge": "Bandyti dar kartą be tiltų", "gui_settings_tor_bridges_label": "Tiltai padeda jūsų srautui patekti į „Tor“ tinklą, jei „Tor“ prieiga užblokuota. Priklausomai nuo to, iš kur jungiatės, vienas tiltas gali veikti geriau nei kitas.", "gui_settings_bridge_custom_radio_option": "Pateikti tiltą, apie kurį sužinojote iš patikimo šaltinio", "gui_settings_moat_bridges_invalid": "Dar neprašėte tilto iš torproject.org.", "moat_captcha_reload": "Perkrauti", "moat_captcha_error": "Neteisingas sprendimas. Bandykite dar kartą.", "gui_dragdrop_sandbox_flatpak": "Kad „Flatpak“ saugi dėžė būtų saugesnė, nuvilkimas ir įdėjimas nepalaikomas. Norėdami pasirinkti failus, naudokite mygtukus „Pridėti failus“ ir „Pridėti aplanką“." } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/mk.json000066400000000000000000000045531521174352300271230ustar00rootroot00000000000000{ "systray_menu_exit": "Излези", "gui_quit_warning_quit": "Излези", "gui_settings_window_title": "Поставки", "gui_settings_autoupdate_timestamp_never": "Никогаш", "gui_settings_button_save": "Зачувување", "gui_settings_button_cancel": "Откажи", "gui_tor_connection_ask_quit": "Излези", "gui_settings_theme_auto": "Автоматски", "gui_tab_name_chat": "Chat", "moat_captcha_submit": "Испрати", "moat_solution_empty_error": "Внесете ги карактерите од сликата", "gui_autoconnect_trying_to_connect_to_tor": "Поврзување на Tor…", "gui_tor_connection_ask_open_settings": "Да", "gui_close_tab_warning_cancel": "Одкажи", "gui_close_tab_warning_close": "Добро", "moat_captcha_placeholder": "Внесете ги карактерите од сликата", "gui_quit_warning_cancel": "Одкажи", "gui_settings_theme_label": "Тема", "gui_tab_name_share": "Spodeli", "gui_tab_name_website": "Webstranica", "gui_autoconnect_start": "Поврзи се на Tor", "gui_new_tab": "Ново јазиче", "gui_canceled": "Odbien", "gui_remove": "Одстрани", "gui_settings_theme_light": "Svetla", "gui_file_selection_remove_all": "Избриши СЕ", "gui_settings_language_label": "Јазик", "moat_captcha_reload": "Včitaj povtorno", "gui_general_settings_window_title": "Општи поставки", "gui_add": "Додај", "gui_settings_authenticate_password_option": "Лозинка", "gui_settings_password_label": "Лозинка", "gui_settings_button_help": "Помош", "gui_all_modes_history": "Istorija", "gui_settings_theme_dark": "Temna", "gui_hide": "Skrij", "gui_settings_bridge_moat_radio_option": "Барање за мост од torproject.org", "gui_settings_bridge_custom_placeholder": "внеси адреса:порта (по една во секој ред)", "moat_captcha_label": "Решете ја ЗАДАЧАТА за да побарате мост.", "gui_settings_bridge_use_checkbox": "Користи мост", "gui_status_indicator_chat_stopped": "Запрено", "gui_status_indicator_receive_stopped": "Запрено", "gui_status_indicator_share_stopped": "Запрено" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ms.json000066400000000000000000000040721521174352300271270ustar00rootroot00000000000000{ "gui_add": "Tambah", "gui_quit_warning_quit": "Keluar", "gui_settings_window_title": "Tetapan", "gui_settings_autoupdate_timestamp_never": "Tidak pernah", "gui_settings_authenticate_password_option": "Kara laluan", "gui_settings_password_label": "Kara laluan", "gui_settings_button_save": "Simpan", "gui_settings_button_cancel": "Batal", "gui_tor_connection_ask_open_settings": "Ya", "gui_tor_connection_ask_quit": "Keluar", "gui_status_indicator_receive_started": "Penerimaan", "systray_menu_exit": "Keluar", "gui_all_modes_history": "Sejarah", "gui_settings_theme_dark": "Gelap", "gui_remove": "Buang", "gui_file_selection_remove_all": "Alih Keluar Semua", "gui_autoconnect_start": "Sambung denganTor", "gui_hide": "Sembunyikan", "mode_settings_receive_data_dir_browse_button": "Semak imbas", "gui_general_settings_window_title": "Umum", "gui_tab_name_receive": "Terima", "gui_tab_name_chat": "Chat", "gui_tab_name_website": "Laman Web", "gui_new_tab": "Tab Baru", "gui_close_tab_warning_close": "OK", "incorrect_password": "Kata laluan tidak betul", "gui_settings_button_help": "Bantuan", "gui_settings_language_label": "Bahasa", "gui_tab_name_share": "Kongsi", "gui_close_tab_warning_cancel": "Batal", "gui_quit_warning_cancel": "Batal", "gui_settings_theme_label": "Tema", "gui_settings_theme_auto": "Auto", "gui_settings_theme_light": "Cahaya", "moat_captcha_placeholder": "Masukkan aksara yang tertera dari imej", "gui_settings_bridge_moat_radio_option": "Pinta titi dari torproject.org", "gui_settings_bridge_custom_placeholder": "taip alamat:port (satu per baris)", "moat_captcha_label": "Selesaikan CAPTCHA untuk meminta satu titi.", "moat_captcha_submit": "Serah", "moat_solution_empty_error": "Masukkan aksara yang tertera dari imej", "gui_status_indicator_receive_stopped": "Terhenti", "gui_status_indicator_share_stopped": "Terhenti", "gui_status_indicator_chat_stopped": "Terhenti", "gui_choose_items": "Pilih" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/nb_NO.json000066400000000000000000000505141521174352300275050ustar00rootroot00000000000000{ "gui_copied_url": "OnionShare-adresse kopiert til utklippstavle", "other_page_loaded": "Adresse innlastet", "not_a_readable_file": "{0:s} er ikke en lesbar fil.", "close_on_autostop_timer": "Stoppet fordi tidsavbrudd tiden utløp", "closing_automatically": "Stoppet fordi nedlastingen ble ferdig", "large_filesize": "Advarsel: En stor deling kan ta flere timer", "systray_menu_exit": "Avslutt", "gui_drag_and_drop": "Dra og slipp filer og mapper for å starte deling", "gui_add": "Legg til", "gui_choose_items": "Velg", "gui_share_start_server": "Start deling", "gui_share_stop_server": "Stopp deling", "gui_share_stop_server_autostop_timer": "Stopp deling ({})", "gui_receive_start_server": "Start mottaksmodus", "gui_receive_stop_server": "Stopp mottaksmodus", "gui_receive_stop_server_autostop_timer": "Stopp mottaksmodus ({} gjenstår)", "gui_copy_url": "Kopier nettadresse", "gui_canceled": "Avbrutt", "gui_copied_url_title": "OnionShare-adresse kopiert", "gui_please_wait": "Starter… Klikk for å avbryte.", "gui_quit_warning_quit": "Avslutt", "zip_progress_bar_format": "Pakker sammen: %p%", "gui_settings_window_title": "Innstillinger", "gui_settings_autoupdate_label": "Se etter ny versjon", "gui_settings_autoupdate_option": "Gi meg beskjed når en ny versjon er tilgjengelig", "gui_settings_autoupdate_timestamp": "Sist sjekket: {}", "gui_settings_autoupdate_timestamp_never": "Aldri", "gui_settings_autoupdate_check_button": "Se etter ny versjon", "gui_settings_connection_type_label": "Hvordan skal OnionShare koble seg til Tor?", "gui_settings_connection_type_bundled_option": "Bruk Tor-versjonen som er bygget inn i OnionShare", "gui_settings_connection_type_automatic_option": "Forsøk automatisk oppsett med Tor-nettleseren", "gui_settings_connection_type_control_port_option": "Koble til ved bruk av kontrollport", "gui_settings_connection_type_socket_file_option": "Koble til ved bruk av socket-fil", "gui_settings_connection_type_test_button": "Test tilkobling til Tor", "gui_settings_control_port_label": "Kontrollport", "gui_settings_socket_file_label": "Socket-fil", "gui_settings_socks_label": "SOCKS-port", "gui_settings_authenticate_no_auth_option": "Ingen identitetsbekreftelse, eller cookie-identifiseringsbekreftelse", "gui_settings_authenticate_password_option": "Passord", "gui_settings_password_label": "Passord", "gui_settings_tor_bridges": "Koble til med en Tor-bro?", "gui_settings_meek_lite_expensive_warning": "Advarsel: Meek-lite-broene er veldig kostbare å kjøre for Tor-prosjektet.

    Kun bruk dem hvis direkte tilkobling til Tor ikke virker, via obfs-transporter, eller andre normale broer.", "gui_settings_tor_bridges_invalid": "Ingen av broene du la til virker.\nDobbeltsjekk dem eller legg til andre.", "gui_settings_button_save": "Lagre", "gui_settings_button_cancel": "Avbryt", "gui_settings_button_help": "Hjelp", "settings_error_unknown": "Kan ikke koble til Tor-kontroller fordi innstillingene dine ikke gir mening.", "settings_error_automatic": "Kunne ikke koble til Tor-kontrolleren. Kjører Tor Browser (tilgjengelig fra torproject.org) i bakgrunnen?", "settings_error_socket_port": "Kan ikke koble til Tor-kontroller på {}:{}.", "settings_error_socket_file": "Kan ikke koble til Tor-kontroller ved bruk av socket-fil {}.", "settings_error_auth": "Koblet til {}:{}, men kan ikke identitetsbekrefte. Kanskje dette ikke er en Tor-kontroller?", "settings_error_missing_password": "Tilkoblet til Tor-kontroller, men den krever et passord for å identitetsbekrefte.", "settings_error_unreadable_cookie_file": "Koblet til Tor-kontrolleren, men passordet kan være galt, eller så har ikke brukeren din tilgang til å lese fra kakefilen.", "settings_error_bundled_tor_not_supported": "Bruk av Tor-versjonen som kommer med OnionShare fungerer ikke i utviklermodus på Windows eller macOS.", "settings_error_bundled_tor_timeout": "Det tar for lang tid å koble til Tor. Kanskje du ikke er koblet til Internett, eller har du kanskje en unøyaktig systemklokke?", "settings_error_bundled_tor_broken": "OnionShare kunne ikke koble til Tor i bakgrunnen:\n{}", "settings_test_success": "Koblet til Tor-kontrolleren.\n\nTor-versjon: {}.\nStøtter flyktige løk-tjenester: {}.\nStøtter klientidentifisering: {}.\nStøtter nestegenerasjons .onion-adresser: {}.", "error_tor_protocol_error": "Det oppsto en feil med Tor: {}", "connecting_to_tor": "Kobler til Tor-nettverket", "update_available": "Ny OnionShare-versjon tilgjenglig. Klikk her for å laste den ned.

    Du bruker {} og nyeste versjon er {}.", "update_error_check_error": "Kunne ikke sjekke etter ny versjon: Kanskje du ikke er tilknyttet Tor, eller OnionShare-nettsiden er nede?", "update_error_invalid_latest_version": "Kunne ikke sjekke etter ny versjon: OnionShare-nettsiden melder at siste versjon er det ugjenkjennelige «{}»…", "update_not_available": "Du kjører siste versjon av OnionShare.", "gui_tor_connection_ask": "Åpne innstillingene for å ordne opp i tilkoblingen til Tor?", "gui_tor_connection_ask_open_settings": "Ja", "gui_tor_connection_ask_quit": "Avslutt", "gui_tor_connection_error_settings": "Prøv å endre hvordan OnionShare kobler til Tor-nettverket i innstillingene.", "gui_tor_connection_canceled": "Kunne ikke koble til Tor.\n\nForsikre deg om at du er koblet til Internett, åpne så OnionShare igjen, og sett opp dets tilkobling til Tor.", "gui_tor_connection_lost": "Frakoblet fra Tor.", "gui_server_started_after_autostop_timer": "Tidsavbruddsuret gikk ut før tjeneren startet. Lag en ny deling.", "gui_server_autostop_timer_expired": "Tidsavbruddsuret har gått ut allerede. Juster det for å starte deling.", "gui_share_url_description": "Alle som har denne OnionShare-adressen og tilhørende privat nøkkel kan Laste ned filene dine ved bruk av Tor-Browser: ", "gui_receive_url_description": "Alle som har denne OnionShare-adressen og tilhørende privat nøkkel kan Laste opp filer til din datamaskin ved bruk av Tor-Browser: ", "gui_url_label_persistent": "Delingen vil ikke stoppe automatisk.

    Hver påfølgende deling vil gjenbruke adressen. (For engangsadresser, skru av \"Bruk vedvarende adresse\" i innstillingene.)", "gui_url_label_stay_open": "Denne delingen vil ikke stoppe automatisk.", "gui_url_label_onetime": "Denne delingen vil stoppe etter første fullføring.", "gui_url_label_onetime_and_persistent": "Delingen vil ikke stoppe automatisk.

    Hver påfølgende deling vil gjenbruke adressen. (For å bruke engangsadresser, skru av \"Bruk vedvarende adresse\" i innstillingene.)", "gui_status_indicator_share_stopped": "Stoppet", "gui_status_indicator_share_working": "Starter…", "gui_status_indicator_share_started": "Deler", "gui_status_indicator_receive_stopped": "Stoppet", "gui_status_indicator_receive_working": "Starter…", "gui_status_indicator_receive_started": "Mottar", "gui_file_info": "{} filer, {}", "gui_file_info_single": "{} fil, {}", "gui_receive_mode_warning": "Mottaksmodus lar folk laste opp filer til din datamaskin.

    Noen filer kan potensielt ta over datamaskinen din hvis du åpner dem. Åpne kun filer fra personer du stoler på, eller hvis du vet hva du gjør.", "systray_page_loaded_title": "Side innlastet", "history_in_progress_tooltip": "{} underveis", "history_completed_tooltip": "{} fullført", "gui_settings_language_label": "Foretrukket språk", "gui_settings_language_changed_notice": "Start OnionShare på ny for å se nytt språkvalg.", "gui_add_files": "Legg til filer", "gui_add_folder": "Legg til mappe", "error_cannot_create_data_dir": "Kunne ikke opprette OnionShare-datamappe: {}", "systray_page_loaded_message": "OnionShare-adresse lastet", "systray_share_started_title": "Deling startet", "systray_share_started_message": "Begynner å sende filer til noen", "systray_share_completed_title": "Deling fullført", "systray_share_completed_message": "Forsendelse av filer utført", "systray_share_canceled_title": "Deling avbrutt", "systray_share_canceled_message": "Noen avbrøt mottak av filene dine", "systray_receive_started_title": "Mottak startet", "systray_receive_started_message": "Noen sender deg filer", "gui_all_modes_history": "Historikk", "gui_all_modes_clear_history": "Tøm alt", "gui_all_modes_transfer_started": "Startet {}", "gui_all_modes_transfer_finished_range": "Overført {} - {}", "gui_all_modes_transfer_finished": "Overført {}", "gui_all_modes_progress_complete": "%p%, {0:s} forløpt.", "gui_all_modes_progress_starting": "{0:s}, %p% (kalkulerer)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Ingen filer sendt enda", "gui_share_mode_autostop_timer_waiting": "Venter på å fullføre av sendingen…", "gui_receive_mode_no_files": "Ingen filer mottatt enda", "gui_receive_mode_autostop_timer_waiting": "Venter på fullføring av mottak", "gui_all_modes_transfer_canceled_range": "Avbrutt {} - {}", "gui_all_modes_transfer_canceled": "Avbrutt {}", "gui_stop_server_autostop_timer_tooltip": "Automatisk auto-stopp utløper {}", "gui_start_server_autostart_timer_tooltip": "Automatisk auto-stopp slutter {}", "gui_waiting_to_start": "Planlagt start om {}. Klikk for å avbryte.", "gui_server_autostart_timer_expired": "Planlagt tid allerede tilbakelagt. Juster det for å starte deling.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Automatisk tidsavbruddsur kan ikke være likt eller predatere auomatisk starttid. Juster det for å starte deling.", "gui_status_indicator_share_scheduled": "Planlagt…", "gui_status_indicator_receive_scheduled": "Planlagt…", "days_first_letter": "d", "hours_first_letter": "t", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_website_url_description": "Hvem som helst med denne OnionShare-adressen og tilhørende privat nøkkel kan besøke din nettside med Tor-nettleseren: ", "gui_website_mode_no_files": "Ingen nettside delt enda", "incorrect_password": "Feil passord", "history_requests_tooltip": "{} vevforespørsler", "mode_settings_advanced_toggle_hide": "Skjul avanserte innstillinger", "mode_settings_advanced_toggle_show": "Vis avanserte innstillinger", "gui_quit_warning_cancel": "Avbryt", "gui_quit_warning_title": "Lukk OnionShare?", "gui_close_tab_warning_cancel": "Avbryt", "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_title": "Er du sikker på at du ønsker å lukke fanen?", "gui_new_tab_website_button": "Offentliggjør nettside", "gui_new_tab_share_button": "Del filer", "gui_new_tab_tooltip": "Åpne en ny fane", "gui_new_tab": "Ny fane", "mode_settings_receive_data_dir_browse_button": "Utforsk", "mode_settings_receive_data_dir_label": "Lagre filer i", "gui_new_tab_receive_button": "Motta filer", "mode_settings_autostop_timer_checkbox": "Stopp løktjeneste ved planlagt tidspunkt", "mode_settings_autostart_timer_checkbox": "Start løktjeneste ved planlagt tidspunkt", "mode_settings_public_checkbox": "Dette er en offentlig OnionShare-tjeneste (skrur av privat nøkkel)", "gui_close_tab_warning_receive_description": "Du mottar filer. Er du sikker på at du vil lukke denne fanen?", "gui_close_tab_warning_share_description": "Du sender filer. Er du sikker på at du vil lukke denne fanen?", "gui_chat_stop_server": "Stopp chat", "gui_chat_start_server": "Start chat", "gui_file_selection_remove_all": "Fjern alle", "gui_remove": "Fjern", "gui_quit_warning_description": "Deling er aktiv i noen av fanene dine. Hvis du avslutter, vil alle fanene dine lukkes. Er du sikker på at du vil avslutte?", "gui_close_tab_warning_website_description": "Du deler en nettside akkurat nå. Er du sikker på at du vil lukke denne fanen?", "mode_settings_website_disable_csp_checkbox": "Ikke send hode for innholdsikkerhetspraksis (tillater nettsiden din å bruke tredjepartsressurser)", "mode_settings_persistent_checkbox": "Lagre denne fanen og åpne den automatisk sammen med OnionShare", "gui_open_folder_error": "Klarte ikke å åpne mappe med xdg-open. Filen er her: {}", "gui_receive_flatpak_data_dir": "Fordi du har installert OnionShare som Flatpak må du lagre filer til en mappe i ~/OnionShare.", "mode_settings_share_autostop_sharing_checkbox": "Stopp deling etter at filer er sendt (fravelg for å tillate nedlasting av individuelle filer)", "gui_close_tab_warning_persistent_description": "Denne fanen er vedvarende. Hvis du lukker den vil du miste onion-adressen den bruker. Er du sikker på at du vil lukke den?", "gui_tab_name_chat": "Prat", "gui_tab_name_website": "Nettside", "gui_tab_name_receive": "Motta", "gui_tab_name_share": "Del", "gui_new_tab_chat_button": "Sludre anonymt", "gui_qr_code_dialog_title": "OnionShare-QR-kode", "gui_show_qr_code": "Vis QR-kode", "gui_main_page_chat_button": "Start sludring", "gui_main_page_website_button": "Start vertsjening", "gui_main_page_receive_button": "Start mottak", "gui_main_page_share_button": "Start deling", "gui_chat_url_description": "Alle med denne OnionShare-adressen og tilhørende privat nøkkel kan ta del i dette sludrerommet med Tor-nettleseren: ", "error_port_not_available": "OnionShare-port ikke tilgjengelig", "gui_rendezvous_cleanup_quit_early": "Avslutt tidlig", "gui_rendezvous_cleanup": "Venter på at Tor-kretsene lukkes for å være sikker på at filene dine er overført.\n\nDette kan ta noen minutter.", "gui_color_mode_changed_notice": "Start OnionShare for å se de nye fargene.", "history_receive_read_message_button": "Les melding", "mode_settings_receive_webhook_url_checkbox": "Bruk varsling webhook", "mode_settings_receive_disable_files_checkbox": "Deaktiver opplasting av filer", "mode_settings_receive_disable_text_checkbox": "Deaktiver innsending av tekst", "mode_settings_title_label": "Egendefinert tittel", "gui_url_instructions": "Først sender du OnionShare-adressen nedenfor:", "gui_website_url_public_description": "Alle med denne OnionShare-adressen kan besøke nettsiden din med Tor-nettleseren: ", "gui_status_indicator_chat_started": "Sludrer", "gui_status_indicator_chat_scheduled": "Planlagt …", "gui_status_indicator_chat_working": "Starter …", "gui_status_indicator_chat_stopped": "Stoppet", "gui_client_auth_instructions": "Så sender du den private nøkkelen for å innvilge tilgang til din OnionShare-tjeneste:", "gui_url_instructions_public_mode": "Send OnionShare-adressen nedenfor:", "gui_chat_url_public_description": "Alle med denne OnionShare-adressen kan ta del i dette sludrerommet med Tor-nettleseren: ", "gui_receive_url_public_description": "Alle med denne OnionShare-adressen kan laste opp filer til datamaskinen din med Tor-nettleseren: ", "gui_share_url_public_description": "Alle med dene OnionShare-adressen kan laste ned filene dine ved bruk av Tor-nettleseren: ", "gui_server_doesnt_support_stealth": "Denne versjonen av Tor støtter ikke stealth (klient-identitetsbekreftelse). Prøv med en nyere versjon av Tor, eller bruk «offentlig» modus hvis det ikke trenger å være privat.", "gui_settings_theme_light": "Lys", "gui_settings_theme_auto": "Auto", "gui_settings_theme_label": "Drakt", "gui_settings_theme_dark": "Mørk", "gui_please_wait_no_button": "Starter …", "gui_hide": "Skjul", "gui_reveal": "Avslør", "gui_qr_label_auth_string_title": "Privat nøkkel", "gui_qr_label_url_title": "OnionShare-adresse", "gui_copied_client_auth": "Privat nøkkel kopiert til utklippstavle", "gui_copied_client_auth_title": "Privat nøkkel kopiert", "gui_copy_client_auth": "Kopier privat nøkkel", "gui_tor_settings_window_title": "Tor-innstillinger", "gui_settings_bridge_use_checkbox": "Bruk en bro", "gui_settings_bridge_radio_builtin": "Velg en innbygd bro", "gui_settings_bridge_moat_radio_option": "Forespør en bro fra torproject.org", "gui_settings_bridge_moat_button": "Forespør en ny bro", "gui_settings_bridge_custom_radio_option": "Angi en bro du lærte om fra en tiltrodd kilde.", "gui_settings_bridge_custom_placeholder": "skriv inn adresse:port (én per linje)", "gui_settings_stop_active_tabs_label": "Tjenester kjører i noen av fanene dine.\nDu må stoppe alle tjenester for å endre dine Tor-innstillinger.", "gui_settings_version_label": "Du bruker OnionShare {}", "gui_settings_help_label": "Trenger du hjelp? Sjekk docs.onionshare.org", "moat_captcha_label": "Løs CAPTCHA-en for å forespørre en bro.", "moat_captcha_submit": "Send inn", "moat_captcha_reload": "Last inn igjen", "moat_contact_label": "Kontakter BridgeDB …", "moat_bridgedb_error": "Kunne ikke kontakte BridgeDB.", "moat_captcha_error": "Løsningen er ikke riktig. Prøv igjen.", "mode_tor_not_connected_label": "OnionShare er ikke tilkoblet Tor-nettverket", "gui_dragdrop_sandbox_flatpak": "For å gjøre Flatpak-sandkassen sikrere er ikke dra og slipp støttet. Bruk «Legg til filer» og «Legg til mappe»-knappene for å åpne filutforskeren istedenfor.", "gui_settings_controller_extras_label": "Tor-innstillinger", "gui_settings_bridge_none_radio_option": "Ikke bruk broer", "gui_settings_tor_bridges_label": "Broer hjelper trafikken din å nå Tor-nettverket der Tor-tilgang er blokkert. Avhengig av hvor du er kan én bro fungere bedre enn en annen.", "gui_settings_moat_bridges_invalid": "Du har ikke forespurt en bro fra torproject.org enda.", "moat_captcha_placeholder": "Skriv inn tegnene fra bildet", "moat_solution_empty_error": "Skriv inn tegnene fra bildet", "mode_settings_website_custom_csp_checkbox": "Send egendefinert Content Security Policy header", "gui_autoconnect_trying_to_connect_to_tor": "Kobler til Tor…", "gui_autoconnect_bridge_description": "Det kan hende du kan omgå sensur hvis du bruker en bro for å koble til.", "gui_general_settings_window_title": "Generelt", "gui_autoconnect_bridge_setting_options": "Bro-innstillinger", "gui_autoconnect_connection_error_msg": "Forsikre deg om at du er tilkoblet Internett.", "gui_autoconnect_bridge_detect_automatic": "Fastslå IP basert på mitt land for oppsett av broer", "gui_autoconnect_bridge_detect_manual": "Velg landet mitt for broinnstillinger manuelt", "gui_autoconnect_start": "Koble til Tor…", "gui_enable_autoconnect_checkbox": "Koble til Tor automatisk", "gui_autoconnect_circumventing_censorship": "Prøver å løse tilkoblingsproblemer …", "gui_autoconnect_circumventing_censorship_got_bridges": "Broer etablert. Kobler til Tor igjen …", "gui_autoconnect_could_not_connect_to_tor_api": "Kunne ikke koble til Tor-API-et. Sørg for at du er tilkoblet Internett og prøv igjen.", "gui_autoconnect_description": "OnionShare avhenger av det gemenskapsdrevne Tor-nettverket.", "gui_autoconnect_configure": "Nettverksinnstillinger", "gui_autoconnect_no_bridge": "Prøv igjen uten broer", "gui_autoconnect_circumventing_censorship_starting_meek": "Etablerer meek-bro for domenefronting …", "gui_autoconnect_failed_to_connect_to_tor": "Kunne ikke koble til Tor", "gui_autoconnect_try_again_without_a_bridge": "Prøv igjen uten broer", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Forespør broer fra Tor sitt omgåelses-API …", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Omgår sensur …", "waitress_web_server_error": "Kunne ikke starte web server", "gui_close_tab_warning_chat_description": "Lukk fanen som vertstjener en sludretjener?", "gui_chat_mode_explainer": "Chat modus lar deg chatte interaktivt med andre, i Tor nettleser.

    Chat historikken er ikke lagret i OnionShare. Chat historikken vil forsvinne når du lukker Tor Browser.." } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/nl.json000066400000000000000000000402711521174352300271220ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} is geen leesbaar bestand.", "other_page_loaded": "Adres geladen", "close_on_autostop_timer": "Gestopt omdat de automatische stop-timer afgelopen was", "closing_automatically": "Gestopt omdat de overdracht klaar is", "large_filesize": "Waarschuwing: het versturen van grote bestanden kan uren duren", "systray_menu_exit": "Afsluiten", "gui_drag_and_drop": "Sleep bestanden hier naar toe om het delen te starten", "gui_add": "Toevoegen", "gui_choose_items": "Kies", "gui_copy_url": "Kopieer URL", "gui_canceled": "Afgebroken", "gui_copied_url": "OnionShare adres gekopieerd naar klembord", "gui_please_wait": "Aan het starten... Klik om te annuleren.", "gui_quit_warning_quit": "Afsluiten", "zip_progress_bar_format": "Comprimeren: %p%", "gui_settings_window_title": "Instellingen", "gui_settings_autoupdate_label": "Controleer op nieuwe versies", "gui_settings_autoupdate_option": "Laat me weten als er een nieuwe versie beschikbaar is", "gui_settings_autoupdate_timestamp": "Laatste controle: {}", "gui_settings_autoupdate_timestamp_never": "Nooit", "gui_settings_autoupdate_check_button": "Controleer op een Nieuwe Versie", "gui_settings_connection_type_label": "Hoe moet OnionShare verbinden met Tor?", "gui_settings_connection_type_bundled_option": "Gebruik de Tor versie die is ingebouwd in OnionShare", "gui_settings_connection_type_automatic_option": "Probeer auto-configuratie met Tor Browser", "gui_settings_connection_type_control_port_option": "Verbinden via controle poort", "gui_settings_connection_type_socket_file_option": "Verbinden via socket bestand", "gui_settings_connection_type_test_button": "Test Connectie naar Tor", "gui_settings_control_port_label": "Controle poort", "gui_settings_socket_file_label": "Socket bestand", "gui_settings_socks_label": "SOCKS poort", "gui_settings_authenticate_no_auth_option": "Geen authenticatie, of cookie authenticatie", "gui_settings_authenticate_password_option": "Wachtwoord", "gui_settings_password_label": "Wachtwoord", "gui_settings_button_save": "Opslaan", "gui_settings_button_cancel": "Annuleren", "gui_settings_button_help": "Help", "settings_error_unknown": "Kan geen verbinding maken met de Tor controller, omdat je instellingen nergens op slaan.", "settings_error_automatic": "Kon geen verbinding maken met de Tor controller. Draait Tor Browser (beschikbaar via torproject.org) in de achtergrond?", "settings_error_socket_port": "Kan geen verbinding maken met de Tor controller op {}:{}.", "settings_error_socket_file": "Kan geen verbinding maken met de Tor controller via socket bestand {}.", "settings_error_auth": "Verbonden met {}:{}, maar kan niet authenticeren. Misschien is het geen Tor controller?", "settings_error_missing_password": "Verbonden met Tor controller, maar het heeft een wachtwoord nodig voor authenticatie.", "settings_error_unreadable_cookie_file": "Verbonden met de Tor controller, maar het wachtwoord kan onjuist zijn, of je gebruiker heeft geen toestemming om het cookie bestand te lezen.", "settings_error_bundled_tor_not_supported": "De Tor versie die is meegeleverd bij OnionShare werkt niet in de ontwikkelaarsmodus op Windows of macOS.", "settings_error_bundled_tor_timeout": "Verbinden met Tor duurt te lang. Misschien is je computer niet verbonden met internet, of je hebt een inaccurate systeemklok?", "settings_error_bundled_tor_broken": "OnionShare kan geen verbinding maken met Tor:\n{}", "settings_test_success": "Verbonden met de Tor controller.\n\nTor versie: {}\nOndersteunt ephemeral onion services: {}.\nOndersteunt client authentication: {}.\nOndersteunt next-gen .onion addresses: {}.", "error_tor_protocol_error": "Er was een fout met Tor: {}", "connecting_to_tor": "Verbinden met het Tor netwerk", "update_available": "Nieuwe OnionShare is uitgekomen. Klik hier om hem te krijgen.

    Jij gebruikt {} en de laatste is {}.", "update_error_check_error": "Kon niet controleren op een nieuwe versie: Wellicht ben je niet met Tor verbonden, of de OnionShare website is niet beschikbaar?", "update_error_invalid_latest_version": "Kon niet controleren op een nieuwe versie: de OnionShare website meldt dat de laatste versie de onherkenbare is '{}' is…", "update_not_available": "Je draait de laatst beschikbare OnionShare.", "gui_tor_connection_ask": "Open de instellingen om het verbindingsprobleem met Tor op te lossen?", "gui_tor_connection_ask_open_settings": "Ja", "gui_tor_connection_ask_quit": "Afsluiten", "gui_tor_connection_error_settings": "Probeer hoe OnionShare verbind met het Tor network te veranderen in de instellingen.", "gui_tor_connection_canceled": "Kon niet verbinden met Tor.\n\nZorg dat je met het internet verbonden bent, herstart OnionShare en configureer de verbinding met Tor.", "gui_server_started_after_autostop_timer": "De auto-stop timer verliep, voordat de server startte. Maak een nieuwe share aan.", "gui_server_autostop_timer_expired": "De auto-stop timer is al verlopen. Stel een nieuwe tijd in om te beginnen met delen.", "gui_share_start_server": "Start met delen", "gui_share_stop_server": "Stop met delen", "gui_share_stop_server_autostop_timer": "Stop met Delen ({})", "gui_receive_start_server": "Start Ontvangstmodus", "gui_receive_stop_server": "Stop Ontvangstmodus", "gui_receive_stop_server_autostop_timer": "Stop Ontvangstmodus ({} resterend)", "gui_copied_url_title": "OnionShare Adres gekopieerd", "gui_settings_tor_bridges": "Verbinden met Tor bridge?", "gui_settings_meek_lite_expensive_warning": "Waarschuwing: De meek_lite bridges zijn erg kostbaar voor het Tor Project om uit te voeren.

    Gebruik ze alleen als je niet direct met Tor kan verbinden, via obfs4 transports, of andere normale bridges.", "gui_settings_tor_bridges_invalid": "Geen van de bridges die je hebt toegevoegd werken. Controleer ze of voeg andere toe.", "gui_tor_connection_lost": "De verbinding met Tor is verbroken.", "gui_share_url_description": "Iedereen met dit OnionShare-adres kan je bestanden binnenhalen met de Tor Browser: ", "gui_receive_url_description": "Iedereen met dit OnionShare adres kan bestanden op je computer plaatsen met de Tor Browser: ", "gui_url_label_persistent": "Deze share stopt niet vanzelf.

    Elke volgende share zal het adres hergebruiken. (Om eenmalige adressen te gebruiken, zet \"Gebruik vast adres\" uit in de settings.)", "gui_url_label_stay_open": "Deze share stopt niet automatisch.", "gui_url_label_onetime": "Deze share stopt na de eerste voltooiïng.", "gui_url_label_onetime_and_persistent": "Deze share stopt niet vanzelf.

    Elke volgende share zal het adres hergebruiken. (Om eenmalige adressen te gebruiken, zet \"Gebruik vast adres\" uit in de settings.)", "gui_status_indicator_share_stopped": "Gestopt", "gui_status_indicator_share_working": "Starten…", "gui_status_indicator_share_started": "Aan het delen", "gui_status_indicator_receive_stopped": "Gestopt", "gui_status_indicator_receive_working": "Starten…", "gui_status_indicator_receive_started": "Ontvangen", "gui_file_info": "{} bestanden, {}", "gui_file_info_single": "{} bestand, {}", "history_in_progress_tooltip": "{} bezig", "history_completed_tooltip": "{} klaar", "gui_receive_mode_warning": "Ontvangstmodus laat anderen bestanden op je computer zetten.

    Sommige van die bestanden kunnen mogelijk je computer overnemen, als je ze opent. Open alleen dingen van mensen die je vertrouwt, of als je heel zeker weet wat je doet.", "systray_page_loaded_title": "Pagina Geladen", "gui_settings_language_label": "Voorkeurstaal", "gui_settings_language_changed_notice": "Herstart OnionShare om de nieuwe taal te gebruiken.", "gui_add_files": "Voeg bestanden toe", "gui_add_folder": "Voeg map toe", "systray_page_loaded_message": "OnionShare adres geladen", "systray_share_started_title": "Delen Begonnen", "systray_share_started_message": "Begint bestanden aan iemand te sturen", "systray_share_completed_title": "Delen Afgerond", "systray_share_completed_message": "Klaar met versturen van bestanden", "systray_share_canceled_title": "Delen geannulleerd", "systray_share_canceled_message": "Iemand heeft het ontvangen van je bestanden geannulleerd", "systray_receive_started_title": "Ontvangen Begonnen", "systray_receive_started_message": "Iemand stuurt bestanden naar je", "gui_all_modes_history": "Geschiedenis", "gui_all_modes_clear_history": "Wis Alles", "gui_all_modes_transfer_started": "Begonnen {}", "gui_all_modes_transfer_finished_range": "Overgezet {} - {}", "gui_all_modes_transfer_finished": "Overgezet {}", "gui_all_modes_progress_complete": "%p%, {0:s} verlopen.", "gui_all_modes_progress_starting": "{0:s}, %p% (aan het berekenen)", "gui_share_mode_no_files": "Nog Geen Bestanden Verzonden", "gui_receive_mode_no_files": "Nog Geen Bestanden Ontvangen", "gui_all_modes_transfer_canceled_range": "Geannuleerd {} - {}", "gui_all_modes_transfer_canceled": "Geannuleerd {}", "gui_stop_server_autostop_timer_tooltip": "Auto-stop timer stopt om {}", "gui_start_server_autostart_timer_tooltip": "Auto-start timer stopt om {}", "gui_waiting_to_start": "Gepland te beginnen in {}. Klik om af te breken.", "gui_server_autostart_timer_expired": "De geplande timer is al verlopen. Stel een nieuwe in om te beginnen met delen.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "De auto-stop tijd mag niet identiek of vroeger zijn dan de auto-start tijd. Stel hem opnieuw in om te beginnen met delen.", "gui_status_indicator_share_scheduled": "Gepland…", "gui_status_indicator_receive_scheduled": "Gepland…", "gui_share_mode_autostop_timer_waiting": "Verzenden afronden…", "gui_receive_mode_autostop_timer_waiting": "Wachten tot ontvangen klaar is…", "gui_website_url_description": "Iedereen met dit OnionShare-adres kan je bestanden bezoeken met de Tor Browser: ", "gui_website_mode_no_files": "Nog Geen Website Gedeeld", "incorrect_password": "Foutief wachtwoord", "error_cannot_create_data_dir": "Kon geen OnionShare datamap aanmaken: {}", "gui_all_modes_progress_eta": "{0:s}, Verwachte aankomsttijd: {1:s}, %p%", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "history_requests_tooltip": "{} webverzoeken", "mode_settings_share_autostop_sharing_checkbox": "Stop met het delen van bestanden nadat ze verzonden zijn (afvinken om het downloaden van individuele bestanden toe te staan)", "mode_settings_public_checkbox": "Geen wachtwoord gebruiken", "mode_settings_advanced_toggle_hide": "Verberg geavanceerde instellingen", "mode_settings_advanced_toggle_show": "Toon geavanceerde instellingen", "gui_quit_warning_cancel": "Annuleren", "gui_quit_warning_title": "OnionShare sluiten?", "gui_close_tab_warning_cancel": "Annuleren", "gui_close_tab_warning_close": "OK", "gui_close_tab_warning_receive_description": "Tabblad sluiten dat bestanden aan het ontvangen is?", "gui_close_tab_warning_share_description": "Tabblad sluiten dat bestanden aan het verzenden is?", "gui_close_tab_warning_title": "Tab afsluiten?", "gui_new_tab_receive_button": "Bestanden ontvangen", "mode_settings_website_disable_csp_checkbox": "Stuur geen Content Security Policy header (hiermee kan uw website bronnen van derden gebruiken)", "mode_settings_receive_data_dir_browse_button": "Blader", "mode_settings_receive_data_dir_label": "Bewaar bestanden in", "mode_settings_autostop_timer_checkbox": "Stop onion service op een geplande tijd", "mode_settings_autostart_timer_checkbox": "Start onion service op een geplande tijd", "mode_settings_persistent_checkbox": "Altijd dit tabblad openen als OnionShare start", "gui_quit_warning_description": "Delen is actief op sommige van uw tabbladen. Als u stopt, worden al uw tabbladen gesloten. Weet u zeker dat u wilt stoppen?", "gui_close_tab_warning_website_description": "Tabblad sluiten die een website host?", "gui_close_tab_warning_persistent_description": "Tabblad met vast onion adres sluiten en het adres verliezen?", "gui_tab_name_chat": "Chat", "gui_tab_name_website": "Website", "gui_tab_name_receive": "Ontvang", "gui_tab_name_share": "Deel", "gui_main_page_chat_button": "Begin met chatten", "gui_main_page_website_button": "Begin met hosten", "gui_main_page_receive_button": "Begin met ontvangen", "gui_main_page_share_button": "Begin met delen", "gui_new_tab_chat_button": "Chat anoniem", "gui_new_tab_website_button": "Host een website", "gui_new_tab_share_button": "Deel bestanden", "gui_new_tab_tooltip": "Open een tabblad", "gui_new_tab": "Nieuw tabblad", "gui_open_folder_error": "Niet gelukt om de map te openen met xdg-open. Het bestand staat hier: {}", "gui_qr_code_dialog_title": "OnionShare QR Code", "gui_show_qr_code": "Toon QR Code", "gui_receive_flatpak_data_dir": "Omdat je OnionShare installeerde met Flatpak, moet je bestanden opslaan in een folder in ~/OnionShare.", "gui_chat_stop_server": "Stop chat server", "gui_chat_start_server": "Start chat server", "gui_file_selection_remove_all": "Alles verwijderen", "gui_remove": "Verwijderen", "gui_rendezvous_cleanup": "Wachten op Tor circuits om af te sluiten, om zeker te stellen dat je bestanden succesvol zijn verplaatst\n\nDit kan enkele minuten duren.", "mode_settings_receive_disable_text_checkbox": "Schakel het versturen van tekst uit", "mode_settings_receive_disable_files_checkbox": "Schakel uploaden bestanden uit", "mode_settings_receive_webhook_url_checkbox": "Gebruik notificatie webhook", "gui_rendezvous_cleanup_quit_early": "Vervroegd afsluiten", "error_port_not_available": "OnionShare poort is niet beschikbaar", "history_receive_read_message_button": "Lees bericht", "gui_chat_url_description": "Iedereen met dit OnionShare adres kanin deze chatkamer aansluiten met de Tor Browser: ", "mode_settings_title_label": "Handmatige titel", "gui_status_indicator_chat_working": "Starten…", "gui_status_indicator_chat_started": "in gesprek", "gui_status_indicator_chat_scheduled": "Ingepland…", "gui_color_mode_changed_notice": "Herstart OnionShare om de nieuwe kleur toe te passen.", "gui_status_indicator_chat_stopped": "Gestopt", "gui_settings_theme_label": "Thema", "gui_settings_theme_auto": "Automatisch", "moat_captcha_label": "Los de CAPTCHA op om een bridge aan te vragen.", "moat_captcha_placeholder": "Voer de tekens van de afbeelding in", "gui_reveal": "Onthullen", "gui_settings_theme_light": "Licht", "gui_settings_theme_dark": "Donker", "gui_settings_bridge_custom_placeholder": "typ adres:poort (één per regel)", "gui_settings_bridge_moat_radio_option": "Een bridge aanvragen bij torproject.org", "gui_general_settings_window_title": "Algemeen", "gui_please_wait_no_button": "Aan het starten…", "gui_website_url_public_description": "1Iedereen2 met dit OnionShare-adres kan je bestanden 3bezoeken4 met de 5Tor Browser6: ", "gui_hide": "Verbergen", "gui_autoconnect_trying_to_connect_to_tor": "Verbinden met Tor…", "moat_captcha_reload": "Vernieuwen", "gui_settings_bridge_none_radio_option": "Gebruik geen bridges", "gui_autoconnect_start": "Verbinden met Tor", "moat_captcha_submit": "Versturen", "moat_solution_empty_error": "Voer de tekens van de afbeelding in", "gui_share_url_public_description": "Iedereen met dit OnionShare adres kan je bestanden binnenhalen met de Tor browser.", "gui_receive_url_public_description": "1Iedereen2 met dit OnionShare adres kan bestanden op je computer 3plaatsen4 met de 5Tor Browser6: 7", "gui_settings_bridge_use_checkbox": "Een brug gebruiken", "gui_autoconnect_configure": "Netwerkinstellingen" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/pa.json000066400000000000000000000036151521174352300271120ustar00rootroot00000000000000{ "systray_menu_exit": "ਬਾਹਰ", "gui_quit_warning_quit": "ਬਾਹਰ", "gui_tor_connection_ask_quit": "ਬਾਹਰ", "gui_settings_button_help": "ਮਦਦ", "gui_tab_name_chat": "Chat", "gui_settings_window_title": "ਸੈਟਿੰਗਾਂ", "gui_settings_autoupdate_timestamp_never": "ਕਦੇ ਨਹੀਂ", "gui_settings_button_save": "ਸੰਭਾਲੋ", "mode_settings_receive_data_dir_browse_button": "ਝਲਕ", "gui_settings_bridge_custom_placeholder": "type address:port (one per line)", "gui_status_indicator_share_working": "ਸ਼ੁਰੂ ਕਰ ਰਿਹਾ…", "gui_settings_theme_label": "ਥੀਮ", "gui_remove": "ਹਟਾਓ", "gui_add": "ਜੋੜੋ", "gui_settings_theme_light": "ਸਫ਼ੈਦ", "moat_captcha_submit": "Submit", "gui_settings_language_label": "ਭਾਸ਼ਾ", "gui_settings_authenticate_password_option": "ਪਾਸਵਰਡ", "gui_close_tab_warning_cancel": "ਰੱਦ ਕਰੋ", "gui_status_indicator_chat_working": "ਸ਼ੁਰੂ ਕਰ ਰਿਹਾ…", "gui_settings_theme_auto": "ਆਟੋ", "gui_tab_name_website": "ਵੈੱਬਸਾਈਟ", "gui_quit_warning_cancel": "ਰੱਦ ਕਰੋ", "gui_tor_connection_ask_open_settings": "ਹਾਂ", "gui_settings_button_cancel": "ਰੱਦ ਕਰੋ", "gui_file_selection_remove_all": "ਸਭ ਹਟਾਓ", "gui_general_settings_window_title": "ਜਨਰਲ", "gui_settings_password_label": "ਪਾਸਵਰਡ", "gui_all_modes_history": "ਇਤਿਹਾਸ", "gui_new_tab": "ਨਵਾਂ ਟੈਬ", "gui_tab_name_share": "ਸਾਂਝਾ ਕਰੋ", "gui_please_wait_no_button": "ਸ਼ੁਰੂ ਕਰ ਰਿਹਾ…", "gui_settings_theme_dark": "ਗੂੜ੍ਹਾ", "gui_status_indicator_receive_working": "ਸ਼ੁਰੂ ਕਰ ਰਿਹਾ…", "gui_hide": "Hide" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/pl.json000066400000000000000000000541761521174352300271350ustar00rootroot00000000000000{ "not_a_readable_file": "Brak uprawnień do odczytu {0:s}.", "other_page_loaded": "Adres został wczytany", "close_on_autostop_timer": "Upłynął maksymalny czas wysyłania - operacja zatrzymana", "closing_automatically": "Transfer został zakończony", "large_filesize": "Uwaga: Wysyłanie dużego pliku może zająć wiele godzin", "systray_menu_exit": "Wyjście", "gui_drag_and_drop": "Przeciągnij i upuść pliki i foldery, aby je udostępnić", "gui_add": "Dodaj", "gui_choose_items": "Wybierz", "gui_share_start_server": "Rozpocznij udostępnianie", "gui_share_stop_server": "Zatrzymaj udostępnianie", "gui_share_stop_server_autostop_timer": "Przerwij udostępnianie ({})", "gui_receive_start_server": "Rozpocznij tryb odbierania", "gui_receive_stop_server": "Zatrzymaj tryb odbierania", "gui_receive_stop_server_autostop_timer": "Zatrzymaj tryb odbierania (pozostało: {})", "gui_copy_url": "Kopiuj adres", "gui_canceled": "Anulowano", "gui_copied_url_title": "Skopiowano adres OnionShare", "gui_copied_url": "Adres OnionShare został skopiowany do schowka", "gui_please_wait": "Rozpoczynam... Kliknij, aby zatrzymać.", "gui_quit_warning_quit": "Wyjście", "zip_progress_bar_format": "Postęp kompresji: %p%", "gui_settings_window_title": "Ustawienia", "gui_settings_autoupdate_label": "Sprawdź nową wersję", "gui_settings_autoupdate_option": "Poinformuj mnie, kiedy nowa wersja programu będzie dostępna", "gui_settings_autoupdate_timestamp": "Ostatnie sprawdzenie aktualizacji: {}", "gui_settings_autoupdate_timestamp_never": "Nigdy", "gui_settings_autoupdate_check_button": "Sprawdź, czy nowa wersja programu jest dostępna", "gui_settings_connection_type_label": "W jaki sposób OnionShare powinien połączyć się z siecią Tor?", "gui_settings_connection_type_bundled_option": "Skorzystaj z wersji Tora wbudowanej w OnionShare", "gui_settings_connection_type_automatic_option": "Spróbuj skonfigurować automatycznie przy pomocy Tor Browser", "gui_settings_connection_type_control_port_option": "Połącz za pomocą portu sterowania", "gui_settings_connection_type_socket_file_option": "Połącz z użyciem pliku socket", "gui_settings_connection_type_test_button": "Sprawdź połączenie z siecią Tor", "gui_settings_control_port_label": "Port sterowania", "gui_settings_socket_file_label": "Plik socket", "gui_settings_socks_label": "Port SOCKS", "gui_settings_authenticate_no_auth_option": "Bez uwierzytelniania lub uwierzytelnianie za pomocą cookie", "gui_settings_authenticate_password_option": "Hasło", "gui_settings_password_label": "Hasło", "gui_settings_tor_bridges": "Połączenie z użyciem mostka Tor?", "gui_settings_meek_lite_expensive_warning": "Uwaga: Mostki meek_lite są bardzo kosztowne dla Tor Project.

    Korzystaj z nich tylko wtedy, gdy nie możesz połączyć się bezpośrednio z siecią Tor poprzez obsf4 albo przez inne normalne mostki.", "gui_settings_tor_bridges_invalid": "Żadne z dodanych przez Ciebie mostków nie działają. Zweryfikuj je lub dodaj inne.", "gui_settings_button_save": "Zapisz", "gui_settings_button_cancel": "Anuluj", "gui_settings_button_help": "Pomoc", "settings_error_unknown": "Nie można połączyć się z kontrolerem Tor, ponieważ Twoje ustawienia nie mają sensu.", "settings_error_automatic": "Nie można połączyć się z kontrolerem Tor. Czy Tor Browser (dostępny na torproject.org) działa w tle?", "settings_error_socket_port": "Nie można połączyć się z kontrolerem Tor pod adresem {}:{}.", "settings_error_socket_file": "Nie można połączyć się z kontrolerem Tor używając pliku socket znajdującym się w ścieżce {}.", "settings_error_auth": "Połączono z {}:{} ale nie można uwierzytelnić. Być może to nie jest kontroler Tor?", "settings_error_missing_password": "Połączono z kontrolerem Tor ale wymaga on hasła do uwierzytelnienia.", "settings_error_unreadable_cookie_file": "Połączono z kontrolerem Tor, ale hasło może być niepoprawne albo Twój użytkownik nie ma uprawnień do odczytania pliku z cookie.", "settings_error_bundled_tor_not_supported": "Używanie wersji Tora dołączonej do OnionShare nie działa w trybie programisty w systemie Windows i MacOS.", "settings_error_bundled_tor_timeout": "Połączenie się z siecią Tor zajmuje zbyt dużo czasu. Być może nie jesteś połączony z internetem albo masz niedokładny zegar systemowy?", "settings_error_bundled_tor_broken": "OnionShare nie mógł połączyć się z siecią Tor:\n{}", "settings_test_success": "Połączono z kontrolerem Tor.\n\nWersja Tor: {}\nWsparcie ulotnych serwisów onion: {}.\nWsparcie autoryzacji klienta: {}.\nWsparcie adresów .onion nowej generacji: {}.", "error_tor_protocol_error": "Pojawił się błąd z Tor: {}", "connecting_to_tor": "Łączę z siecią Tor", "update_available": "Nowa wersja programu OnionShare jest dostępna. Kliknij tutaj aby ją ściągnąć.

    Korzystasz z wersji {}, a najnowszą jest {}.", "update_error_check_error": "Nie można sprawdzić czy jest dostępna aktualizacja. Być może nie działa połączenie do sieci Tor albo strona OnionShare?", "update_error_invalid_latest_version": "Nie można sprawdzić nowej wersji: strona OnionShare twierdzi, że najnowsza wersja jest nierozpoznawalna '{}'…", "update_not_available": "Korzystasz z najnowszej wersji OnionShare.", "gui_tor_connection_ask": "Otworzyć ustawienia w celu naprawienia połączenia z Tor?", "gui_tor_connection_ask_open_settings": "Tak", "gui_tor_connection_ask_quit": "Wyjście", "gui_tor_connection_error_settings": "Spróbuj w ustawieniach zmienić sposób, w jaki OnionShare łączy się z siecią Tor.", "gui_tor_connection_canceled": "Nie można połączyć się z Tor.\n\nSprawdź połączenie z Internetem, następnie ponownie otwórz OnionShare i skonfiguruj połączenie z Tor.", "gui_tor_connection_lost": "Odłączony od sieci Tor.", "gui_server_started_after_autostop_timer": "Czas automatycznego zatrzymania upłynął przed uruchomieniem serwera. Utwórz nowy udział.", "gui_server_autostop_timer_expired": "Czas automatycznego zatrzymania już upłynął. Dostosuj go, aby rozpocząć udostępnianie.", "gui_share_url_description": "Każdy z tym adresem OnionShare oraz kluczem prywatnym może pobrać Twoje pliki za pomocą przeglądarki Tor Browser: ", "gui_receive_url_description": "Każdy z tym adresem OnionShare oraz kluczem prywatnym może przesyłać pliki na Twój komputer za pomocą przeglądarki Tor Browser: ", "gui_url_label_persistent": "Ten udział nie zatrzyma się automatycznie.

    Każdy kolejny udział ponownie użyje tego adresu. (Aby używać adresów jednorazowych, wyłącz opcję „Zawsze otwieraj tę kartę po uruchomieniu OnionShare” w ustawieniach).", "gui_url_label_stay_open": "Ten udział nie zostanie automatycznie zatrzymany.", "gui_url_label_onetime": "Ten udział zatrzyma się po pierwszym zakończeniu.", "gui_url_label_onetime_and_persistent": "Ten udział nie zatrzyma się automatycznie.

    Każdy kolejny udział ponownie wykorzysta adres. (Aby używać adresów jednorazowych, wyłącz opcję „Zawsze otwieraj tę kartę po uruchomieniu OnionShare” w ustawieniach).", "gui_status_indicator_share_stopped": "Zatrzymano", "gui_status_indicator_share_working": "Rozpoczynanie…", "gui_status_indicator_share_started": "Udostępnianie", "gui_status_indicator_receive_stopped": "Zatrzymano", "gui_status_indicator_receive_working": "Rozpoczynanie…", "gui_status_indicator_receive_started": "Odbieram", "gui_file_info": "{} pliki/ów, {}", "gui_file_info_single": "{} plik, {}", "history_in_progress_tooltip": "{} w trakcie", "history_completed_tooltip": "{} zakończone", "gui_receive_mode_warning": "Tryb odbioru umożliwia przesyłanie plików do komputera.

    Niektóre pliki mogą potencjalnie przejąć kontrolę nad komputerem, jeśli je otworzysz. Otwieraj rzeczy tylko od osób, którym ufasz, lub jeśli wiesz, co robisz.", "systray_page_loaded_title": "Strona załadowana", "gui_settings_language_label": "Preferowany język", "gui_settings_language_changed_notice": "Uruchom ponownie OnionShare, aby zmienić na nowy język.", "gui_add_files": "Dodaj Pliki", "gui_add_folder": "Dodaj Folder", "gui_stop_server_autostop_timer_tooltip": "Automatyczne zatrzymanie zakończy się za {}", "gui_waiting_to_start": "Planowane rozpoczęcie za {}. Kliknij, aby anulować.", "gui_server_autostart_timer_expired": "Zaplanowany czas już minął. Dostosuj go, aby rozpocząć udostępnianie.", "gui_status_indicator_share_scheduled": "Zaplanowane…", "gui_status_indicator_receive_scheduled": "Zaplanowane…", "error_cannot_create_data_dir": "Nie można utworzyć folderu danych OnionShare: {}", "systray_page_loaded_message": "Załadowano adres OnionShare", "systray_share_started_title": "Udostępnianie rozpoczęte", "systray_share_started_message": "Rozpoczynam wysyłanie plików", "systray_share_completed_title": "Udostępnianie zakończone", "systray_share_completed_message": "Zakończono wysyłanie plików", "systray_share_canceled_title": "Udostępnianie anulowane", "systray_share_canceled_message": "Anulowano odbieranie plików", "systray_receive_started_title": "Rozpoczęto odbieranie", "systray_receive_started_message": "Ktoś wysyła Ci pliki", "gui_all_modes_history": "Historia", "gui_all_modes_clear_history": "Wyczyść wszystko", "gui_all_modes_transfer_started": "Uruchomiono {}", "gui_all_modes_transfer_finished_range": "Przesłano {} - {}", "gui_all_modes_transfer_finished": "Przesłano {}", "gui_all_modes_transfer_canceled_range": "Anulowano {} - {}", "gui_all_modes_transfer_canceled": "Anulowano {}", "gui_all_modes_progress_complete": "%p%, upłynęło {0:s}.", "gui_all_modes_progress_starting": "{0:s}, %p% (obliczanie)", "gui_share_mode_no_files": "Żadne pliki nie zostały jeszcze wysłane", "gui_share_mode_autostop_timer_waiting": "Kończenie wysyłania…", "gui_receive_mode_no_files": "Nie odebrano jeszcze żadnych plików", "gui_receive_mode_autostop_timer_waiting": "Kończenie odbioru…", "gui_start_server_autostart_timer_tooltip": "Automatyczne rozpoczęcie zakończy się za {}", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Czas automatycznego zakończenia powinien być późniejszy niż czas automatycznego rozpoczęcia. Dostosuj go, aby rozpocząć udostępnianie.", "gui_all_modes_progress_eta": "{0:s}, pozostało: {1:s}, %p%", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "incorrect_password": "Niepoprawne hasło", "gui_website_mode_no_files": "Żadna strona nie została jeszcze udostępniona", "gui_website_url_description": "Każdy z tym adresem OnionShare oraz kluczem prywatnym może odwiedzić twoją stronę używając przeglądarki Tor Browser: ", "history_requests_tooltip": "{} żądań z sieci", "gui_close_tab_warning_title": "Zamknąć kartę?", "gui_tab_name_chat": "Czat", "gui_tab_name_website": "Strona internetowa", "gui_tab_name_receive": "Odbierz", "gui_tab_name_share": "Udostępnij", "gui_main_page_chat_button": "Rozpocznij czatowanie", "gui_main_page_website_button": "Rozpocznij hostowanie", "gui_main_page_receive_button": "Rozpocznij odbieranie", "gui_main_page_share_button": "Rozpocznij udostępnianie", "gui_new_tab_chat_button": "Czatuj anonimowo", "gui_new_tab_website_button": "Hostuj witrynę internetową", "gui_new_tab_receive_button": "Odbierz pliki", "gui_new_tab_share_button": "Udostępnij pliki", "gui_new_tab_tooltip": "Otwórz nową kartę", "gui_new_tab": "Nowa karta", "gui_open_folder_error": "Nie można otworzyć folderu za pomocą polecenia xdg-open. Plik jest tutaj: {}", "gui_qr_code_dialog_title": "Kod QR OnionShare", "gui_show_qr_code": "Pokaż kod QR", "gui_receive_flatpak_data_dir": "Ponieważ zainstalowałeś OnionShare przy użyciu Flatpak, musisz zapisywać pliki w folderze w ~/OnionShare.", "gui_chat_stop_server": "Zatrzymaj serwer czatu", "gui_chat_start_server": "Uruchom serwer czatu", "gui_file_selection_remove_all": "Usuń wszystko", "gui_remove": "Usuń", "error_port_not_available": "Port OnionShare nie jest dostępny", "gui_rendezvous_cleanup_quit_early": "Zakończ wcześniej", "gui_rendezvous_cleanup": "Oczekiwanie na zamknięcie obwodów Tor, aby upewnić się, że pliki zostały przesłane.\n\nTo może zająć kilka minut.", "mode_settings_website_disable_csp_checkbox": "Nie ustawiaj nagłówka Content Security Policy (pozwala Twojej witrynie na korzystanie z zasobów zewnętrznych)", "mode_settings_receive_data_dir_browse_button": "Przeglądaj", "mode_settings_receive_data_dir_label": "Zapisz pliki do", "mode_settings_share_autostop_sharing_checkbox": "Zatrzymaj udostępnianie po wysłaniu plików (odznacz, aby umożliwić pobieranie pojedynczych plików)", "mode_settings_autostop_timer_checkbox": "Zatrzymaj usługę .onion w zaplanowanym czasie", "mode_settings_autostart_timer_checkbox": "Uruchom usługę cebulową w zaplanowanym czasie", "mode_settings_public_checkbox": "To jest publiczny serwis OnionShare (wyłącza klucz prywatny)", "mode_settings_persistent_checkbox": "Zawsze otwieraj tę kartę po uruchomieniu OnionShare (adres onion pozostanie taki sam)", "mode_settings_advanced_toggle_hide": "Ukryj ustawienia zaawansowane", "mode_settings_advanced_toggle_show": "Pokaż ustawienia zaawansowane", "gui_quit_warning_cancel": "Anuluj", "gui_quit_warning_description": "Wyjść i zamknąć wszystke karty, mimo że udostępnianie jest aktywne w niektórych z nich?", "gui_quit_warning_title": "Zakończyć OnionShare?", "gui_close_tab_warning_cancel": "Anuluj", "gui_close_tab_warning_close": "OK", "gui_close_tab_warning_website_description": "Zamknąć kartę, która hostuje stronę internetową?", "gui_close_tab_warning_receive_description": "Zamknij kartę, która odbiera pliki?", "gui_close_tab_warning_share_description": "Zamknąć kartę, która wysyła pliki?", "gui_close_tab_warning_persistent_description": "Zamknąć trwałą kartę i stracić używany adres .onion?", "gui_color_mode_changed_notice": "Uruchom ponownie OnionShare, aby zobaczyć nowe kolory.", "gui_chat_url_description": "Każdy z tym adresem OnionShare oraz kluczem prywatnym może dołączyć do tego czatu używając Przeglądarki Tor: ", "mode_settings_receive_disable_files_checkbox": "Wyłącz wysyłanie plików", "gui_status_indicator_chat_scheduled": "Zaplanowane…", "gui_status_indicator_chat_working": "Rozpoczynanie…", "history_receive_read_message_button": "Czytaj Wiadomość", "mode_settings_receive_webhook_url_checkbox": "Użyj powiadomień webhook", "mode_settings_receive_disable_text_checkbox": "Nie wysyłaj tekstu", "mode_settings_title_label": "Tytuł niestandardowy", "gui_settings_theme_dark": "Ciemny", "gui_settings_theme_light": "Jasny", "gui_settings_theme_auto": "Automatyczny", "gui_settings_theme_label": "Motyw", "gui_status_indicator_chat_started": "Czatuje", "gui_status_indicator_chat_stopped": "Zatrzymano", "gui_client_auth_instructions": "Następnie wyślij klucz prywatny, by umożliwić dostęp do Twojego serwisu OnionShare:", "gui_url_instructions_public_mode": "Wyślij poniższy adres OnionShare:", "gui_url_instructions": "Najpierw wyślij poniższy adres OnionShare:", "gui_chat_url_public_description": "Każdy z tym adresem OnionShare może dołączyć do tego pokoju używając Przeglądarki Tor: ", "gui_receive_url_public_description": "Każdy z tym adresem OnionShare może przesyłać pliki na Twój komputer za pomocą przeglądarki Tor Browser: ", "gui_website_url_public_description": "Każdy z tym adresem OnionShare może odwiedzić twoją stronę używając przeglądarki Tor Browser: ", "gui_share_url_public_description": "Każdy z tym adresem OnionShare może pobrać Twoje pliki za pomocą przeglądarki Tor Browser: ", "gui_server_doesnt_support_stealth": "Przepraszamy, ta wersja Tor nie obsługuje skrytego (uwierzytelniania klienta). Spróbuj z nowszą wersją Tor lub użyj trybu „publicznego”, jeśli nie musi być prywatny.", "gui_please_wait_no_button": "Rozpoczynanie…", "gui_hide": "Ukryj", "gui_reveal": "Odsłoń", "gui_qr_label_auth_string_title": "Klucz Prywatny", "gui_copy_client_auth": "Skopiuj klucz prywatny", "gui_copied_client_auth_title": "Skopiowany klucz prywatny", "gui_copied_client_auth": "Klucz prywatny skopiowano do schowka", "gui_qr_label_url_title": "Adres OnionShare", "gui_dragdrop_sandbox_flatpak": "Aby piaskownica Flatpak była bezpieczniejsza, przeciąganie i upuszczanie nie jest obsługiwane. Zamiast tego użyj przycisków \"Dodaj pliki\" i \"Dodaj folder\", aby wybrać pliki.", "gui_tor_settings_window_title": "Ustawienia Tor", "gui_settings_controller_extras_label": "Ustawienia Tor", "gui_settings_tor_bridges_label": "Mostki pomagają ruchowi wejść do sieci Tor, jeśli dostęp do Tor jest zablokowany. W zależności od tego, skąd się łączysz, jeden mostek może działać lepiej niż inny.", "gui_settings_bridge_use_checkbox": "Użyj mostka", "gui_settings_bridge_radio_builtin": "Wybierz wbudowany mostek", "gui_settings_bridge_none_radio_option": "Nie używaj mostków", "gui_settings_bridge_moat_radio_option": "Poproś o mostek z torproject.org", "gui_settings_bridge_moat_button": "Poproś o Nowy Mostek", "gui_settings_bridge_custom_radio_option": "Podaj mostek, o którym dowiedziałeś się z zaufanego źródła", "gui_settings_bridge_custom_placeholder": "wpisz adres:port (jeden na linię)", "gui_settings_moat_bridges_invalid": "Nie zażądałeś jeszcze mostka z torproject.org.", "gui_settings_stop_active_tabs_label": "Na niektórych Twoich kartach działają usługi.\nMusisz zatrzymać wszystkie usługi, aby zmienić ustawienia Tora.", "gui_settings_version_label": "Używasz OnionShare {}", "gui_settings_help_label": "Potrzebujesz pomocy? Sprawdź docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Wyślij niestandardowy nagłówek polityki bezpieczeństwa treści", "moat_contact_label": "Łączenie z BridgeDB…", "moat_captcha_label": "Rozwiąż CAPTCHA, aby poprosić o mostek.", "moat_captcha_placeholder": "Wpisz znaki z obrazka", "moat_captcha_submit": "Potwierdź", "moat_captcha_reload": "Załaduj ponownie", "moat_bridgedb_error": "Nie można połączyć się z BridgeDB.", "moat_captcha_error": "Nieprawidłowe rozwiązanie. Spróbuj ponownie.", "moat_solution_empty_error": "Wpisz znaki z obrazka", "mode_tor_not_connected_label": "OnionShare nie jest połączony z siecią Tor", "gui_autoconnect_bridge_detect_automatic": "Określ mój kraj na podstawie mojego adresu IP dla ustawień mostka", "gui_autoconnect_could_not_connect_to_tor_api": "Nie można połączyć się z interfejsem API Tor. Przed ponowną próbą upewnij się, że masz połączenie z Internetem.", "gui_autoconnect_bridge_detect_manual": "Wybierz mój kraj ręcznie dla ustawień mostka", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Żądanie mostów z interfejsu API omijania cenzury sieci Tor…", "gui_autoconnect_circumventing_censorship_got_bridges": "Mostki ustanowione. Podłączenie do sieci Tor…", "gui_autoconnect_bridge_setting_options": "Ustawienia mostka", "gui_autoconnect_configure": "Ustawienia sieci", "gui_autoconnect_no_bridge": "Spróbuj ponownie bez mostków", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Obejście cenzury…", "gui_autoconnect_trying_to_connect_to_tor": "Łączenie się z siecią Tor…", "gui_autoconnect_circumventing_censorship_starting_meek": "Ustanawianie cichego mostka dla frontingu domen…", "gui_autoconnect_connection_error_msg": "Upewnij się, że masz połączenie z Internetem.", "gui_autoconnect_bridge_description": "Możesz być w stanie połączyć się za pomocą mostka, jeśli połączenie internetowe jest ocenzurowane.", "gui_autoconnect_try_again_without_a_bridge": "Spróbuj ponownie bez mostków", "gui_autoconnect_circumventing_censorship": "Rozwiązywanie problemów z łącznością…", "gui_autoconnect_description": "OnionShare opiera się na obsługiwanej przez wolontariuszy sieci Tor.", "gui_enable_autoconnect_checkbox": "Automatyczne łączenie z siecią Tor", "gui_autoconnect_failed_to_connect_to_tor": "Nie można połączyć się z siecią Tor", "gui_autoconnect_start": "Połącz się z siecią Tor", "gui_general_settings_window_title": "Ogólne", "waitress_web_server_error": "Wystąpił problem z uruchomieniem serwera WWW", "gui_close_tab_warning_chat_description": "Zamknąć kartę hostującą serwer czatu?", "gui_chat_mode_explainer": "Tryb czatu umożliwia interaktywną rozmowę z innymi osobami w Tor Browser.

    Historia czatów nie jest przechowywana w OnionShare. Historia czatów zniknie, gdy zamkniesz Tor Browser.", "mode_settings_persistent_autostart_on_launch_checkbox": "Automatycznie uruchom tę usługę onion podczas uruchamiania OnionShare", "gui_settings_license_label": "OnionShare jest licencjonowany na podstawie licencji GPL v3.
    Licencje stron trzecich można przeglądać tutaj:
    https://github.com/onionshare/onionshare/tree/main/licenses", "error_generic": "Wystąpił nieoczekiwany błąd w OnionShare:\n{}" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/pt_BR.json000066400000000000000000000546051521174352300275250ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} não é um arquivo legível.", "other_page_loaded": "Endereço carregado", "close_on_autostop_timer": "Interrompido ao final da contagem do cronômetro automático", "closing_automatically": "Interrompido devido à conclusão da transferência", "large_filesize": "Aviso: O envio de arquivos grandes pode levar horas", "systray_menu_exit": "Sair", "gui_drag_and_drop": "Arraste e solte arquivos e pastas para começar a compartilhá-los", "gui_add": "Adicionar", "gui_choose_items": "Escolher", "gui_share_start_server": "Começar a compartilhar", "gui_share_stop_server": "Parar de compartilhar", "gui_share_stop_server_autostop_timer": "Parar de compartilhar em ({})", "gui_receive_start_server": "Iniciar o Modo de Recepção", "gui_receive_stop_server": "Parar o Modo Recepção", "gui_receive_stop_server_autostop_timer": "Parar o Modo Recepção ({} para terminar)", "gui_copy_url": "Copiar endereço", "gui_canceled": "Cancelado", "gui_copied_url_title": "O endereço OnionShare foi copiado", "gui_copied_url": "O endereço OnionShare foi copiado para a área de transferência", "gui_please_wait": "Começando... Clique para cancelar.", "gui_quit_warning_quit": "Sair", "zip_progress_bar_format": "Comprimindo: %p%", "gui_settings_window_title": "Configurações", "gui_settings_autoupdate_label": "Procurar por uma nova versão", "gui_settings_autoupdate_option": "Notificar-me quando uma nova versão estiver disponível", "gui_settings_autoupdate_timestamp": "Última verificação: {}", "gui_settings_autoupdate_timestamp_never": "Nunca", "gui_settings_autoupdate_check_button": "Procurar por uma nova versão", "gui_settings_connection_type_label": "Como OnionShare normalmente conecta-se a Tor?", "gui_settings_connection_type_bundled_option": "Usar a versão de Tor já instalada no OnionShare", "gui_settings_connection_type_automatic_option": "Tentar configuração automática com o Navegador Tor", "gui_settings_connection_type_control_port_option": "Conectar usando porta de controle", "gui_settings_connection_type_socket_file_option": "Conectar usando um arquivo socket", "gui_settings_connection_type_test_button": "Testar a conexão com a rede Tor", "gui_settings_control_port_label": "Porta de controle", "gui_settings_socket_file_label": "Arquivo socket", "gui_settings_socks_label": "Porta SOCKS", "gui_settings_authenticate_no_auth_option": "Sem autenticação nem cookie de autenticação", "gui_settings_authenticate_password_option": "Senha", "gui_settings_password_label": "Senha", "gui_settings_tor_bridges": "Conectar usando uma ponte Tor?", "gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek-azure são muito custosas para o Projeto Tor.

    Use-as somente se você não conseguir se conectar ao Tor diretamente, via transportadores obfs4 ou outras pontes comuns.", "gui_settings_tor_bridges_invalid": "Nenhuma das ponte adicionadas funciona. Tente usá-las de novo ou adicione outras.", "gui_settings_button_save": "Salvar", "gui_settings_button_cancel": "Cancelar", "gui_settings_button_help": "Ajuda", "settings_error_unknown": "Impossível conectar-se ao controlador do Tor, porque as suas configurações estão confusas.", "settings_error_automatic": "Não foi possível conectar ao controlador do Tor. O Navegador Tor (disponível no site torproject.org) está rodando em segundo plano?", "settings_error_socket_port": "Não foi possível conectar ao controlador do Tor às {}:{}.", "settings_error_socket_file": "Não foi possível conectar ao controlador Tor usando o arquivo de socket {}.", "settings_error_auth": "Conectado a {}:{}, mas não foi possível autenticar. Talvez este não seja um controlador Tor?", "settings_error_missing_password": "Conectado ao controlador Tor, mas é preciso ter uma senha para autenticar.", "settings_error_unreadable_cookie_file": "Conectado ao controlador Tor, mas talvez a senha esteja incorreta ou o seu usuário não possua autorização para ler o arquivo de cookie.", "settings_error_bundled_tor_not_supported": "Não é possível usar a versão de Tor que vem junto com OnionShare, em modo 'programação', com Windows ou macOS.", "settings_error_bundled_tor_timeout": "A conexão ao Tor está demorando muito. O seu computado está conectado à Internet e o seu relógio de sistema, ajustado?", "settings_error_bundled_tor_broken": "OnionShare não pôde se conectar ao Tor:\n{}", "settings_test_success": "Conectado ao controlador Tor.\n\nVersão do Tor: {}\nPossui suporte para serviços onion efêmeros: {}.\nPossui suporte para autenticação de cliente: {}.\nPossui suporte para a próxima geração de endereços .onion: {}.", "error_tor_protocol_error": "Houve um erro com Tor: {}", "connecting_to_tor": "Conectando à rede Tor", "update_available": "Atualização de OnionShare disponível. Clique aqui para obtê-la.

    Você está usando a versão {} e a última é {}.", "update_error_check_error": "Não foi possível verificar a nova versão: talvez você não esteja conectado ao Tor ou o site OnionShare esteja inativo?", "update_error_invalid_latest_version": "Não foi possível verificar a nova versão: o site OnionShare está dizendo que a versão mais recente é a irreconhecível '{}'…", "update_not_available": "Você está rodando a última versão de OnionShare.", "gui_tor_connection_ask": "Abrir as configurações para consertar a conexão ao Tor?", "gui_tor_connection_ask_open_settings": "Sim", "gui_tor_connection_ask_quit": "Sair", "gui_tor_connection_error_settings": "Tente mudar nas configurações a forma como OnionShare se conecta à rede Tor.", "gui_tor_connection_canceled": "Não foi possível conectar ao Tor.\n\nTenha certeza que você está conectado à Internet, então abra OnionShare novamente e configure sua conexão ao Tor.", "gui_tor_connection_lost": "Desconectado do Tor.", "gui_server_started_after_autostop_timer": "O cronômetro de parada automática acabou antes que o servidor fosse iniciado. Por favor, faça um novo compartilhamento.", "gui_server_autostop_timer_expired": "O cronômetro já esgotou. Por favor, ajuste-o para começar a compartilhar.", "gui_share_url_description": "Qualquer pessoa com este endereço e esta chave privada do OnionShare pode baixar seus arquivos usando o Navegador Tor: ", "gui_receive_url_description": "Qualquer pessoa com este endereço do OnionShare e chave privada pode carregar arquivos no seu computador usando o Navegador Tor: ", "gui_url_label_persistent": "Este compartilhamento não vai ser encerrado automaticamente.

    Todos os compartilhamentos posteriores reutilizarão este endereço. (Para usar um endereço novo a cada vez, desative a opção \"Usar o mesmo endereço\" nas configurações.)", "gui_url_label_stay_open": "Este compartilhamento não será encerrado automaticamente.", "gui_url_label_onetime": "Este compartilhamento será encerrado após completar uma vez.", "gui_url_label_onetime_and_persistent": "Este compartilhamento não será encerrado automaticamente.

    Todos os compartilhamentos posteriores reutilizarão este endereço. (Para usar endereços únicos a cada compartilhamento, desative a opção \"Usar o mesmo endereço\" nas configurações.)", "gui_status_indicator_share_stopped": "Encerrado", "gui_status_indicator_share_working": "Começando…", "gui_status_indicator_share_started": "Compartilhando", "gui_status_indicator_receive_stopped": "Encerrado", "gui_status_indicator_receive_working": "Começando…", "gui_status_indicator_receive_started": "Recebendo", "gui_file_info": "{} arquivos, {}", "gui_file_info_single": "{} arquivo, {}", "history_in_progress_tooltip": "{} em curso", "history_completed_tooltip": "{} completado", "gui_receive_mode_warning": "O modo de recepção permite que pessoas enviem arquivos para o seu computador.

    Alguns arquivos podem tomar o controle do seu computador se você abri-los. Apenas abra arquivos enviados por pessoas em quem você confia, ou se souber o que está fazendo.", "systray_page_loaded_title": "A página carregou", "gui_settings_language_label": "Língua", "gui_settings_language_changed_notice": "Reinicie o OnionShare para aplicar o novo idioma.", "gui_add_files": "Adicionar Arquivos", "gui_add_folder": "Adicionar Pasta", "gui_share_mode_no_files": "Nenhum arquivo ainda enviado", "error_cannot_create_data_dir": "Pasta de dados OnionShare não foi criada: {}", "systray_share_started_title": "O compartilhamento iniciou", "systray_share_started_message": "Iniciando o envio de arquivos", "systray_share_completed_title": "O compartilhamento completou-se", "systray_share_completed_message": "O envio de arquivos terminou", "systray_share_canceled_title": "O compartilhamento foi anulado", "systray_share_canceled_message": "Alguém cancelou o recebimento dos seus arquivos", "systray_receive_started_title": "O recebimento iniciou", "systray_receive_started_message": "Alguém está lhe enviando arquivos", "gui_all_modes_history": "Histórico", "gui_all_modes_clear_history": "Apagar Tudo", "gui_all_modes_transfer_started": "Iniciou {}", "gui_all_modes_transfer_finished_range": "Transferido {} - {}", "gui_all_modes_transfer_finished": "Transferido {}", "gui_all_modes_transfer_canceled_range": "Cancelado {} - {}", "gui_all_modes_transfer_canceled": "Cancelado {}", "gui_share_mode_autostop_timer_waiting": "Completando o envio…", "gui_receive_mode_no_files": "Nenhum arquivo recebido", "gui_receive_mode_autostop_timer_waiting": "Terminando de receber…", "systray_page_loaded_message": "O endereço OnionShare carregou", "gui_all_modes_progress_complete": "%p%, {0:s} em curso.", "gui_all_modes_progress_starting": "{0:s}, %p% (calculando)", "gui_all_modes_progress_eta": "{0:s}, Tempo aproximado: {1:s}, %p%", "gui_stop_server_autostop_timer_tooltip": "O relógio de interrupção automática encerra às {}", "gui_start_server_autostart_timer_tooltip": "O cronômetro de iniciação automática acaba às {}", "gui_waiting_to_start": "Marcado para começar daqui a {}. Clique para cancelar.", "gui_server_autostart_timer_expired": "O horário marcado já passou. Por favor, atualize-o para começar a compartilhar.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "O horário para o término automático não pode ser o mesmo ou anterior aquele marcado para começar. Por favor, ajuste-o para começar a compartilhar.", "gui_status_indicator_share_scheduled": "Marcado…", "gui_status_indicator_receive_scheduled": "Marcado…", "days_first_letter": "dia(s)", "hours_first_letter": "hora(s)", "minutes_first_letter": "minuto(s)", "seconds_first_letter": "segundo(s)", "incorrect_password": "Senha incorreta", "gui_website_url_description": "Qualquer pessoa com este endereço OnionShare e chave privada pode visitar seu site usando o Navegador Tor: ", "gui_website_mode_no_files": "Nenhum website compartilhado ainda", "history_requests_tooltip": "{} solicitações da web", "mode_settings_website_disable_csp_checkbox": "Não envie o cabeçalho padrão da Política de Segurança de Conteúdo (permite que seu website utilize recursos de terceiros)", "mode_settings_receive_data_dir_browse_button": "Navegar", "mode_settings_receive_data_dir_label": "Salvar arquivos em", "mode_settings_share_autostop_sharing_checkbox": "Interrompa o compartilhamento após o envio dos arquivos (desmarque para permitir o download de arquivos individuais)", "mode_settings_autostop_timer_checkbox": "Interromper o serviço de onion na hora programada", "mode_settings_autostart_timer_checkbox": "Iniciar serviço de onion na hora programada", "mode_settings_public_checkbox": "Este é um serviço público OnionShare (desativa a chave privada)", "mode_settings_persistent_checkbox": "Sempre abra esta aba quando o OnionShare for iniciado (o endereço do onion permanecerá o mesmo)", "mode_settings_advanced_toggle_hide": "Ocultar configurações avançadas", "mode_settings_advanced_toggle_show": "Mostrar configurações avançadas", "gui_quit_warning_cancel": "Cancelar", "gui_quit_warning_description": "Sair e fechar todas as abas, embora a partilha de ficheiros esteja ativa em algumas delas?", "gui_quit_warning_title": "Sair do OnionShare?", "gui_close_tab_warning_cancel": "Cancelar", "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_website_description": "Fechar a aba que está hospedando um site?", "gui_close_tab_warning_receive_description": "Fechar a aba que está recebendo ficheiros?", "gui_close_tab_warning_share_description": "Fechar a aba que está enviando ficheiros?", "gui_close_tab_warning_persistent_description": "Fechar a aba persistente e perder o endereço onion que ela está usando?", "gui_close_tab_warning_title": "Fechar a aba?", "gui_new_tab_website_button": "Publicar site", "gui_new_tab_receive_button": "Receber arquivos", "gui_new_tab_share_button": "Compartilhar arquivos", "gui_new_tab_tooltip": "Abrir uma nova aba", "gui_new_tab": "Nova aba", "gui_tab_name_website": "Site", "gui_tab_name_receive": "Receber", "gui_tab_name_share": "Compartilhar", "gui_main_page_chat_button": "Iniciar a conversar", "gui_main_page_website_button": "Iniciar a hospedar", "gui_main_page_receive_button": "Iniciar a receber", "gui_main_page_share_button": "Iniciar compartilhamento", "gui_new_tab_chat_button": "Converse anonimamente", "gui_open_folder_error": "A pasta não pode ser aberta com xdg-open. O arquivo está aqui: {}", "gui_qr_code_dialog_title": "Código QR OnionShare", "gui_show_qr_code": "Mostrar QR Code", "gui_receive_flatpak_data_dir": "Como você instalou o OnionShare usando o Flatpak, você deve salvar os arquivos em uma pasta em ~ / OnionShare.", "gui_chat_stop_server": "Parar o servidor de conversas", "gui_chat_start_server": "Iniciar um servidor de conversas", "gui_file_selection_remove_all": "Remover tudo", "gui_remove": "Remover", "gui_tab_name_chat": "Bate-papo", "error_port_not_available": "Porta OnionShare não disponível", "gui_chat_url_description": "Qualquer pessoa com este endereço OnionShare e chave privada pode entrar nesta sala de bate-papo usando o Navegador Tor: ", "gui_rendezvous_cleanup_quit_early": "Fechar facilmente", "gui_rendezvous_cleanup": "Aguardando o fechamento dos circuitos do Tor para ter certeza de que seus ficheiros foram transferidos.\n\nIsto pode demorar alguns minutos.", "gui_color_mode_changed_notice": "Reinicie o OnionShare para ver as novas cores.", "history_receive_read_message_button": "Ler mensagem", "mode_settings_receive_webhook_url_checkbox": "Usar webhook de notificação", "mode_settings_receive_disable_files_checkbox": "Desativar o carregamento de arquivos", "mode_settings_receive_disable_text_checkbox": "Desativar envio de texto", "mode_settings_title_label": "Título personalizado", "gui_status_indicator_chat_started": "Conversando", "gui_status_indicator_chat_scheduled": "Programando…", "gui_status_indicator_chat_working": "Começando…", "gui_status_indicator_chat_stopped": "Encerrado", "gui_share_url_public_description": "Qualquer pessoa com este endereço OnionShare pode baixar seus arquivos usando o Navegador Tor: ", "gui_server_doesnt_support_stealth": "Desculpe, esta versão do Tor não suporta (autenticação de cliente) furtiva. Por favor, tente uma versão mais recente do Tor ou utilize o modo 'público' se não houver a necessidade de ter privacidade.", "gui_please_wait_no_button": "Iniciando…", "gui_hide": "Ocultar", "gui_reveal": "Mostrar", "gui_qr_label_auth_string_title": "Chave Privada", "gui_qr_label_url_title": "Endereço OnionShare", "gui_copied_client_auth": "Chave Privada copiada para a área de transferência", "gui_copied_client_auth_title": "Chave Privada Copiada", "gui_copy_client_auth": "Copiar Chave Privada", "gui_settings_theme_auto": "Automático", "gui_settings_theme_dark": "Escuro", "gui_settings_theme_light": "Claro", "gui_settings_theme_label": "Tema", "gui_client_auth_instructions": "Em seguida, envie a chave privada para permitir o acesso ao seu serviço OnionShare:", "gui_url_instructions_public_mode": "Envie o endereço OnionShare abaixo:", "gui_url_instructions": "Primeiro, envie o endereço OnionShare abaixo:", "gui_chat_url_public_description": "Qualquer pessoa com este endereço OnionShare pode entrar nesta sala de bate-papo usando o Navegador Tor: ", "gui_receive_url_public_description": "Qualquer pessoa com este endereço OnionShare pode carregar arquivos para o seu computador usando o Navegador Tor: ", "gui_website_url_public_description": "Qualquer pessoa com este endereço OnionShare pode visitar o seu site usando o Navegador Tor: ", "gui_dragdrop_sandbox_flatpak": "Para tornar a ferramenta Flatpak sandbox mais segura, a função de arrastar e largar não é suportada. Em vez disso, use os botões \"Adicionar Arquivos\" e \"Adicionar Pasta\" para selecionar arquivos.", "gui_tor_settings_window_title": "Configurações do Tor", "gui_settings_controller_extras_label": "Configurações do Tor", "gui_settings_tor_bridges_label": "Pontes ajudam a acessar a Rede Tor em locais onde o Tor está bloqueado. Dependendo de onde você se conectar, uma ponte pode funcionar melhor que outra.", "gui_settings_bridge_use_checkbox": "Usar uma ponte", "gui_settings_bridge_radio_builtin": "Selecione uma ponte embutida", "gui_settings_bridge_none_radio_option": "Não use pontes", "gui_settings_bridge_moat_radio_option": "Solicite uma ponte no torproject.org", "gui_settings_bridge_moat_button": "Solicitar uma nova ponte", "gui_settings_bridge_custom_radio_option": "Fornece uma ponte que você teve acesso de uma fonte confiável", "gui_settings_bridge_custom_placeholder": "digite adress:port (um por linha)", "gui_settings_moat_bridges_invalid": "Você ainda não solicitou uma ponte do torproject.org.", "gui_settings_stop_active_tabs_label": "Há serviços funcionando em algumas de suas abas.\nVocê deve parar todos os serviços para alterar suas configurações Tor.", "gui_settings_version_label": "Você está usando o OnionShare {}", "gui_settings_help_label": "Precisa de ajuda? Veja docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Enviar um cabeçalho personalizado da Política de Segurança de Conteúdo", "moat_contact_label": "Contactando BridgeDB…", "moat_captcha_label": "Resolva o CAPTCHA para solicitar uma ponte.", "moat_captcha_placeholder": "Digite os caracteres que aparecem na imagem", "moat_captcha_submit": "Enviar", "moat_captcha_reload": "Recarregar", "moat_bridgedb_error": "Não foi possível contactar BridgeDB.", "moat_captcha_error": "Solução incorreta. Por favor tente novamente.", "moat_solution_empty_error": "Insere os caracteres que aparecem na imagem", "mode_tor_not_connected_label": "OnionShare não está conectado com a rede Tor", "gui_autoconnect_description": "OnionShare depende da rede Tor operada por voluntários.", "gui_enable_autoconnect_checkbox": "Conectar-se automaticamente ao Tor", "gui_autoconnect_failed_to_connect_to_tor": "Não foi possível conectar ao Tor", "gui_autoconnect_trying_to_connect_to_tor": "Conectando ao Tor…", "gui_autoconnect_try_again_without_a_bridge": "Tente novamente sem pontes", "gui_autoconnect_circumventing_censorship": "Resolvendo problemas de conectividade…", "gui_autoconnect_bridge_setting_options": "Configurações da ponte", "gui_autoconnect_start": "Conectar ao Tor", "gui_autoconnect_configure": "Configurações de rede", "gui_autoconnect_no_bridge": "Tente novamente sem pontes", "gui_general_settings_window_title": "Geral", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Contornando a censura…", "gui_autoconnect_connection_error_msg": "Verifique se você está conectado à Internet.", "gui_autoconnect_bridge_detect_automatic": "Determine meu país a partir do meu endereço IP para configurações de ponte", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Solicitando pontes da API de evasão de censura do Tor…", "gui_autoconnect_circumventing_censorship_got_bridges": "Pontes estabelecidas. Reconectando ao Tor…", "gui_autoconnect_bridge_description": "Você pode se conectar usando uma ponte se sua conexão com a Internet for censurada.", "gui_autoconnect_bridge_detect_manual": "Selecione meu país para configurações de ponte manualmente", "gui_autoconnect_could_not_connect_to_tor_api": "Não foi possível conectar-se à API do Tor. Verifique se você está conectado à Internet antes de tentar novamente.", "gui_autoconnect_circumventing_censorship_starting_meek": "Estabelecendo uma ponte meek para fronting de domínio…", "gui_close_tab_warning_chat_description": "Fechar a aba com o servidor de chat?", "waitress_web_server_error": "Ocorreu um problema ao iniciar o servidor web", "gui_chat_mode_explainer": "O modo de bate-papo permite que você converse interativamente com outras pessoas no navegador Tor.

    O histórico de bate-papo não é armazenado no OnionShare. O histórico de bate-papo desaparecerá quando você fechar o Navegador Tor.", "mode_settings_persistent_autostart_on_launch_checkbox": "Iniciar automaticamente este serviço onion quando o OnionShare for iniciado", "error_generic": "Ocorreu um erro inesperado com o OnionShare:\n{}", "gui_settings_license_label": "O OnionShare está licenciado sob a GPL v3. As licenças de terceiros podem ser visualizadas aqui:
    https://github.com/onionshare/onionshare/tree/main/licenses" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/pt_PT.json000066400000000000000000000543621521174352300275450ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} não é um ficheiro legível.", "other_page_loaded": "Endereço carregado", "close_on_autostop_timer": "Parado porque o cronómetro de paragem automática expirou", "closing_automatically": "Parado porque a transferência está concluída", "large_filesize": "Aviso: o envio de ficheiros grandes pode demorar várias horas", "systray_menu_exit": "Sair", "gui_drag_and_drop": "Arraste e largue os ficheiros e pastas para começar a partilhar", "gui_add": "Adicionar", "gui_choose_items": "Escolher", "gui_share_start_server": "Começar a partilhar", "gui_share_stop_server": "Parar partilha", "gui_share_stop_server_autostop_timer": "Parar partilha de ({})", "gui_receive_start_server": "Iniciar Modo de Receber", "gui_receive_stop_server": "Parar Modo de Receber", "gui_receive_stop_server_autostop_timer": "Parar Modo de Receber (Restantes: {})", "gui_copy_url": "Copiar Endereço", "gui_canceled": "Cancelado", "gui_copied_url_title": "Copiado Endereço do OnionShare", "gui_copied_url": "O endereço do OnionShare foi copiado para a área de transferência", "gui_please_wait": "A iniciar… Clique para cancelar.", "gui_quit_warning_quit": "Sair", "zip_progress_bar_format": "A comprimir: %p%", "gui_settings_window_title": "Definições", "gui_settings_autoupdate_label": "Procurar por nova versão", "gui_settings_autoupdate_option": "Notificar-me quando estiver disponível uma nova versão", "gui_settings_autoupdate_timestamp": "Última verificação: {}", "gui_settings_autoupdate_timestamp_never": "Nunca", "gui_settings_autoupdate_check_button": "Procurar por Nova Versão", "gui_settings_connection_type_label": "Como é que o OnionShare deve ligar ao Tor?", "gui_settings_connection_type_bundled_option": "Utilizar a versão do Tor integrada no OnionShare", "gui_settings_connection_type_automatic_option": "Tentar configurar automaticamente com o Tor Browser", "gui_settings_connection_type_control_port_option": "Ligar utilizando a porta de controlo", "gui_settings_connection_type_socket_file_option": "Ligar utilizando um ficheiro ''socket''", "gui_settings_connection_type_test_button": "Testar Ligação ao Tor", "gui_settings_control_port_label": "Porta de controlo", "gui_settings_socket_file_label": "Ficheiro ''socket''", "gui_settings_socks_label": "Porta SOCKS", "gui_settings_authenticate_no_auth_option": "Sem autenticação, ou autenticação por ''cookie''", "gui_settings_authenticate_password_option": "Palavra-passe", "gui_settings_password_label": "Palavra-passe", "gui_settings_tor_bridges": "Ligar com Ponte Tor?", "gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek-azure são muito dispendiosas para o Projeto Tor.

    Utilize-as apenas se não conseguir ligar diretamente ao Tor, via transportes obfs4, ou outras pontes normais.", "gui_settings_tor_bridges_invalid": "Nenhuma das pontes que adicionou funciona. Verifique-as ou adicione outras.", "gui_settings_button_save": "Guardar", "gui_settings_button_cancel": "Cancelar", "gui_settings_button_help": "Ajuda", "settings_error_unknown": "Não é possível ligar ao controlador Tor porque as suas definições não fazem sentido.", "settings_error_automatic": "Não foi possível ligar ao controlador Tor. O Tor Browser (disponível em torproject.org) está a ser executado em segundo plano?", "settings_error_socket_port": "Não é possível ligar ao controlador Tor em {}:{}.", "settings_error_socket_file": "Não é possível ligar ao controlador Tor utilizando o ficheiro socket {}.", "settings_error_auth": "Ligado a {}:{}, mas não é possível autenticar. Talvez não seja um controlador Tor?", "settings_error_missing_password": "Ligado ao controlador Tor, mas este requer uma palavra-passe para autenticar.", "settings_error_unreadable_cookie_file": "Ligado ao controlador Tor, mas a palavra-passe pode estar incorreta, ou o seu utilizador não tem autorização para ler o ficheiro do cookie.", "settings_error_bundled_tor_not_supported": "Utilizar a versão do Tor que vem com o OnionShare não funciona no modo de 'programação' no Windows ou macOS.", "settings_error_bundled_tor_timeout": "A ligação ao Tor está a demorar muito. Talvez não esteja ligado à Internet, ou o relógio do sistema está incorreto?", "settings_error_bundled_tor_broken": "OnionShare não pôde se conectar ao Tor:\n{}", "settings_test_success": "Conectado ao controlador Tor.\n\nVersão do Tor: {}\nSuporta serviços onion efémeros: {}.\nSuporta autenticação de cliente: {}.\nSuporta próxima geração de endereços .onion: {}.", "error_tor_protocol_error": "Ocorreu um erro com o Tor: {}", "connecting_to_tor": "A conectar à rede Tor", "update_available": "Está disponível uma nova versão do OnionShare. Clique aqui para obtê-la.

    Está a utilizar a versão {} e a versão mais recente é a {}.", "update_error_check_error": "Não foi possível procurar por nova versão: talvez não esteja ligado à rede Tor ou o site do OnionShare está desligado?", "update_error_invalid_latest_version": "Não foi possível verificar se existe uma nova versão: o site do OnionShare está a dizer que a última versão não é reconhecida '{}'…", "update_not_available": "Está a utilizar a versão mais recente do OnionShare.", "gui_tor_connection_ask": "Abrir as definições para corrigir a conexão ao Tor?", "gui_tor_connection_ask_open_settings": "Sim", "gui_tor_connection_ask_quit": "Sair", "gui_tor_connection_error_settings": "Tente alterar nas definições o modo como o OnionShare conecta à rede Tor.", "gui_tor_connection_canceled": "Não foi possível ligar à rede Tor.\n\nCertifique-se se está conectado à Internet, depois reabra o OnionShare e configure a sua conexão à rede Tor.", "gui_tor_connection_lost": "Desconectado da rede Tor.", "gui_server_started_after_autostop_timer": "O cronómetro de paragem automática atingiu o tempo limite antes do servidor iniciar. Crie uma nova partilha.", "gui_server_autostop_timer_expired": "O cronómetro de paragem automática expirou. Por favor, ajuste-o para começar a partilhar.", "gui_share_url_description": "Qualquer pessoa com este endereço do OnionShare pode descarregar os seus ficheiros utilizando o Tor Browser: ", "gui_receive_url_description": "Qualquer pessoa com este endereço do OnionShare pode enviar ficheiros para o seu computador utilizando o Tor Browser: ", "gui_url_label_persistent": "Esta partilha não irá parar automaticamente.

    Todas as partilhas posteriores reutilizaram este endereço. (Para utilizar endereços de uma só utilização, desative a opção \"Abrir sempre este separador quando o OnionShare é iniciado\" nas definições.)", "gui_url_label_stay_open": "Esta partilha não irá parar automaticamente.", "gui_url_label_onetime": "Esta partilha irá parar depois da primeira conclusão.", "gui_url_label_onetime_and_persistent": "Esta partilha não irá parar automaticamente.

    Todas as partilhas posteriores reutilizaram este endereço. (Para utilizar endereços de uma só utilização, desative a opção \"Abrir sempre este separador quando o OnionShare é iniciado\" nas definições.)", "gui_status_indicator_share_stopped": "Parada", "gui_status_indicator_share_working": "A começar…", "gui_status_indicator_share_started": "A partilhar", "gui_status_indicator_receive_stopped": "Parado", "gui_status_indicator_receive_working": "A começar…", "gui_status_indicator_receive_started": "A receber", "gui_file_info": "{} ficheiros, {}", "gui_file_info_single": "{} ficheiro, {}", "history_in_progress_tooltip": "{} em progresso", "history_completed_tooltip": "{} concluído(s)", "gui_receive_mode_warning": "O modo de receção permite que as pessoas enviem ficheiros para o seu computador.

    Alguns ficheiros podem potencialmente tomar o controlo do seu computador se os abrir. Abra apenas ficheiros enviados por pessoas que confia ou se souber o que está a fazer.", "systray_page_loaded_title": "Página Carregada", "gui_settings_language_label": "Idioma", "gui_settings_language_changed_notice": "Reiniciar o OnionShare para alterar o novo idioma.", "gui_add_files": "Adicionar Ficheiros", "gui_add_folder": "Adicionar Pasta", "error_cannot_create_data_dir": "Não foi possível criar a pasta de dados do OnionShare: {}", "systray_page_loaded_message": "Endereço do OnionShare carregado", "systray_share_started_title": "Partilha iniciada", "systray_share_started_message": "A iniciar o envio dos ficheiros para alguém", "systray_share_completed_title": "Partilha Concluída", "systray_share_completed_message": "O envio dos ficheiros terminou", "systray_share_canceled_title": "Partilha Cancelada", "systray_share_canceled_message": "Alguém cancelou a receção dos seus ficheiros", "systray_receive_started_title": "Receção Iniciada", "systray_receive_started_message": "Alguém está a enviar-lhe ficheiros", "gui_all_modes_history": "Histórico", "gui_all_modes_clear_history": "Limpar Tudo", "gui_all_modes_transfer_started": "Iniciado em {}", "gui_all_modes_transfer_finished_range": "Transferido {} - {}", "gui_all_modes_transfer_finished": "Transferido {}", "gui_all_modes_transfer_canceled_range": "Cancelado {} - {}", "gui_all_modes_transfer_canceled": "Cancelado {}", "gui_all_modes_progress_complete": "%p%, {0:s} decorrido.", "gui_all_modes_progress_starting": "{0:s}, %p% (a calcular)", "gui_all_modes_progress_eta": "{0:s}, tempo restante estimado: {1:s}, %p%", "gui_share_mode_no_files": "Ainda não foram enviados ficheiros", "gui_receive_mode_no_files": "Ainda não foram recebidos ficheiros", "gui_stop_server_autostop_timer_tooltip": "O cronómetro de paragem automática termina em {}", "gui_start_server_autostart_timer_tooltip": "O cronómetro de início automático termina em {}", "gui_waiting_to_start": "Agendado para iniciar em {}. Clique para cancelar.", "gui_server_autostart_timer_expired": "O tempo agendado já passou. Por favor, ajuste-o para começar a partilhar.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "O tempo de paragem automática não pode ser o mesmo que o tempo do início automático. Por favor, ajuste-o para começar a partilhar.", "gui_status_indicator_share_scheduled": "Agendada…", "gui_status_indicator_receive_scheduled": "Agendada…", "gui_share_mode_autostop_timer_waiting": "A terminar o envio…", "gui_receive_mode_autostop_timer_waiting": "A terminar o recebimento…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "incorrect_password": "Palavra-passe incorreta", "mode_settings_autostop_timer_checkbox": "Parar serviço Onion na hora agendada", "mode_settings_autostart_timer_checkbox": "Iniciar serviço Onion na hora agendada", "mode_settings_public_checkbox": "Não utilizar uma palavra-passe", "mode_settings_advanced_toggle_hide": "Ocultar definições avançadas", "mode_settings_advanced_toggle_show": "Mostrar definições avançadas", "gui_quit_warning_cancel": "Cancelar", "gui_quit_warning_title": "Sair do OnionShare?", "gui_close_tab_warning_cancel": "Cancelar", "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_title": "Fechar separador?", "gui_new_tab_website_button": "Publicar site da web", "gui_new_tab_receive_button": "Receber ficheiros", "gui_new_tab_share_button": "Partilhar ficheiros", "gui_new_tab_tooltip": "Abrir um novo separador", "gui_new_tab": "Novo separador", "gui_website_mode_no_files": "Ainda Sem Site da Web Partilhado", "history_requests_tooltip": "{} pedidos da Web", "gui_website_url_description": "Qualquer pessoa com um endereço do OnionShare pode visitar o seu site utilizando o Tor Browser: ", "mode_settings_website_disable_csp_checkbox": "Não envie cabeçalho de Política de Segurança de Conteúdo (permite que o seu sítio electrónico utilize recursos de terceiros)", "mode_settings_receive_data_dir_browse_button": "Navegar", "mode_settings_receive_data_dir_label": "Guardar ficheiros para", "mode_settings_share_autostop_sharing_checkbox": "Parar a partilha de ficheiros após terem sido enviados (desmarque para permitir o descarregamento de ficheiros individuais)", "mode_settings_persistent_checkbox": "Abrir sempre este separador quando o OnionShare é iniciado (o endereço onion será o mesmo)", "gui_quit_warning_description": "Sair e fechar todos os separadores, embora a partilha esteja ativa em alguns seles?", "gui_close_tab_warning_website_description": "Fechar separador que está a hospedar um site da Web?", "gui_close_tab_warning_receive_description": "Fechar separador que está a receber os ficheiros?", "gui_close_tab_warning_share_description": "Fechar o separador que está a enviar ficheiros?", "gui_close_tab_warning_persistent_description": "Fechar o separador persistente e perder o endereço onion que está a ser utilizado?", "gui_tab_name_chat": "Conversa", "gui_tab_name_website": "Sítio Electrónico", "gui_tab_name_receive": "Recebe", "gui_tab_name_share": "Partilha", "gui_main_page_chat_button": "Começa a Conversar", "gui_main_page_website_button": "Começa a Hospedar", "gui_main_page_receive_button": "Começa a receber", "gui_main_page_share_button": "Começa a partilhar", "gui_new_tab_chat_button": "Converse Anónimamente", "gui_open_folder_error": "Não foi possível abrir a pasta com xdc-open. O ficheiro está em: {}", "gui_qr_code_dialog_title": "Código QR do OnionShare", "gui_show_qr_code": "Mostrar Código QR", "gui_receive_flatpak_data_dir": "Porque instalou o OnionShare com o Flatpak, deve guardar os ficheiros numa pasta em ~/OnionShare.", "gui_chat_stop_server": "Parar servidor de conversação", "gui_chat_start_server": "Iniciar servidor de conversação", "gui_file_selection_remove_all": "Remover Tudo", "gui_remove": "Remover", "gui_please_wait_no_button": "A iniciar…", "gui_hide": "Ocultar", "gui_reveal": "Revelar", "gui_qr_label_auth_string_title": "Chave Privada", "gui_qr_label_url_title": "Endereço do OnionShare", "gui_copied_client_auth": "'Chave Privada' copiada para a área de transferência", "gui_copied_client_auth_title": "Copiada Chave Privada", "gui_copy_client_auth": "Copiar Chave Privada", "history_receive_read_message_button": "Ler mensagem", "error_port_not_available": "Porta OnionShare não disponível", "gui_rendezvous_cleanup_quit_early": "Sair mais cedo", "gui_rendezvous_cleanup": "A aguardar o fecho dos circuitos Tor para ter a certeza de que os ficheiros foram transferidos.\n\nIsto pode demorar alguns minutos.", "mode_settings_receive_webhook_url_checkbox": "Usar webhook de notificação", "mode_settings_receive_disable_files_checkbox": "Desativar o envio de ficheiros", "mode_settings_receive_disable_text_checkbox": "Desativar envio de texto", "mode_settings_title_label": "Título personalizado", "gui_color_mode_changed_notice": "Reinicie o OnionShare para ver as novas cores.", "gui_settings_theme_dark": "Escuro", "gui_settings_theme_light": "Claro", "gui_settings_theme_auto": "Automático", "gui_settings_theme_label": "Tema", "gui_status_indicator_chat_started": "A conversar", "gui_status_indicator_chat_scheduled": "Agendada…", "gui_status_indicator_chat_working": "A iniciar…", "gui_status_indicator_chat_stopped": "Parada", "gui_client_auth_instructions": "De seguida, envie a chave privada para permitir o acesso ao seu serviço OnionShare:", "gui_url_instructions_public_mode": "Envie o endereço OnionShare em baixo:", "gui_url_instructions": "Primeiro, envie o endereço OnionShare em baixo:", "gui_chat_url_public_description": "Qualquer pessoa com este endereço OnionShare pode entrar nesta sala de conversa usando o Tor Browser: ", "gui_chat_url_description": "Qualquer pessoa com este endereço OnionShare e chave privada pode entrar nesta sala de conversa usando o Tor Browser: ", "gui_receive_url_public_description": "Qualquer pessoa com este endereço OnionShare pode enviar ficheiros para o seu computador usando o Tor Browser: ", "gui_website_url_public_description": "Qualquer pessoa com este endereço OnionShare pode visitar o seu site usando o Tor Browser: ", "gui_share_url_public_description": "Qualquer pessoa com este endereço OnionShare pode descarregar os seus ficheiros usando o Tor Browser: ", "gui_server_doesnt_support_stealth": "Desculpe, esta versão do Tor não suporta ocultação stealth (autenticação do cliente). Por favor, tente uma versão mais recente do Tor ou utilize o modo 'público' se não houver a necessidade de privacidade.", "gui_dragdrop_sandbox_flatpak": "Para tornar a \"área de testes\" Flatpak mais segura, não é suportado o \"arrastar e largar\". Em vez disso, utilize os botões de \"Adicionar Ficheiros\" e \"Adicionar Pasta\" para selecionar os ficheiros.", "gui_tor_settings_window_title": "Tor - Definições", "gui_settings_controller_extras_label": "Definições do Tor", "gui_settings_bridge_use_checkbox": "Utilizar uma ponte", "gui_settings_bridge_radio_builtin": "Selecionar uma ponte embutida", "gui_settings_bridge_none_radio_option": "Não utilizar pontes", "gui_settings_bridge_moat_radio_option": "Solicitar uma ponte a torproject.org", "gui_settings_bridge_moat_button": "Solicitar uma Ponte Nova", "gui_settings_tor_bridges_label": "As pontes ajudam o seu tráfego no acesso à Rede Tor se o acesso Tor estiver bloqueado. Dependendo de onde está a ligar, uma ponte pode funcionar melhor do que outra.", "gui_settings_bridge_custom_radio_option": "Forneça uma ponte que sabe de uma fonte confiável", "gui_settings_bridge_custom_placeholder": "digite endereço:porta (uma por linha)", "gui_settings_moat_bridges_invalid": "Ainda não solicitou uma ponte de torproject.org.", "gui_settings_stop_active_tabs_label": "Existem serviços em execução em alguns dos seus separadores.\nDeve para todos os serviços para alterar as suas definições do Tor.", "gui_settings_version_label": "Você está a usar o OnionShare {}", "gui_settings_help_label": "Precisa de ajuda? Veja docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Envie um cabeçalho de «Política de Segurança de Conteúdo» personalizado", "moat_contact_label": "A contactar BridgeDB…", "moat_captcha_label": "Resolva o 'CAPTCHA' para solicitar uma ponte.", "moat_captcha_placeholder": "Insira os carateres da image", "moat_captcha_submit": "Submeter", "moat_captcha_reload": "Recarregar", "moat_bridgedb_error": "Não foi possível contactar BridgeDB.", "moat_captcha_error": "Solução incorreta. Por favor, tente novamente.", "moat_solution_empty_error": "Insira os carateres da imagem", "mode_tor_not_connected_label": "OnionShare não está ligado à rede Tor", "gui_autoconnect_trying_to_connect_to_tor": "A ligar ao Tor…", "gui_autoconnect_description": "O OnionShare depende da rede Tor, que é operada voluntariamente.", "gui_autoconnect_failed_to_connect_to_tor": "Não foi possível ligar ao Tor", "gui_autoconnect_connection_error_msg": "Verifique se está ligado à Internet.", "gui_autoconnect_circumventing_censorship_starting_circumvention": "A contornar a censura…", "gui_chat_mode_explainer": "O modo de conversação deixa-o conversar interativamente com outros, no Tor Browser.

    O histórico de conversação não é guardado no OnionShare. O histórico de conversação desaparecerá quando fechar o Tor Browser.", "gui_autoconnect_circumventing_censorship": "A resolver os problemas de conetividade…", "gui_autoconnect_circumventing_censorship_got_bridges": "Pontes estabelecidas. A religar ao Tor…", "gui_autoconnect_bridge_setting_options": "Definições da Ponte", "gui_autoconnect_could_not_connect_to_tor_api": "Não foi possível ligar à API do Tor. Certifique-se que está ligado à Internet antes de tentar novamente.", "gui_autoconnect_no_bridge": "Tentar novamente sem pontes", "gui_enable_autoconnect_checkbox": "Ligar automaticamente ao Tor", "gui_autoconnect_bridge_description": "Talvez possa ligar utilizando uma ponte se a sua ligação à Internet for censurada.", "gui_autoconnect_bridge_detect_automatic": "Determinar o meu país através do meu endereço de IP para as definições da ponte", "gui_autoconnect_bridge_detect_manual": "Selecionar manualmente o meu país para as definições da ponte", "gui_autoconnect_start": "Ligar ao Tor", "gui_autoconnect_configure": "Definições da Rede", "gui_autoconnect_try_again_without_a_bridge": "Tentar novamente sem pontes", "gui_general_settings_window_title": "Geral", "gui_autoconnect_circumventing_censorship_requesting_bridges": "A solicitar pontes da API de evasão de censura do Tor…", "gui_autoconnect_circumventing_censorship_starting_meek": "A estabelecer uma ponte ''meek'' para ''fronting'' de domínio…", "gui_close_tab_warning_chat_description": "Fechar separador que hospeda um servidor de conversação?", "waitress_web_server_error": "Ocorreu um problema ao iniciar o servidor da Web", "error_generic": "Ocorreu um erro inesperado com o OnionShare:\n{}", "gui_settings_license_label": "OnionShare está licenciado sob a GPL v3.
    As licenças de terceiros podem ser revistas aqui:
    https://github.com/onionshare/onionshare/tree/main/licenses", "mode_settings_persistent_autostart_on_launch_checkbox": "Iniciar automaticamente este serviço onion quando o OnionShare inicia" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ro.json000066400000000000000000000330631521174352300271320ustar00rootroot00000000000000{ "not_a_readable_file": "Fișierul {0:s} nu poate fi citit.", "other_page_loaded": "Adresă încărcată", "close_on_autostop_timer": "Oprit deoarece s-a oprit cronometrul automat", "closing_automatically": "Oprit pentru că transferul s-a încheiat cu succes", "large_filesize": "Avertisment: Transferul unui volum mare de date poate dura ore", "systray_menu_exit": "Închidere", "gui_drag_and_drop": "Tragere și plasare fișiere și directoare pentru a începe partajarea", "gui_add": "Adaugă", "gui_choose_items": "Alegeți", "gui_share_start_server": "Începe partajarea", "gui_share_stop_server": "Oprește partajarea", "gui_share_stop_server_autostop_timer": "Oprire partajare ({})", "gui_receive_start_server": "Începeți modul de primire", "gui_receive_stop_server": "Opriți modul de primire", "gui_receive_stop_server_autostop_timer": "Opriți modul de primire (au rămas {})", "gui_copy_url": "Copiere adresă", "gui_canceled": "Anulat", "gui_copied_url_title": "Adresă OnionShare copiată", "gui_copied_url": "Adresa OnionShare a fost copiată în memoria clipboard", "gui_please_wait": "Începem ... Faceți clic pentru a anula.", "gui_quit_warning_quit": "Închidere", "zip_progress_bar_format": "Compresare: %p%", "gui_settings_window_title": "Setari", "gui_settings_autoupdate_label": "Verificați dacă există o versiune nouă", "gui_settings_autoupdate_option": "Anunțați-mă când este disponibilă o nouă versiune", "gui_settings_autoupdate_timestamp": "Ultima verificare: {}", "gui_settings_autoupdate_timestamp_never": "Niciodata", "gui_settings_autoupdate_check_button": "Verificați versiunea nouă", "gui_settings_connection_type_label": "Cum ar trebui să se conecteze OnionShare la Tor?", "gui_settings_connection_type_bundled_option": "Utilizați versiunea Tor încorporată în OnionShare", "gui_settings_connection_type_automatic_option": "Încercați configurarea automată cu Tor Browser", "gui_settings_connection_type_control_port_option": "Conectați-vă cu portul de control", "gui_settings_connection_type_socket_file_option": "Conectați-vă cu fișierul socket", "gui_settings_connection_type_test_button": "Testează conexiunea la Tor", "gui_settings_control_port_label": "Port de control", "gui_settings_socket_file_label": "Fișier socket", "gui_settings_socks_label": "Port SOCKS", "gui_settings_authenticate_no_auth_option": "Fără autentificare sau autentificare cookie", "gui_settings_authenticate_password_option": "Parolă", "gui_settings_password_label": "Parolă", "gui_settings_tor_bridges": "Suport pentru Tor", "gui_settings_meek_lite_expensive_warning": "Avertisment: podurile meek_lite sunt foarte costisitoare pentru rularea Proiectului Tor.

    Utilizați-le numai dacă nuvă puteți conecta direct la Tor, prin transporturi obfs4 sau alte poduri normale.", "gui_settings_tor_bridges_invalid": "Niciunul din podurile adăugate nu funcționează.\nVerificați-le încă o dată sau adăugați altele.", "gui_settings_button_save": "Salvare", "gui_settings_button_cancel": "Anulare", "gui_settings_button_help": "Ajutor", "settings_error_unknown": "Nu se poate face conectarea la controlerul Tor, deoarece setările dvs. nu au sens.", "settings_error_automatic": "Nu s-a putut face conectarea la controlerul Tor. Tor Browser (disponibil de la torproject.org) rulează în fundal?", "settings_error_socket_port": "Nu se poate face conectarea la controlerul Tor la {}:{}.", "settings_error_socket_file": "Nu se poate face conectarea la controlerul Tor folosind fișierul socket {}.", "settings_error_auth": "Conectat la {}:{}, dar nu se poate face autentificarea. Poate că nu este un controler Tor?", "settings_error_missing_password": "Conectat la controlerul Tor, dar este nevoie de o parolă pentru autentificare.", "settings_error_unreadable_cookie_file": "Conectat la controlerul Tor, dar parola poate fi greșită sau utilizatorului nu i se permite să citească fișierul cookie.", "settings_error_bundled_tor_not_supported": "Utilizarea versiunii Tor care vine cu OnionShare nu funcționează în modul dezvoltator pe Windows sau macOS.", "settings_error_bundled_tor_timeout": "Durează prea mult timp pentru a vă conecta la Tor. Poate nu sunteți conectat la Internet sau aveți un ceas al sistemului setat inexact?", "settings_error_bundled_tor_broken": "OnionShare nu se poate conecta la Tor în fundal:\n{}", "settings_test_success": "Conectat la controlerul Tor.\n\nVersiunea Tor: {}\nSuportă servicii efemere onion: {}.\nSuportă autentificarea clientului: {}.\nSuportă adrese next-gen .onion: {}.", "error_tor_protocol_error": "A apărut o eroare cu Tor: {}", "connecting_to_tor": "Conectarea la rețeaua Tor", "update_available": "Noua versiune OnionShare. Clic aici pentru a o obține.

    Folosiți versiunea {} și ultima versiune este {}.", "update_error_check_error": "Nu s-a putut verifica dacă există o versiune nouă: Poate nu sunteți conectat la Tor, sau site-ul OnionShare este închis?", "update_error_invalid_latest_version": "Nu s-a putut verifica dacă există o versiune nouă: site-ul OnionShare spune că ultima versiune nu poate fi recunoscută '{}'…", "update_not_available": "Rulează ultima versiune OnionShare.", "gui_tor_connection_ask": "Deschideți setările pentru a sorta conexiunea la Tor?", "gui_tor_connection_ask_open_settings": "Da", "gui_tor_connection_ask_quit": "Închidere", "gui_tor_connection_error_settings": "Încercați să schimbați în setări modul în care OnionShare se conectează la rețeaua Tor.", "gui_tor_connection_canceled": "Nu se poate realiza conexiunea la Tor.\n\nVerificați dacă sunteți conectat la Internet, apoi redeschideți OnionShare și setați conexiunea la Tor.", "gui_tor_connection_lost": "Deconectat de la Tor.", "gui_server_started_after_autostop_timer": "Cronometrul de oprire automată a expirat înainte de pornirea serverului. Vă rugăm să faceți o nouă partajare.", "gui_server_autostop_timer_expired": "Timpul pentru cronometrul auto-stop a expirat deja. Vă rugăm să îl modificați pentru a începe distribuirea.", "gui_share_url_description": "Oricine are această adresă OnionShare poate descărca fișierele dvs. folosind Tor Browser: ", "gui_receive_url_description": "Oricine are această adresă OnionShare poate încărca fișiere pe computerul dvs. folosind Tor Browser: ", "gui_url_label_persistent": "Această partajare nu se va opri automat.

    Fiecare acțiune ulterioară reutilizează adresa. (Pentru a utiliza adrese unice, dezactivați „Utilizați adresa persistentă” din setări.)", "gui_url_label_stay_open": "Această partajare nu se va opri automat.", "gui_url_label_onetime": "Această partajare se va opri după prima finalizare.", "gui_url_label_onetime_and_persistent": "Această partajare nu se va opri automat.

    Fiecare acțiune ulterioară va reutiliza adresa. (Pentru a utiliza adrese unice, dezactivați „Utilizați adresa persistentă” din setări.)", "gui_status_indicator_share_stopped": "Oprit", "gui_status_indicator_share_working": "Pornire…", "gui_status_indicator_share_started": "Partajare", "gui_status_indicator_receive_stopped": "Oprit", "gui_status_indicator_receive_working": "Pornire…", "gui_status_indicator_receive_started": "Primire", "gui_file_info": "{} fișiere, {}", "gui_file_info_single": "{} fișier, {}", "history_in_progress_tooltip": "{} în progres", "history_completed_tooltip": "{} complet", "gui_receive_mode_warning": "Modul de recepție permite utilizatorilor să încarce fișiere pe computerul dvs.


    Unele fișiere pot prelua controlul computerului dacă le deschideți. Deschideți doar fișierele de la persoanele de încredere sau dacă știți ce faceți. ", "systray_page_loaded_title": "Pagină încărcată", "gui_settings_language_label": "Limba preferată", "gui_settings_language_changed_notice": "Reporniți OnionShare pentru a aplica noul limbaj.", "gui_add_files": "Adaugă fișiere", "gui_add_folder": "Adaugă director", "error_cannot_create_data_dir": "Nu s-a putut crea folderul de date OnionShare: {}", "systray_page_loaded_message": "Adresa OnionShare a fost încărcată", "systray_share_started_title": "Partajarea a început", "systray_share_started_message": "Începeți să trimiteți cuiva fișiere", "systray_share_completed_title": "Partajare completă", "systray_share_completed_message": "Am terminat trimiterea fișierelor", "systray_share_canceled_title": "Partajarea a fost anulată", "systray_share_canceled_message": "Cineva a anulat primirea fișierelor", "systray_receive_started_title": "A început primirea", "systray_receive_started_message": "Cineva vă trimite fișiere", "gui_all_modes_history": "Istoric", "gui_all_modes_clear_history": "Ștergere toate", "gui_all_modes_transfer_started": "Pornit {}", "gui_all_modes_transfer_finished_range": "Transferat {} - {}", "gui_all_modes_transfer_finished": "Transferat {}", "gui_all_modes_progress_complete": "au trecut %p%, {0:s}.", "gui_all_modes_progress_starting": "{0:s}, %p% (se calculează)", "gui_all_modes_progress_eta": "{0:s}, Timp estimat: {1:s}, %p%", "gui_share_mode_no_files": "Niciun fișier trimis încă", "gui_receive_mode_no_files": "Încă nu au fost primite fișiere", "gui_all_modes_transfer_canceled_range": "Anulat {} - {}", "gui_all_modes_transfer_canceled": "Anulat {}", "gui_stop_server_autostop_timer_tooltip": "Cronometrul de oprire automată se oprește la {}", "gui_start_server_autostart_timer_tooltip": "Cronometrul de pornire automată se oprește la {}", "gui_waiting_to_start": "Programat pentru a începe în {}. Click pentru a anula.", "gui_server_autostart_timer_expired": "Ora programată a trecut deja. Vă rugăm să o reajustați pentru a începe distribuirea.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Ora de oprire automată nu poate fi aceeași sau mai devreme decât ora de pornire automată. Vă rugăm să o ajustați pentru a începe distribuirea.", "gui_status_indicator_share_scheduled": "Programat …", "gui_status_indicator_receive_scheduled": "Programat …", "gui_share_mode_autostop_timer_waiting": "Se așteaptă să se termine trimiterea", "gui_receive_mode_autostop_timer_waiting": "Se așteaptă să se termine primirea", "days_first_letter": "zi", "hours_first_letter": "ore", "minutes_first_letter": "min", "seconds_first_letter": "s", "gui_website_url_description": "Oricine are această adresă OnionShare poate vizita website-ul dvs. folosind Tor Browser: ", "gui_website_mode_no_files": "Niciun site nu a fost partajat încă", "incorrect_password": "Parolă incorectă", "history_requests_tooltip": "{} solicitări web", "gui_quit_warning_cancel": "Anulare", "moat_solution_empty_error": "Introdu caracterele din imagine", "gui_autoconnect_trying_to_connect_to_tor": "Conectare la Tor…", "gui_website_url_public_description": "Oricine are această adresă OnionShare poate vizita website-ul dvs. folosind Tor Browser: ", "gui_settings_controller_extras_label": "Setări Tor", "gui_tab_name_receive": "Primește", "moat_captcha_submit": "Trimiteți", "gui_please_wait_no_button": "Pornire…", "gui_receive_url_public_description": "Oricine are această adresă OnionShare poate încărca fișiere pe computerul dvs. folosind Tor Browser: ", "gui_status_indicator_chat_scheduled": "Programat …", "gui_settings_theme_label": "Tema aplicației", "gui_tab_name_website": "Site web", "gui_new_tab_receive_button": "Primire fișiere", "gui_settings_theme_auto": "Automat", "mode_settings_receive_data_dir_browse_button": "Răsfoiește", "gui_new_tab_share_button": "Partajare fișiere", "gui_close_tab_warning_close": "Ok", "gui_settings_bridge_moat_radio_option": "Cere o punte de la torproject.org", "gui_settings_bridge_custom_placeholder": "scrie adresă:port (una pe linie)", "mode_settings_receive_data_dir_label": "Salvare fișiere în", "gui_new_tab": "Panel nou", "gui_settings_theme_dark": "Întuneric", "gui_settings_theme_light": "Luminos", "gui_tab_name_chat": "Chat", "moat_captcha_placeholder": "Introdu caracterele din imagine", "gui_remove": "Elimină", "gui_file_selection_remove_all": "Șterge tot", "gui_tab_name_share": "Partajează", "gui_close_tab_warning_cancel": "Anulare", "gui_status_indicator_chat_working": "Pornire…", "gui_reveal": "Dezvăluie", "gui_hide": "Ascunde", "gui_settings_bridge_none_radio_option": "Nu folosiți poduri", "moat_captcha_label": "Rezolvă acest CAPTCHA pentru a cere o punte.", "moat_captcha_reload": "Reîncarcă", "gui_autoconnect_start": "Conectare la Tor", "gui_general_settings_window_title": "General", "gui_share_url_public_description": "Oricine are această adresă OnionShare poate descărca fișierele dvs. folosind Tor Browser: ", "gui_status_indicator_chat_stopped": "Oprit", "gui_autoconnect_configure": "Setări de rețea", "mode_settings_advanced_toggle_show": "Afișați setări avansate" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ru.json000066400000000000000000000724731521174352300271500ustar00rootroot00000000000000{ "gui_copied_url": "Ссылка OnionShare скопирована в буфер обмена", "other_page_loaded": "Адрес загружен", "gui_copy_url": "Копировать адрес", "systray_menu_exit": "Выйти", "gui_add": "Добавить", "gui_choose_items": "Выбрать", "gui_canceled": "Отменено", "gui_quit_warning_quit": "Выход", "gui_settings_window_title": "Настройки", "gui_settings_autoupdate_timestamp_never": "Никогда", "gui_settings_control_port_label": "Порт управления", "gui_settings_authenticate_password_option": "Пароль", "gui_settings_password_label": "Пароль", "gui_settings_button_save": "Сохранить", "gui_settings_button_cancel": "Отмена", "gui_settings_button_help": "Справка", "gui_tor_connection_ask_open_settings": "Да", "gui_tor_connection_ask_quit": "Выйти", "gui_status_indicator_share_started": "Идёт отправка", "gui_status_indicator_receive_started": "Идёт получение", "gui_settings_language_label": "Язык интерфейса", "not_a_readable_file": "{0:s} не является читаемым файлом.", "close_on_autostop_timer": "Время ожидания таймера истекло, сервис остановлен", "closing_automatically": "Загрузка завершена, сервис остановлен", "large_filesize": "Внимание: Отправка данных большого объёма может занять продолжительное время (несколько часов)", "gui_drag_and_drop": "Перетащите сюда файлы и/или папки, которые хотите отправить", "gui_share_start_server": "Сделать доступным для скачивания", "gui_share_stop_server": "Прекратить доступ к скачиванию", "gui_share_stop_server_autostop_timer": "Отменить доступ к скачиванию ({})", "gui_receive_start_server": "Включить режим получения", "gui_receive_stop_server": "Выключить режим получения", "gui_receive_stop_server_autostop_timer": "До выключения режима получения осталось {}", "gui_copied_url_title": "Адрес OnionShare скопирован", "gui_please_wait": "Запуск… Нажмите, чтобы отменить.", "zip_progress_bar_format": "Сжатие: %p%", "gui_settings_autoupdate_label": "Проверить наличие новой версии", "gui_settings_autoupdate_option": "Уведомить меня, когда будет доступна новая версия", "gui_settings_autoupdate_timestamp": "Последняя проверка: {}", "gui_settings_autoupdate_check_button": "Проверить наличие новой версии", "gui_settings_connection_type_label": "Как OnionShare следует подключаться к сети Tor?", "gui_settings_connection_type_bundled_option": "Использовать версию Tor, встроенную в OnionShare", "gui_settings_connection_type_automatic_option": "Автоматическая настройка при помощи Tor Browser", "gui_settings_connection_type_control_port_option": "Использовать порт управления", "gui_settings_connection_type_socket_file_option": "Использовать сокет-файл", "gui_settings_connection_type_test_button": "Проверить подключение к сети Tor", "gui_settings_socket_file_label": "Сокет-файл", "gui_settings_socks_label": "Порт SOCKS", "gui_settings_authenticate_no_auth_option": "Без аутентификации, либо по cookie", "gui_settings_tor_bridges": "Использовать \"мост\" Tor?", "gui_settings_meek_lite_expensive_warning": "Внимание: использование мостов meek-azure очень затратно для Tor Project.

    Используйте их только если не можете подключиться к сети Tor напрямую, через obfs4, или другие обычные мосты.", "gui_settings_tor_bridges_invalid": "Ни один из добавленных вами мостов не работает. Проверьте их снова или добавьте другие.", "settings_error_unknown": "Невозможно подключиться к Tor-контроллеру из-за некорректных настроек.", "settings_error_automatic": "Ошибка подключения к Tor-контроллеру. Запущен ли Tor Browser (torproject.org) в фоновом режиме?", "settings_error_socket_port": "Ошибка подключения к контроллеру Tor в {}:{}.", "settings_error_socket_file": "Ошибка подключения к Tor-контроллеру с использованием сокет-файла {}.", "settings_error_auth": "Подключено к {}:{}, ошибка проверки подлинности. Возможно, это не Tor-контроллер?", "settings_error_missing_password": "Подключено к Tor-контроллеру, но он просит пароль для аутентификации.", "settings_error_unreadable_cookie_file": "Подключено к Tor-контроллеру, но пароль не подошёл, или пользователю запрещено чтение файла с cookie.", "settings_error_bundled_tor_not_supported": "Версия Tor, которая поставляется вместе с OnionShare, не подходит для разработки под Windows и macOS.", "settings_error_bundled_tor_timeout": "Подключение к Tor занимает слишком много времени. Возможно, отсутствует подключение к сети Интернет, или у вас неточно настроено системное время?", "settings_error_bundled_tor_broken": "Ошибка подключения OnionShare к Tor в фоновом режиме:\n{}", "settings_test_success": "Подключено к контроллеру Tor.\n\nВерсия Tor: {}\nПоддержка временных \"луковых\" сервисов: {}.\nПоддержка аутентификации клиента: {}.\nПоддержка адресов .onion следующего поколения: {}.", "error_tor_protocol_error": "Tor выдал ошибку: {}", "connecting_to_tor": "Подключение к сети Tor", "update_available": "Вышла новая версия OnionShare. Для загрузки нажмите сюда.

    Вы используется версию {}, последняя версия – {}.", "update_error_check_error": "Ошибка проверки новой версии: возможно Вы не подключены к сети Тор, или сайт OnionShare не доступен?", "update_error_invalid_latest_version": "Ошибка проверки наличия новой версии: сайт OnionShare сообщает что новейшая версия не распознана - '{}'…", "update_not_available": "Вы используете последнюю версию OnionShare.", "gui_tor_connection_ask": "Перейти в раздел \"Настройки\" для решения проблем с подключением к Tor?", "gui_tor_connection_error_settings": "Попробуйте изменить способ подключения OnionShare к сети Tor в разделе \"Настройки\".", "gui_tor_connection_canceled": "Ошибка подключения к Tor.\n\nПожалуйста, убедитесь, что вы подключены к сети Интернет. Откройте OnionShare снова и настройте подключение к Tor.", "gui_tor_connection_lost": "Сеть Tor не подключена.", "gui_server_started_after_autostop_timer": "Время стоп-таймера истекло до того, как сервер был запущен. Пожалуйста, отправьте файлы заново.", "gui_server_autostop_timer_expired": "Время стоп-таймера истекло. Пожалуйста, отрегулируйте его для начала отправки.", "gui_share_url_description": "Кто угодно c этим адресом OnionShare и секретным ключом может скачать Ваши файлы при помощи Tor Browser: ", "gui_receive_url_description": "Кто угодно c этим адресом OnionShare и секретным ключом может загрузить файлы на ваш компьютер с помощьюTor Browser: ", "gui_url_label_persistent": "Эта доля не будет автостопом.

    Каждая последующая доля повторно использует адрес. (Для использования одноразовых адресов выключите «Всегда открывайте эту вкладку, когда OnionShare запущен» в настройках.)", "gui_url_label_stay_open": "Эта отправка не будет остановлена автоматически.", "gui_url_label_onetime": "Эта отправка будет завершена автоматически после первой загрузки.", "gui_url_label_onetime_and_persistent": "Эта доля не будет автоматически останавливаться.

    Каждая последующая доля будет повторно использовать адрес. (Для использования одноразовых адресов выключите «Всегда открывайте эту вкладку, когда OnionShare запущен» в настройках.)", "gui_status_indicator_share_stopped": "Остановлено", "gui_status_indicator_share_working": "Запуск…", "gui_status_indicator_receive_stopped": "Остановлено", "gui_status_indicator_receive_working": "Запуск…", "gui_file_info": "{} файлы, {}", "gui_file_info_single": "{} файл, {}", "history_in_progress_tooltip": "{} в ходе выполнения", "history_completed_tooltip": "{} завершено", "gui_receive_mode_warning": "Режим получения файлов позволяет другим людям загружать файлы на ваш компьютер.

    Некоторые файлы могут представлять угрозу для вашего компьютера. Открывайте файлы от тех людей, которым доверяете, или если вы точно знаете, что делаете.", "systray_page_loaded_title": "Страница загружена", "gui_settings_language_changed_notice": "Язык будет изменён после перезапуска OnionShare.", "gui_add_files": "Добавить файлы", "gui_add_folder": "Добавить папку", "error_cannot_create_data_dir": "Не удалось создать папку данных OnionShare: {}", "systray_page_loaded_message": "Адрес OnionShare загружен", "systray_share_started_title": "Отправка началась", "systray_share_started_message": "Началась отправка файлов", "systray_share_completed_title": "Отправка завершена", "systray_share_completed_message": "Завершена отправка файлов", "systray_share_canceled_title": "Отправка отменена", "systray_share_canceled_message": "Кто-то отменил получение ваших файлов", "systray_receive_started_title": "Загрузка началась", "systray_receive_started_message": "Кто-то отправляет вам файлы", "gui_all_modes_history": "История", "gui_all_modes_clear_history": "Очистить историю полностью", "gui_all_modes_transfer_started": "Начато {}", "gui_all_modes_transfer_finished_range": "Отправлено {} - {}", "gui_all_modes_transfer_finished": "Отправлено {}", "gui_all_modes_transfer_canceled_range": "Отменено {} - {}", "gui_all_modes_transfer_canceled": "Отменено {}", "gui_all_modes_progress_complete": "%p%, {0:s} прошло.", "gui_all_modes_progress_starting": "{0:s}, %p% (вычисляем)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Пока нет отправленных файлов", "gui_share_mode_autostop_timer_waiting": "Завершаем отправку…", "gui_receive_mode_no_files": "Пока нет полученных файлов", "gui_receive_mode_autostop_timer_waiting": "Завершаем скачивание…", "gui_stop_server_autostop_timer_tooltip": "Время окончания стоп-таймера: {}", "gui_start_server_autostart_timer_tooltip": "Время окончания старт-таймера: {}", "gui_waiting_to_start": "Начинаем через {}. Нажмите, чтобы отменить.", "gui_server_autostart_timer_expired": "Запланированное время уже прошло. Пожалуйста, отрегулируйте его для начала отправки.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Время окончания не может быть раньше времени начала. Пожалуйста, отрегулируйте его для начала отправки.", "gui_status_indicator_share_scheduled": "По расписанию…", "gui_status_indicator_receive_scheduled": "По расписанию…", "days_first_letter": "д", "hours_first_letter": "ч", "minutes_first_letter": "м", "seconds_first_letter": "с", "gui_website_url_description": "Любой у кого есть этот адрес OnionShare и секретный ключ может посетить ваш сайт при помощи Tor Browser: ", "gui_website_mode_no_files": "Нет опубликованных веб-сайтов", "incorrect_password": "Неверный пароль", "history_requests_tooltip": "{} веб-запросы", "gui_main_page_share_button": "Сделать доступным для скачивания", "gui_close_tab_warning_title": "Закрыть вкладку?", "mode_settings_website_disable_csp_checkbox": "Не посылать стандартный заголовок Content Security Policy (разрешить вашему веб-сайту использовать сторонние ресурсы)", "mode_settings_receive_data_dir_browse_button": "Обзор файлов", "mode_settings_receive_data_dir_label": "Сохранять файлы в", "mode_settings_share_autostop_sharing_checkbox": "Закрыть доступ к файлам после их отправки (отмените чтобы разрешить скачивание отдельных файлов)", "mode_settings_autostop_timer_checkbox": "Отключить onion-сервис в назначенное время", "mode_settings_autostart_timer_checkbox": "Запустить onion-сервис в назначенное время", "mode_settings_public_checkbox": "Это публичная версия сервиса OnionShare (секретный ключ не используется)", "mode_settings_persistent_checkbox": "Всегда откройте эту вкладку при запуске OnionShare (адрес Onion останется прежним)", "mode_settings_advanced_toggle_hide": "Спрятать дополнительные настройки", "mode_settings_advanced_toggle_show": "Показать дополнительные настройки", "gui_quit_warning_cancel": "Отменить", "gui_quit_warning_description": "Выйти и закрыть все вкладки, несмотря на то, что в некоторых из них раздаются файлы?", "gui_quit_warning_title": "Закрыть OnionShare?", "gui_close_tab_warning_cancel": "Отменить", "gui_close_tab_warning_close": "Ок", "gui_close_tab_warning_website_description": "Закрыть вкладку, размещающую сайт?", "gui_close_tab_warning_receive_description": "Закрыть вкладку, на которой принимаются файлы?", "gui_close_tab_warning_share_description": "Закрыть вкладку, отправляющую файлы?", "gui_close_tab_warning_persistent_description": "Закрыть постоянную вкладку и утратить onion адрес, используемый ей?", "gui_tab_name_chat": "Чат", "gui_tab_name_website": "Веб-сайт", "gui_tab_name_receive": "Скачать", "gui_tab_name_share": "Поделиться", "gui_main_page_chat_button": "Начать чат", "gui_main_page_website_button": "Запустить веб сайт", "gui_main_page_receive_button": "Начать скачивание", "gui_new_tab_chat_button": "Начать анонимный чат", "gui_new_tab_website_button": "Поднять веб-сайт", "gui_new_tab_receive_button": "Получить файлы", "gui_new_tab_share_button": "Поделиться файлами", "gui_new_tab_tooltip": "Открыть новую вкладку", "gui_new_tab": "Новая вкладка", "gui_open_folder_error": "Ошибка при попытке открыть папку с помощью xdg-open. Файл находится здесь: {}", "gui_qr_code_dialog_title": "QR-код OnionShare", "gui_show_qr_code": "Показать QR-код", "gui_receive_flatpak_data_dir": "Так как OnionShare установлен с помощью Flatpak, вы должны сохранять файлы в папке ~/OnionShare.", "gui_chat_stop_server": "Остановить чат-сервер", "gui_chat_start_server": "Запустить чат-сервер", "gui_file_selection_remove_all": "Убрать все", "gui_remove": "Убрать", "error_port_not_available": "Порт OnionShare не доступен", "gui_rendezvous_cleanup_quit_early": "Выйти раньше", "gui_rendezvous_cleanup": "Ожидается завершение соединений с сетью Tor для подтверждения отправки ваших файлов.\n\nЭто может занять несколько минут.", "gui_color_mode_changed_notice": "Тема будет изменена после перезапуска OnionShare.", "gui_chat_url_description": "Каждый у кого есть этот адрес OnionShare и секретный ключ может присоединиться к этому чату при помощи Tor Browser: ", "history_receive_read_message_button": "Прочитать сообщение", "mode_settings_receive_webhook_url_checkbox": "Использовать веб-хук для отправки уведомлений", "mode_settings_receive_disable_files_checkbox": "Запретить передачу файлов", "mode_settings_receive_disable_text_checkbox": "Запретить отправку текста", "mode_settings_title_label": "Собственное название", "gui_status_indicator_chat_started": "Чат активен", "gui_status_indicator_chat_scheduled": "По расписанию…", "gui_status_indicator_chat_working": "Запуск…", "gui_status_indicator_chat_stopped": "Остановлено", "gui_settings_theme_dark": "Тёмная", "gui_settings_theme_light": "Светлая", "gui_settings_theme_auto": "Авто", "gui_settings_theme_label": "Тема", "gui_client_auth_instructions": "Затем, отправьте секретный ключ, необходимый для доступа к вашему сервису OnionShare:", "gui_url_instructions_public_mode": "Отправьте адрес OnionShare, показанный ниже:", "gui_url_instructions": "Сначала, отправьте адрес OnionShare, показанный ниже:", "gui_chat_url_public_description": "Каждый у кого есть этот адрес OnionShare может присоединиться к этому чату при помощи Tor Browser: ", "gui_receive_url_public_description": "Кто угодно c этим адресом OnionShare ключом может загрузить файлы на ваш компьютер с помощьюTor Browser: ", "gui_website_url_public_description": "Любой у кого есть этот адрес OnionShare может посетить ваш сайт при помощи Tor Browser: ", "gui_share_url_public_description": "Кто угодно c этим адресом OnionShare может скачать Ваши файлы при помощи Tor Browser: ", "gui_server_doesnt_support_stealth": "Приносим свои извинения, текущая версия Tor не поддерживает режим \"stealth\" (аутентификация клиента). Пожалуйста, попробуйте обновить версию Tor, или используйте 'публичный' режим, если у вас нет необходимости использовать 'секретный' режим.", "gui_please_wait_no_button": "Запуск…", "gui_hide": "Скрыть", "gui_reveal": "Показать", "gui_qr_label_auth_string_title": "Секретный ключ", "gui_qr_label_url_title": "Адрес OnionShare", "gui_copied_client_auth": "Секретный ключ скопирован в буфер обмена", "gui_copied_client_auth_title": "Секретный ключ скопирован", "gui_copy_client_auth": "Копировать секретный ключ", "gui_dragdrop_sandbox_flatpak": "Для обеспечения дополнительной безопасности, функция \"drag and drop\" не поддерживается песочницей Flatpak. Вместо этого используйте кнопки \"Добавить файлы\" и \"Добавить папку\".", "gui_tor_settings_window_title": "Настройки Tor", "gui_settings_controller_extras_label": "Настройки Tor", "gui_settings_tor_bridges_label": "Мосты позволяют подключаться к сети Tor из мест, где её использование заблокировано. Какой мост лучше выбрать, зависит от того, откуда вы подключаетесь.", "gui_settings_bridge_use_checkbox": "Использовать мост", "gui_settings_bridge_radio_builtin": "Выбрать встроенный мост", "gui_settings_bridge_none_radio_option": "Не использовать мосты", "gui_settings_bridge_moat_radio_option": "Запросить мост с сайта torproject.org", "gui_settings_bridge_moat_button": "Запросить новый мост", "gui_settings_bridge_custom_radio_option": "Подключить мост, полученный у доверенного источника", "gui_settings_bridge_custom_placeholder": "в формате адрес:порт (по одному на строку)", "gui_settings_moat_bridges_invalid": "Вы ещё не запрашивали мост с сайта torproject.org.", "gui_settings_stop_active_tabs_label": "На некоторых из ваших вкладок запущены сервисы.\nНеобходимо остановить все сервисы, чтобы изменить настройки Tor.", "gui_settings_version_label": "Вы используете OnionShare {}", "gui_settings_help_label": "Нужна помощь? Вам сюда: docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Отправлять самостоятельно настроенный заголовок Content Security Policy", "moat_contact_label": "Подключаемся к BridgeDB…", "moat_captcha_label": "Решите капчу, чтобы получить мост.", "moat_captcha_placeholder": "Введите символы с картинки", "moat_captcha_submit": "Отправить", "moat_captcha_reload": "Запросить новую", "moat_bridgedb_error": "Не удалось подключиться к BridgeDB.", "moat_captcha_error": "Вы ввели неверный ответ. Пожалуйста, попробуйте ещё раз.", "moat_solution_empty_error": "Введите символы с картинки", "mode_tor_not_connected_label": "OnionShare не подключен к сети Tor", "gui_autoconnect_description": "OnionShare работает благодаря сети Tor, которую поддерживают волонтёры по всему свету.", "gui_autoconnect_connection_error_msg": "Убедитесь, что вы подключены к Интернету.", "gui_autoconnect_bridge_description": "Если ваше Интернет-соединение подвергнуто цензуре, можно попробовать подключиться через мост.", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Запрашиваем мосты через API обхода цензуры Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "Не удалось подключиться к API Tor. Проверьте, подключены ли вы к интернету.", "gui_enable_autoconnect_checkbox": "Автоматически подключаться к Tor", "gui_autoconnect_failed_to_connect_to_tor": "Не удалось подключиться к Tor", "gui_autoconnect_trying_to_connect_to_tor": "Подключаемся к Тор…", "gui_autoconnect_bridge_detect_automatic": "Определить мою страну по IP-адресу, чтобы настроить мост", "gui_autoconnect_bridge_detect_manual": "Выбрать страну вручную, чтобы настроить мост", "gui_autoconnect_circumventing_censorship": "Устраняем проблемы с подключением…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Обходим цензуру…", "gui_autoconnect_circumventing_censorship_got_bridges": "Мосты получены. Переподключаемся к Tor…", "gui_autoconnect_bridge_setting_options": "Настройки моста", "gui_autoconnect_start": "Подключиться к Tor", "gui_autoconnect_configure": "Настройки сети", "gui_autoconnect_no_bridge": "Попробовать подключиться без моста ещё раз", "gui_autoconnect_try_again_without_a_bridge": "Попробовать подключиться без моста ещё раз", "gui_autoconnect_circumventing_censorship_starting_meek": "Подключаемся к мосту meek…", "gui_general_settings_window_title": "Общие", "waitress_web_server_error": "Возникла проблема с запуском веб-сервера", "gui_close_tab_warning_chat_description": "Закрыть вкладку, на которой размещен сервер чата?", "gui_chat_mode_explainer": "Чат-режим позволяет вам общаться в интерактивном режиме с другими, в Tor Browser.

    История Chat не хранится в OnionShare. История чата исчезнет, когда вы закроете Tor Browser.", "gui_settings_license_label": "OnionShare лицензируется по лицензии GPL v3.
    Лицензии третьих сторон можно посмотреть здесь:
    https://github.com/onionshare/onionshare/tree/main/licenses", "mode_settings_persistent_autostart_on_launch_checkbox": "Автоматически запустить этот сервис onion, когда OnionShare начинает", "error_generic": "С OnionShare произошла неожиданная ошибка:\n{}" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/si.json000066400000000000000000000035441521174352300271260ustar00rootroot00000000000000{ "gui_settings_button_save": "සුරකින්න", "gui_settings_button_cancel": "අවලංගු", "gui_settings_button_help": "උපකාර", "gui_tor_connection_ask_quit": "ඉවත් වන්න", "gui_all_modes_history": "ඉතිහාසය", "gui_quit_warning_cancel": "අවලංගු", "moat_captcha_reload": "යලි පුරන්න", "gui_settings_theme_label": "තේමාව", "gui_remove": "ඉවත්", "gui_settings_bridge_custom_placeholder": "type address:port (one per line)", "mode_settings_receive_data_dir_browse_button": "පිරික්සන්න", "gui_settings_autoupdate_timestamp_never": "කිසිදා නැත", "gui_close_tab_warning_cancel": "අවලංගු", "gui_quit_warning_quit": "ඉවත් වන්න", "gui_settings_authenticate_password_option": "මුරපදය", "gui_add": "එකතු", "gui_hide": "සඟවන්න", "gui_settings_window_title": "සැකසුම්", "gui_general_settings_window_title": "ප්‍රධාන", "gui_settings_password_label": "මුරපදය", "gui_tor_connection_ask_open_settings": "ඔව්", "gui_settings_language_label": "භාෂාව", "gui_settings_theme_light": "දීප්ත", "gui_settings_theme_dark": "අඳුරු", "systray_menu_exit": "ඉවත් වන්න", "gui_tab_name_share": "බෙදාගන්න", "gui_tab_name_website": "වෙබ් අඩවිය", "gui_tab_name_chat": "කතාබහ", "moat_captcha_submit": "Submit", "gui_close_tab_warning_close": "හරි", "gui_status_indicator_receive_stopped": "නවත්වා ඇත", "gui_status_indicator_chat_stopped": "නවත්වා ඇත", "gui_status_indicator_share_stopped": "නවත්වා ඇත" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/sk.json000066400000000000000000000542711521174352300271330ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} nie je čitateľný súbor.", "other_page_loaded": "Načítaná adresa", "incorrect_password": "Nesprávne heslo", "close_on_autostop_timer": "Zastavené, pretože časovač automatického zastavenia vypršal", "closing_automatically": "Zastavené, pretože prenos je dokončený", "large_filesize": "Upozornenie: Odosielanie veľkých súborov môže trvať hodiny", "gui_drag_and_drop": "Presuňte a pustite súbory a priečinky, ktoré chcete zdieľať", "gui_add": "Pridať", "gui_add_files": "Pridať súbory", "gui_add_folder": "Pridať priečinok", "gui_remove": "Odstrániť", "gui_file_selection_remove_all": "Odstrániť všetko", "gui_choose_items": "Vybrať", "gui_share_start_server": "Spustiť zdieľanie", "gui_share_stop_server": "Zastaviť zdieľanie", "gui_share_stop_server_autostop_timer": "Zastaviť zdieľanie ({})", "gui_chat_start_server": "Spustiť diskusný server", "gui_chat_stop_server": "Zastaviť diskusný server", "gui_stop_server_autostop_timer_tooltip": "Časovač automatického zastavenia končí o {}", "gui_start_server_autostart_timer_tooltip": "Časovač automatického spustenia končí o {}", "gui_receive_start_server": "Spustiť režim prijímania", "gui_receive_stop_server": "Zastaviť režim prijímania", "gui_receive_stop_server_autostop_timer": "Zastaviť režim prijímania (zostáva {})", "gui_receive_flatpak_data_dir": "Pretože ste nainštalovali OnionShare pomocou Flatpak, musíte uložiť súbory do priečinka v ~/OnionShare.", "gui_copy_url": "Kopírovať adresu", "gui_canceled": "Zrušené", "gui_copied_url_title": "Adresa OnionShare skopírovaná", "gui_copied_url": "OnionShare adresa bola skopírovaná do schránky", "gui_show_qr_code": "Zobraziť QR kód", "gui_qr_code_dialog_title": "OnionShare QR kód", "gui_waiting_to_start": "Naplánované spustenie o {}. Kliknutím zrušíte.", "gui_please_wait": "Spúšťa sa... Kliknutím zrušíte.", "zip_progress_bar_format": "Komprimovanie: %p%", "gui_settings_window_title": "Nastavenia", "gui_settings_autoupdate_label": "Skontrolovať novú verziu", "gui_settings_autoupdate_option": "Upozorniť ma, keď bude k dispozícii nová verzia", "gui_settings_autoupdate_timestamp": "Naposledy skontrolované: {}", "gui_settings_autoupdate_timestamp_never": "Nikdy", "gui_settings_autoupdate_check_button": "Skontrolovať novú verziu", "gui_settings_connection_type_label": "Ako by sa mal OnionShare pripojiť k Tor?", "gui_settings_connection_type_bundled_option": "Použiť verziu Tor zabudovanú do OnionShare", "gui_settings_connection_type_automatic_option": "Pokúsiť sa o automatickú konfiguráciu s prehliadačom Tor", "gui_settings_connection_type_control_port_option": "Pripojiť pomocou riadiaceho portu", "gui_settings_connection_type_socket_file_option": "Pripojiť pomocou socket súboru", "gui_settings_connection_type_test_button": "Test pripojenia k Tor", "gui_settings_control_port_label": "Riadiaci port", "gui_settings_socket_file_label": "Socket súbor", "gui_settings_socks_label": "SOCKS port", "gui_settings_authenticate_no_auth_option": "Žiadne overenie alebo overenie pomocou súborov cookie", "gui_settings_authenticate_password_option": "Heslo", "gui_settings_password_label": "Heslo", "gui_settings_tor_bridges": "Pripojiť sa pomocou premostenia Tor?", "gui_settings_meek_lite_expensive_warning": "Upozornenie: Prevádzka premostení meek-azure je pre projekt Tor veľmi nákladná.

    Používajte ich len vtedy, ak sa nemôžete pripojiť k Toru priamo, cez obfs4 transporty alebo iné cez bežné premostenia.", "gui_settings_tor_bridges_invalid": "Ani jeden z premostení, ktoré ste pridali, nefunguje. Prekontrolujte ich alebo pridajte iné.", "gui_settings_button_save": "Uložiť", "gui_settings_button_cancel": "Zrušiť", "gui_settings_button_help": "Pomoc", "settings_test_success": "Pripojený k ovládaču Tor.\n\nTor verzia : {}\nPodporuje dočasné onion služby: {}.\nPodporuje overenie klienta: {}.\nPodporuje adresy .onion ďalšej generácie: {}.", "connecting_to_tor": "Pripája sa k sieti Tor", "update_available": "Nová verzia OnionShare. Kliknite sem aby ste ju stiahli.

    Používate {} a najnovšia je {}.", "update_error_invalid_latest_version": "Nepodarilo sa skontrolovať novú verziu: Web OnionShare hovorí, že najnovšia verzia je na nerozpoznateľná '{}'…", "update_error_check_error": "Nemôžete skontrolovať novú verziu: Možno nie ste pripojení k Tor, alebo je web OnionShare nefunkčný?", "update_not_available": "Používate najnovšiu verziu OnionShare.", "gui_tor_connection_ask": "Otvoriť nastavenia spojenia s Tor?", "gui_tor_connection_ask_open_settings": "Áno", "gui_tor_connection_ask_quit": "Ukončiť", "gui_tor_connection_error_settings": "Skúste zmeniť spôsob pripojenia OnionShare k sieti Tor v nastaveniach.", "gui_tor_connection_canceled": "Nepodarilo sa pripojiť k Tor.\n\nUistite sa, že ste pripojení na Internet, potom znova otvorte OnionShare a nastavte jeho pripojenie k Tor.", "gui_tor_connection_lost": "Odpojený od Tor.", "gui_server_started_after_autostop_timer": "Časovač automatického zastavenia vypršal pred spustením servera. Vytvorte nové zdieľanie.", "gui_server_autostop_timer_expired": "Časovač automatického zastavenia už vypršal. Upravte ho tak, aby sa začal zdieľať.", "gui_server_autostart_timer_expired": "Plánovaný čas už uplynul. Upravte ho tak, aby sa začal zdieľať.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Čas automatického zastavenia nemôže byť rovnaký alebo skorší ako čas automatického spustenia. Upravte ho, aby ste mohli začať zdieľať.", "gui_share_url_description": "Ktokoľvek s touto adresou OnionShare si môže stiahnuť vaše súbory pomocou Tor Browser: ", "gui_website_url_description": "Ktokoľvek s touto adresou OnionShare môže navštíviť váš web pomocou Tor Browser: ", "gui_receive_url_description": "Ktokoľvek s touto adresou OnionShare môže nahrať súbory do vášho počítača pomocou Tor Browser: ", "gui_url_label_persistent": "Toto zdieľanie sa nezastaví automaticky.

    Každé ďalšie zdieľanie znova použije tú istú adresu. (Ak chcete použiť jednorazové adresy, vypnite v nastaveniach možnosť „Vždy otvoriť túto kartu pri spustení aplikácie OnionShare“.)", "gui_url_label_stay_open": "Toto zdieľanie sa automaticky nezastaví.", "gui_url_label_onetime": "Toto zdieľanie sa zastaví po prvom dokončení.", "gui_url_label_onetime_and_persistent": "Toto zdieľanie sa nezastaví automaticky.

    Každé ďalšie zdieľanie znova použije tu istú adresu. (Ak chcete použiť jednorazové adresy, vypnite v nastaveniach možnosť „Vždy otvoriť túto kartu pri spustení aplikácie OnionShare“.)", "gui_status_indicator_share_stopped": "Zastavený", "gui_status_indicator_share_working": "Spúšťa sa…", "gui_status_indicator_share_scheduled": "Naplánované…", "gui_status_indicator_share_started": "Zdieľa sa", "gui_status_indicator_receive_stopped": "Zastavený", "gui_status_indicator_receive_working": "Spúšťa sa…", "gui_status_indicator_receive_scheduled": "Naplánované…", "gui_status_indicator_receive_started": "Prijíma sa", "gui_file_info": "{} súbory, {}", "gui_file_info_single": "{} súbor, {}", "history_in_progress_tooltip": "{} prebieha", "history_completed_tooltip": "{} dokončené", "history_requests_tooltip": "{} webové požiadavky", "error_cannot_create_data_dir": "Nepodarilo sa vytvoriť dátový priečinok OnionShare: {}", "gui_receive_mode_warning": "Režim prijímania umožňuje ľuďom odosielať súbory do vášho počítača.

    Niektoré súbory môžu potenciálne prevziať kontrolu nad vaším počítačom, ak ich otvoríte. Otvárajte iba súbory od ľudí, ktorým dôverujete, alebo ak viete, čo robíte.", "gui_open_folder_error": "Nepodarilo sa otvoriť priečinok s xdg-open. Súbor je tu: {}", "gui_settings_language_label": "Jazyk", "gui_settings_language_changed_notice": "Reštartujte OnionShare, aby sa zmenil na nový jazyk.", "systray_menu_exit": "Ukončiť", "systray_page_loaded_title": "Stránka bola načítaná", "systray_page_loaded_message": "Adresa OnionShare načítaná", "systray_share_started_title": "Zdieľanie sa začalo", "systray_share_started_message": "Začínam niekomu odosielať súbory", "systray_share_completed_title": "Zdieľanie dokončené", "systray_share_completed_message": "Odosielanie súborov bolo dokončené", "systray_share_canceled_title": "Zdieľanie bolo zrušené", "systray_share_canceled_message": "Niekto zrušil prijímanie vašich súborov", "systray_receive_started_title": "Prijímanie začalo", "systray_receive_started_message": "Niekto vám posiela súbory", "gui_all_modes_history": "História", "gui_all_modes_clear_history": "Vymazať všetko", "gui_all_modes_transfer_started": "Spustené {}", "gui_all_modes_progress_complete": "%p%, {0:s} uplynulo.", "gui_all_modes_progress_starting": "{0:s}, %p% (výpočet)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Zatiaľ neboli odoslané žiadne súbory", "gui_share_mode_autostop_timer_waiting": "Ukončovanie odosielania…", "gui_website_mode_no_files": "Zatiaľ nie je zdieľaný žiadny web", "gui_receive_mode_no_files": "Zatiaľ neboli prijaté žiadne súbory", "gui_receive_mode_autostop_timer_waiting": "Ukončovanie prijímania…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_new_tab": "Nová karta", "gui_new_tab_tooltip": "Otvoriť novú kartu", "gui_new_tab_share_button": "Zdieľať súbory", "gui_new_tab_receive_button": "Prijímanie súborov", "gui_new_tab_website_button": "Hosťovanie webu", "gui_new_tab_chat_button": "Diskutujte anonymne", "gui_main_page_share_button": "Spustiť zdieľanie", "gui_main_page_receive_button": "Spustiť prijímanie", "gui_main_page_website_button": "Spustiť hosťovanie", "gui_main_page_chat_button": "Začať diskusiu", "gui_tab_name_share": "Zdieľať", "gui_tab_name_receive": "Prijať", "gui_tab_name_website": "Webstránka", "gui_tab_name_chat": "Diskusia", "gui_close_tab_warning_title": "Zatvoriť kartu?", "gui_close_tab_warning_persistent_description": "Zavrieť trvalú kartu a stratiť onion adresu, ktorú používa?", "gui_close_tab_warning_share_description": "Zatvoriť kartu, ktorá odosiela súbory?", "gui_close_tab_warning_receive_description": "Zatvoriť kartu, ktorá prijíma súbory?", "gui_close_tab_warning_website_description": "Zatvoriť kartu, ktorá je hostiteľom webovej stránky?", "gui_close_tab_warning_close": "OK", "gui_close_tab_warning_cancel": "Zrušiť", "gui_quit_warning_title": "Ukončiť OnionShare?", "gui_quit_warning_description": "Ukončiť a zatvoriť všetky karty, aj keď je zdieľanie v niektorých z nich aktívne?", "gui_quit_warning_quit": "Ukončiť", "gui_quit_warning_cancel": "Zrušiť", "mode_settings_advanced_toggle_show": "Zobraziť rozšírené nastavenia", "mode_settings_advanced_toggle_hide": "Skryť rozšírené nastavenia", "mode_settings_persistent_checkbox": "Vždy otvoriť túto kartu pri spustení služby OnionShare (adresa onion zostane rovnaká)", "mode_settings_public_checkbox": "Toto je verejná služba OnionShare ( vypne súkromný kľúč)", "mode_settings_autostart_timer_checkbox": "Spustiť onion službu v plánovanom čase", "mode_settings_autostop_timer_checkbox": "Zastaviť onion službu v plánovanom čase", "mode_settings_share_autostop_sharing_checkbox": "Po odoslaní súborov zastaviť zdieľanie (zrušením označenia povolíte sťahovanie jednotlivých súborov)", "mode_settings_receive_data_dir_label": "Uložiť súbory do", "mode_settings_receive_data_dir_browse_button": "Prechádzať", "mode_settings_website_disable_csp_checkbox": "Neposielať hlavičku politiky zabezpečenia obsahu (umožňuje vašej webovej lokalite používať zdroje tretích strán)", "gui_all_modes_transfer_finished_range": "Prenesené {} - {}", "gui_all_modes_transfer_finished": "Prenesené {}", "gui_all_modes_transfer_canceled_range": "Zrušené {} - {}", "gui_all_modes_transfer_canceled": "Zrušené {}", "error_port_not_available": "Port OnionShare nie je k dispozícii", "gui_rendezvous_cleanup_quit_early": "Ukončiť predčasne", "gui_rendezvous_cleanup": "Pre istotu sa čaká na uzavretie okruhov Tor, aby sa vaše súbory preniesli.\n\nTo môže trvať niekoľko minút.", "settings_error_bundled_tor_broken": "OnionShare sa nemohol pripojiť k Tor:\n{}", "settings_error_bundled_tor_timeout": "Pripojenie k Tor trvá príliš dlho. Možno nie ste pripojení na internet alebo máte nepresné systémové hodiny?", "settings_error_bundled_tor_not_supported": "Použitie verzie Tor, ktorá je dodávaná s OnionShare nefunguje v režime vývojára v systéme Windows alebo macOS.", "settings_error_unreadable_cookie_file": "Pripojené k ovládaču Tor, ale heslo môže byť nesprávne, alebo váš používateľ nemá povolenie na čítanie súboru cookie.", "settings_error_missing_password": "Pripojené k ovládaču Tor, ale je potrebné heslo na overenie.", "settings_error_auth": "Pripojené k {}:{}, ale nedá sa overiť. Možno to nie je ovládač Tor?", "settings_error_socket_file": "Nedá sa pripojiť k ovládaču Tor pomocou socket súboru {}.", "settings_error_socket_port": "Nedá sa pripojiť k ovládaču Tor na {}:{}.", "settings_error_automatic": "Nepodarilo sa pripojiť k ovládaču Tor. Je prehliadač Tor (dostupný na torproject.org) spustený na pozadí?", "settings_error_unknown": "Nemôžem sa pripojiť k ovládaču Tor, pretože vaše nastavenia nedávajú zmysel.", "gui_chat_url_description": "Ktokoľvek s touto adresou OnionShare sa môže pripojiť k tejto diskusnej miestnosti pomocou prehliadača Tor Browser: ", "gui_settings_theme_label": "Téma", "gui_settings_theme_auto": "Automatická", "gui_settings_theme_light": "Svetlá", "gui_please_wait_no_button": "Spúšťa sa…", "gui_share_url_public_description": "Ktokoľvek s touto adresou OnionShare si môže stiahnuť vaše súbory pomocou prehliadačaTor Browser: ", "gui_website_url_public_description": "Ktokoľvek s touto adresou OnionShare môže navštíviť vašu webstránku pomocou prehliadača Tor Browser: ", "gui_settings_bridge_custom_placeholder": "napíšte adresu:port (jedna na riadok)", "moat_captcha_label": "Vyriešte CAPTCHA a požiadajte o premostenie.", "moat_captcha_submit": "Odoslať", "gui_general_settings_window_title": "Všeobecné", "gui_status_indicator_chat_scheduled": "Naplánované…", "moat_captcha_placeholder": "Zadajte znaky z obrázka", "moat_captcha_reload": "Znovu načítať", "gui_autoconnect_start": "Pripojiť sa k Tor", "moat_solution_empty_error": "Zadajte znaky z obrázka", "gui_receive_url_public_description": "Ktokoľvek s touto adresou OnionShare môže nahrať súbory do vášho počítača pomocou prehliadača Tor Browser: ", "gui_chat_url_public_description": "Ktokoľvek s touto adresou OnionShare sa môže pripojiť k tejto diskusnej miestnosti pomocou prehliadača Tor Browser: ", "gui_reveal": "Odhaliť", "gui_settings_theme_dark": "Tmavá", "gui_hide": "Skryť", "gui_settings_bridge_none_radio_option": "Nepoužívať premostenia", "gui_settings_bridge_moat_radio_option": "Vyžiadať premostenie od torproject.org", "gui_status_indicator_chat_working": "Spúšťa sa…", "gui_settings_bridge_use_checkbox": "Použiť premostenie", "gui_autoconnect_failed_to_connect_to_tor": "Nepodarilo sa pripojiť k sieti Tor", "gui_copy_client_auth": "Kopírovať súkromný kľúč", "gui_copied_client_auth_title": "Súkromný kľúč skopírovaný", "gui_qr_label_auth_string_title": "Súkromný kľúč", "gui_qr_label_url_title": "Adresa OnionShare", "gui_autoconnect_configure": "Nastavenia siete", "gui_autoconnect_trying_to_connect_to_tor": "Pripájanie k sieti Tor…", "gui_autoconnect_connection_error_msg": "Uistite sa, že ste pripojení na internet.", "gui_copied_client_auth": "Súkromný kľúč bol skopírovaný do schránky", "gui_tor_settings_window_title": "Nastavenia Tor", "gui_enable_autoconnect_checkbox": "Automaticky sa pripájať k sieti Tor", "gui_status_indicator_chat_started": "Prebieha rozhovor", "mode_settings_receive_webhook_url_checkbox": "Použiť webový háčik s upozornením", "gui_autoconnect_bridge_detect_automatic": "Určiť moju krajinu z mojej IP adresy pre nastavenia premostenia", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Žiadosť o premostenie z API rozhrania Tor na obchádzanie cenzúry…", "gui_autoconnect_could_not_connect_to_tor_api": "Nepodarilo sa pripojiť k rozhraniu Tor API. Pred ďalším pokusom sa uistite, že ste pripojení k internetu.", "gui_status_indicator_chat_stopped": "Zastavený", "gui_chat_mode_explainer": "Režim diskusie umožňuje interaktívny rozhovor s ostatnými v prehliadači Tor.

    História diskusie sa v službe OnionShare neukladá. História diskusie zmizne po zatvorení prehliadača Tor Browser.", "mode_settings_receive_disable_files_checkbox": "Zakázať nahrávanie súborov", "waitress_web_server_error": "Nastal problém so spustením webového servera", "moat_captcha_error": "Nesprávne riešenie. Skúste to prosím znova.", "gui_autoconnect_bridge_detect_manual": "Manuálne vybrať moju krajinu pre nastavenia premostenia", "gui_settings_bridge_radio_builtin": "Vybrať zabudované premostenie", "gui_settings_controller_extras_label": "Nastavenia Tor", "gui_settings_version_label": "Používate službu OnionShare {}", "gui_autoconnect_circumventing_censorship_starting_meek": "Vytváranie premostenia meek pre službu domain-fronting…", "gui_autoconnect_description": "OnionShare sa spolieha na sieť Tor prevádzkovanú dobrovoľníkmi.", "gui_color_mode_changed_notice": "Reštartujte OnionShare, aby ste videli nové farby.", "gui_url_instructions_public_mode": "Pošlite adresu OnionShare uvedenú nižšie:", "gui_autoconnect_bridge_setting_options": "Nastavenie premostenia", "gui_settings_tor_bridges_label": "Premostenia pomáhajú vašej dátovej prevádzke vstúpiť do siete Tor, ak je prístup k sieti Tor zablokovaný. V závislosti od toho, odkiaľ sa pripájate, môže jedno premostenie fungovať lepšie ako iné.", "mode_settings_title_label": "Vlastný názov", "mode_settings_receive_disable_text_checkbox": "Zakázať odosielanie textu", "history_receive_read_message_button": "Prečítať správu", "error_tor_protocol_error": "V systéme Tor došlo k chybe: {}", "gui_server_doesnt_support_stealth": "Je nám ľúto, ale táto verzia Tor nepodporuje funkciu ukrytia (overovanie klienta). Skúste to, prosím, s novšou verziou Toru alebo použite \"verejný\" režim, ak nemusí byť súkromný.", "gui_url_instructions": "Najprv pošlite adresu OnionShare uvedenú nižšie:", "gui_dragdrop_sandbox_flatpak": "Aby bolo pieskovisko Flatpak bezpečnejšie, nie je podporovaná funkcia drag and drop. Na výber súborov namiesto toho použite tlačidlá „Pridať súbory“ a „Pridať priečinok“.", "gui_client_auth_instructions": "Potom odošlite súkromný kľúč, ktorý umožní prístup k vašej službe OnionShare:", "gui_settings_bridge_moat_button": "Požiadať o nové premostenie", "gui_settings_bridge_custom_radio_option": "Poskytnite premostenie, o ktorom ste sa dozvedeli z dôveryhodného zdroja", "gui_settings_moat_bridges_invalid": "Zatiaľ ste si nevyžiadali premostenie z torproject.org.", "gui_settings_stop_active_tabs_label": "Na niektorých kartách sú spustené služby.\nAk chcete zmeniť nastavenia Tor, musíte zastaviť všetky služby.", "gui_settings_help_label": "Potrebujete pomoc? Pozrite si stránku docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Odoslať vlastné záhlavie zásad zabezpečenia obsahu", "moat_contact_label": "Kontaktovanie BridgeDB…", "gui_autoconnect_bridge_description": "Ak je vaše internetové pripojenie cenzurované, možno sa budete môcť pripojiť pomocou premostenia.", "gui_autoconnect_no_bridge": "Skúste to znova bez premostenia", "gui_autoconnect_try_again_without_a_bridge": "Skúste to znova bez premostenia", "gui_autoconnect_circumventing_censorship": "Odstraňovanie problémov s pripojením…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Obchádzanie cenzúry…", "gui_autoconnect_circumventing_censorship_got_bridges": "Premostenie vytvorené. Opätovné pripájanie k Tor…", "gui_close_tab_warning_chat_description": "Zatvoriť kartu, ktorá je hostiteľom diskusného servera?", "moat_bridgedb_error": "Nepodarilo sa kontaktovať BridgeDB.", "mode_tor_not_connected_label": "Služba OnionShare nie je pripojená k sieti Tor", "mode_settings_persistent_autostart_on_launch_checkbox": "Automaticky spustiť túto službu Onion pri spustení služby OnionShare", "error_generic": "V aplikácii OnionShare došlo k neočakávanej chybe:\n{}", "gui_settings_license_label": "OnionShare je licencované pod GPL v3.
    Licencie tretích strán si môžete pozrieť tu:
    https://github.com/onionshare/onionshare/tree/main/licenses" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/sl.json000066400000000000000000000061561521174352300271330ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} ni mogoče prebrati.", "other_page_loaded": "Naslov naložen", "close_on_autostop_timer": "Prenehal, ker je auto-stop timer pretekel", "closing_automatically": "Prenehal, ker se je prenos končal", "large_filesize": "Opozorilo: Pošiljanje prevelikih deležel lahko traja ure", "systray_menu_exit": "Izhod", "gui_drag_and_drop": "Povleci in spusti datoteke in mape za začetek skupne rabe", "gui_add": "Dodaj", "gui_choose_items": "Izberi", "gui_share_start_server": "Začni deliti", "gui_share_stop_server": "Zaustavi deljenje", "gui_share_stop_server_autostop_timer": "Zaustavi deljenje ({})", "gui_canceled": "Odpovedan", "gui_quit_warning_quit": "Izhod", "gui_settings_autoupdate_timestamp_never": "Nikoli", "gui_settings_control_port_label": "Krmilna vrata", "gui_settings_button_help": "Pomoč", "gui_tor_connection_ask_open_settings": "Da", "gui_tor_connection_ask_quit": "Izhod", "gui_add_files": "Dodaj Datoteke", "gui_add_folder": "Dodaj Mapo", "gui_stop_server_autostop_timer_tooltip": "Samodejno zaustavi timer, ki se konča ob{}", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "incorrect_password": "Napačno geslo", "gui_settings_button_cancel": "Prekliči", "gui_settings_window_title": "Nastavitve", "gui_settings_authenticate_password_option": "Geslo", "gui_close_tab_warning_close": "V redu", "gui_tab_name_share": "Deli", "gui_settings_theme_auto": "Samodejno", "gui_file_selection_remove_all": "Odstrani vse", "gui_quit_warning_cancel": "Prekliči", "gui_hide": "Skrij", "gui_tab_name_chat": "Klepet", "gui_settings_theme_light": "Svetla", "gui_settings_button_save": "Shrani", "gui_settings_theme_dark": "Temna", "gui_main_page_share_button": "Začnite deliti", "gui_general_settings_window_title": "Splošno", "gui_settings_password_label": "Geslo", "gui_settings_theme_label": "Tema", "gui_status_indicator_share_working": "Začetek …", "moat_captcha_submit": "Vloži", "gui_please_wait_no_button": "Začetek …", "gui_new_tab": "Nov Zavihek", "gui_tab_name_website": "Spletišče", "gui_remove": "Odstrani", "gui_settings_language_label": "Jezik", "gui_all_modes_history": "Zgodovina", "gui_all_modes_clear_history": "Počisti vse", "gui_close_tab_warning_cancel": "Prekliči", "mode_settings_receive_data_dir_browse_button": "Brskanje", "gui_settings_bridge_custom_placeholder": "type address:port (one per line)", "moat_captcha_reload": "Ponovno naloži", "gui_status_indicator_share_started": "Deljenje", "gui_status_indicator_receive_working": "Začetek …", "gui_status_indicator_chat_working": "Začetek …", "gui_status_indicator_receive_stopped": "Ustavljeno", "gui_status_indicator_share_stopped": "Ustavljeno", "gui_status_indicator_chat_stopped": "Ustavljeno", "gui_autoconnect_configure": "Omrežne nastavitve", "mode_settings_advanced_toggle_show": "Pokažite napredne nastavitve" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/sn.json000066400000000000000000000471151521174352300271350ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} faili sio la kusomeka.", "other_page_loaded": "anuani inapakia", "close_on_autostop_timer": "imesimama kwa sababu muda wa auto-stop timer umeisha", "closing_automatically": "imesimama kwa sababu uhamisho umekamilika", "large_filesize": "Tahadhari: kutuma mafaili makubwa inachukua muda", "systray_menu_exit": "acha", "gui_drag_and_drop": "weka faili kuanza kusambaza", "gui_add": "ongeza", "gui_add_files": "ongeza faili", "gui_add_folder": "ongeza faili", "gui_choose_items": "chagua", "gui_share_start_server": "anza kusambaza", "gui_share_stop_server": "acha kusambaza", "gui_share_stop_server_autostop_timer": "acha kusambaza ({})", "gui_receive_start_server": "anza kupokea mode", "gui_receive_stop_server": "sitisha kupokea mode", "gui_receive_stop_server_autostop_timer": "acha kupokea mode ({} iliobaki)", "gui_copy_url": "nakala anuani", "gui_canceled": "imesitishwa", "gui_copied_url_title": "anuani ya OnionShare imenakiliwa", "gui_copied_url": "OnionShare imenakiliwa ubaoni", "gui_please_wait": "inaanz... bonyeza kusitisha.", "gui_quit_warning_quit": "acha", "zip_progress_bar_format": "imekamilika: %p%", "gui_settings_window_title": "mpangilio", "gui_settings_autoupdate_label": "angalia version mpya", "gui_settings_autoupdate_option": "toa taarifa kama version mpya inapatikana", "gui_settings_autoupdate_timestamp": "mara ya mwisho kuangaliwa: {}", "gui_settings_autoupdate_timestamp_never": "hapana", "gui_settings_autoupdate_check_button": "angalia version mpya", "gui_settings_connection_type_label": "OnionShare inawezaje kuunganishwa na Tor?", "gui_settings_connection_type_bundled_option": "tumia Tor Version kuunda kwenye OnionShare", "gui_settings_connection_type_automatic_option": "jaribu usanidi wa moja kwa moja na Tor Browser", "gui_settings_connection_type_control_port_option": "unganisha kwa kutumia contol port", "gui_settings_connection_type_socket_file_option": "unganisha kwa kutumia socket file", "gui_settings_connection_type_test_button": "jaribu kuunganisha na Tor", "gui_settings_control_port_label": "control port", "gui_settings_socket_file_label": "socket file", "gui_settings_socks_label": "SOCKS port", "gui_settings_authenticate_no_auth_option": "hakuna authentication au vidakuzi authentication", "gui_settings_authenticate_password_option": "neno siri", "gui_settings_password_label": "neno siri", "gui_settings_tor_bridges": "unganisha kwa kutumia kiungio cha Tor?", "gui_settings_meek_lite_expensive_warning": "tahadhari: viungio vya meek azure ni gharama sana kuendesha mradi wa Tor.

    unaweza kutumia tu kama imeshindwa kuunganisha na Tor moja kwa moja, kupitia obsfs4 transport, or au viungio vingine.", "gui_settings_tor_bridges_invalid": "hakuna kiungio ulichoongeza kwenye kazi yako. bofya mara mbili kuhakikisha au ongeza zingine.", "gui_settings_button_save": "hifadhi", "gui_settings_button_cancel": "sitisha", "gui_settings_button_help": "usaidizi", "settings_error_unknown": "haiwezi kuunganishwa na Tor kwa sababu mpangilio wako hauleti maana.", "settings_error_automatic": "haiwezi kuunganishwa na kizuizi cha Tor. (inapatikana kutoka torproject.org) Tor Browser kuendesha kutoka nyuma?", "settings_error_socket_port": "haiwezi kuunganishwa na kizuizi cha Tor kwa {}:{}.", "settings_error_socket_file": "haiwezi kuunganishwa na kizuizi cha Tor kwa kutumia Socket file {}.", "settings_error_auth": "imeunganishwa na {}:, lakini haijadhibitiwa. labda sio kizuizi cha Tor?", "settings_error_missing_password": "imeunganishwa na kizuizi cha Tor, lakini inahitaji neno siri kudhibiti.", "settings_error_unreadable_cookie_file": "imeunganishwa na kizuizi cha Tor, lakini neno siri linaweza kuwa limekosewa, au mtumiaji haruhusiwi kusoma mafaili ya vidakuzi.", "settings_error_bundled_tor_not_supported": "kutumia Version ya Tor ambayo inatokana na OnionShare haiwezikufanya kazi kwenye utengenezaji mode ya programu tumizi au macOS.", "settings_error_bundled_tor_timeout": "inachukua muda mrefu kuunganisha na Tor. labda hujaunganishwa na mtandandao, au mda sio sahihi?", "settings_error_bundled_tor_broken": "OnionShare haiwezi kuunganishwa na Tor:\n{}", "settings_test_success": "imeunganishwa na kizuizi cha Tor.\n\nversion ya Tori: {}\ninasapoti huduma za onion kwa mda: {}.\ninasapoti udhibiti wa mtumiaji: {}.\ninasapoti next-gen. huduma za onion: {}.", "error_tor_protocol_error": "kulikua na makosa na Tor: {}", "connecting_to_tor": "inaunganishwa na mtandao wa Tor", "update_available": "OnionShare mpya imetoka. bonyeza hapa kupata.

    sasa unatumia ya sasa.{} {}.", "update_error_check_error": "haiwezi kuona Version mpya: labda hujaunganishwa na Tor, au tovuti ya OnionShare ipo chini?", "update_error_invalid_latest_version": "haiwezi kuangalia Version mpya. OnionShare inasema Version ya sasa haitambuliki '{}'…", "update_not_available": "unatumia OnionShare mpya.", "gui_tor_connection_ask": "fungua mpangilio kutatua mtandao kwa Tor?", "gui_tor_connection_ask_open_settings": "ndio", "gui_tor_connection_ask_quit": "acha", "gui_tor_connection_error_settings": "jaribu kubadili ni jinsi gani OnionShare inaunganishwa kwa mtandao wa Tor kwenye mpangilio.", "gui_tor_connection_canceled": "haiwezi kuunganishwa na Tor\n\nhakikisha umeunganisha internet yako, halafu jaribu tena kufungua OnionShare na uunganishe na Tor.", "gui_tor_connection_lost": "haijaunganishwa na Tor.", "gui_server_started_after_autostop_timer": "Auto-stop timer imetoka kabla haijahifadhiwa. tafadhali hakikisha unasambaza.", "gui_server_autostop_timer_expired": "Auto-stop timer tayari imetoka. tafadhali sogeza ili uanze kusambaza.", "gui_share_url_description": "yeyotemwenye anuani ya OnionShare na private key anaweza kupakuakwa kutumia faili lako la kivinjari cha Tor: ", "gui_receive_url_description": " yeyote : mwenye anuani ya OnionShare na private key anaweza kupakia mafaili kwenye kompyuta yako kwa kutumia Tor Browser :", "gui_url_label_persistent": "ukisambaza haiwezi kusimama,

    na kila utakapotumia itahitaji utumie tna anuani. ( ili kutumia anuani ya moja kwa moja, zima \"tumia anuani inayoendelea\" kwenye mpangilio.)", "gui_url_label_stay_open": "hawezi kusambazwa.", "gui_url_label_onetime": "itasimama baada ya kukamilika.", "gui_url_label_onetime_and_persistent": "haitasimama kusambazwa.

    kila usambazaji unahitaji kuweka anuani mpya tena. (ili kutumia anuani ya moja kwa moja , \"zima kwanzaanuani inayoendelea\" kwenye mpangilio.)", "gui_status_indicator_share_stopped": "tayari kwa kusambaza", "gui_status_indicator_share_working": "inaanza…", "gui_status_indicator_share_started": "inasambazwa", "gui_status_indicator_receive_stopped": "tayari kwa kupokea", "gui_status_indicator_receive_working": "inaanza…", "gui_status_indicator_receive_started": "inapokea", "gui_file_info": "{}}mafaili,{}", "gui_file_info_single": "{}mafaili,{}", "history_in_progress_tooltip": "{} inaendelea", "history_completed_tooltip": "{}imekamilika", "gui_receive_mode_warning": "kupokea mode itasaidia watu kupakia mafaili kwenye kompyuta yako.


    na faili zingine zinaweza kuhifadhi ubora wa mafaili yako kwenye kompyuta endapo utazifungua. fungua tu kwa watu unaowaamini, au unaojua wanajishughulisha na nini.
    ", "systray_page_loaded_title": "kurasa inapakiwa", "gui_settings_language_label": "lugha", "gui_settings_language_changed_notice": "anza upya OnionShare kubadili lugha mpya.", "gui_show_qr_code": "onyesha QR Code", "gui_qr_label_url_title": "anuani ya OnionShare", "gui_hide": "ficha", "gui_tor_settings_window_title": "mpangilio wa Tor", "gui_qr_label_auth_string_title": "PrivateKey", "gui_settings_controller_extras_label": "mpangilio wa Tor", "gui_settings_bridge_use_checkbox": "tumia kiungio", "gui_settings_bridge_moat_button": "omba kiungio kipya", "gui_settings_bridge_custom_radio_option": "onyesha kiungio ulichojifunzia kutoka kwa chanzo kinachoaminika", "gui_settings_bridge_custom_placeholder": "andika anuani:port (moja kwa kila mstari)", "gui_settings_bridge_moat_radio_option": "omba kiungio kutoka torproject.org", "gui_website_url_public_description": " yeyote kwenye hii anuani ya OnionShare tembelea tovuti yako kwa kutumia Tor Browser :", "gui_status_indicator_share_scheduled": "imepangwa…", "gui_status_indicator_receive_scheduled": "imepangwa…", "history_requests_tooltip": "{} ombi la tovuti", "error_cannot_create_data_dir": "haijaweza kutengeneza data folda ya OnionShare: {}", "systray_share_completed_message": "imemaliza kutuma faili", "systray_share_completed_title": "imekamilika", "systray_share_canceled_title": "usambazaji umesitishwa", "systray_share_canceled_message": "mpokeaji amesitisha kupokea faili", "systray_receive_started_title": "anza kupokea", "gui_all_modes_clear_history": "futa zote", "gui_receive_mode_autostop_timer_waiting": "inamalizia kupokea…", "hours_first_letter": "h", "minutes_first_letter": "m", "gui_new_tab": "kurasa mpya", "days_first_letter": "d", "seconds_first_letter": "s", "gui_new_tab_chat_button": "Chat kwa usiri", "gui_main_page_share_button": "anza kusambaza", "gui_main_page_receive_button": "anza kupokea", "gui_main_page_website_button": "anza kuendesha", "gui_main_page_chat_button": "anza kuwasiliana", "gui_tab_name_share": "sambaza", "gui_tab_name_receive": "pokea", "gui_tab_name_website": "tovuti", "gui_close_tab_warning_title": "funga ukurasa?", "gui_quit_warning_cancel": "sitisha", "mode_settings_advanced_toggle_show": "onyesha mpangilio wenye ubora", "mode_settings_title_label": "kichwa cha habari kuu", "mode_settings_advanced_toggle_hide": "ficha mpangilio ulioboreshwa", "gui_all_modes_transfer_finished_range": "imehamishwa{}-[]", "mode_settings_receive_data_dir_label": "hifadhi faili kwa", "gui_all_modes_transfer_finished": "imehamishwa {}", "mode_settings_receive_data_dir_browse_button": "kivinjari", "mode_settings_receive_disable_text_checkbox": "sitisha kuwasilisha ujumbe", "mode_settings_receive_disable_files_checkbox": "sitisha kupakia mafaili", "mode_settings_receive_webhook_url_checkbox": "tumia taarifa za webhook", "mode_settings_website_disable_csp_checkbox": "usitume kichwa cha sera ya usalama wa yaliyomo cha chaguo msingi kwa rasilimali za watu wengine(tumia upande mwingine wa tovuti yako)", "mode_settings_website_custom_csp_checkbox": "tuma kichwa cha sera ya usalama wa iliobinafsishwa", "gui_all_modes_transfer_canceled": "imesitishwa {}", "error_port_not_available": "OnionShare haipatikani", "history_receive_read_message_button": "soma ujumbe", "moat_contact_label": "wasiliana BridgeDB…", "moat_captcha_label": "tatua CAPTCHA kuomba kiungio.", "mode_tor_not_connected_label": "OnionShare haijaunganishwa na mtandao", "moat_captcha_placeholder": "weka alama kutoka kwenye picha", "moat_captcha_submit": "wasilisha", "moat_captcha_reload": "pakia upya", "moat_bridgedb_error": "haiwezi kuwasiliana na BridgeDB.", "moat_captcha_error": "utatuzi sio sahihi. tafadhali jaribu tena.", "gui_please_wait_no_button": "inaanza…", "gui_copy_client_auth": "nakala Private Key", "gui_copied_client_auth": "Private key imenakiliwa kwenye ubao", "gui_reveal": "onyesha", "gui_all_modes_history": "historia", "gui_close_tab_warning_persistent_description": "funga kurasa inayoendelea na ufichenanuani ya onion inayotumia?", "gui_close_tab_warning_share_description": "funga ukurasa ambao unatuma faili?", "gui_close_tab_warning_receive_description": "funga kurasa ambazo zinapokea mafaili?", "gui_close_tab_warning_website_description": "funga ukurasa unaoendesha tovuti?", "gui_close_tab_warning_close": "funga", "gui_close_tab_warning_cancel": "sitisha", "gui_quit_warning_title": "acha OnionShare?", "gui_quit_warning_description": "acha na ufunge kurasa zote, hata kama bado baadhi zinasambaza mafaili?", "gui_rendezvous_cleanup_quit_early": "acha mapema", "gui_autoconnect_circumventing_censorship": "kutatua masuala ya kuunganisha…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "kukwepa udhibiti…", "gui_autoconnect_circumventing_censorship_starting_meek": "kuanzisha viungio vya meek kwa domain fronting…", "gui_autoconnect_circumventing_censorship_got_bridges": "Viungio vimeanzishwa. unganisha tena na Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "haiwezi kuunganishwa na Tor API. hakikisha mtandao wako upo sawa kabla hujajaribu tena.", "gui_server_doesnt_support_stealth": "samahani, hii version ya Tor haisapoti udhibiti wa mtumiaji. tafadhali jaribu version mpya ya Tor, tumia kwa umma kama mode haiitaji kuwa ya binafsi.", "gui_waiting_to_start": "imepangwa kuanza kwa {}. bonyeza kusitisha.", "gui_qr_code_dialog_title": "OnionShare QR Code", "gui_receive_flatpak_data_dir": "kwa sababu umepakua OnionShare kwa kutumia flatpak, lazima uhifadhi mafaili kwenye folda ya ~/OnionShare.", "gui_start_server_autostart_timer_tooltip": "Auto-start timer inaishia kwa {}", "gui_stop_server_autostop_timer_tooltip": "Auto-stop timer inaishia kwa {}", "gui_chat_stop_server": "acha chat server", "gui_chat_start_server": "anza chat server", "gui_file_selection_remove_all": "ondoa zote", "gui_remove": "ondoa", "incorrect_password": "neno siri sio sahihi", "gui_dragdrop_sandbox_flatpak": "ili kufanya flatpak sanbox kuwa salama, iondoe kama haisapotiwi. tumia \"ongeza faili\" na \"ongeza faili\" kuchagua mafaili mbadala.", "gui_autoconnect_circumventing_censorship_requesting_bridges": "omba viungio vya udhibiti wa Tor API…", "gui_settings_tor_bridges_label": "viungio vinakusaidia zaidi kuweka mtandao wa Tor ikiwa upatikanaji wake umefungiwa, kutegemeana na wapi umeunganishwa , kiungio kimoja kinaweza kufanya kazi vizuri zaidi kuliko kingine.", "gui_settings_moat_bridges_invalid": "Bado haujaomba kiungio kutoka torproject.org.", "gui_settings_stop_active_tabs_label": "kuna huduma zinazoendelea kwenye kurasa zako.\nlazima usitishe kwanza huduma zote ili kubadili mpangilio wa kurasa zako.", "gui_copied_client_auth_title": "Private Key imenakiliwa", "gui_autoconnect_description": "Onionshare inategemea mtandao unaoendeshwa na Tor.", "gui_enable_autoconnect_checkbox": "inaunganishwa na Tor", "gui_autoconnect_failed_to_connect_to_tor": "haiwezi kuunganishwa na Tor", "gui_autoconnect_trying_to_connect_to_tor": "inaunganishwa na Tor…", "gui_autoconnect_connection_error_msg": "Hakikisha umeunganishwa na mtandao.", "gui_autoconnect_bridge_description": "unaweza kuunganishwa kwa kutumia kiungio kama internet yako imedhibitiwa.", "gui_autoconnect_bridge_detect_automatic": "kuweka nchi yangu kutoka kwa anuani ya IP kwa mpangilio wa kiungio", "gui_autoconnect_bridge_detect_manual": "chagua nchi kwa mpangilio halisi", "gui_autoconnect_bridge_setting_options": "mpangilio wa viungio", "gui_autoconnect_start": "unganisha na Tor", "gui_autoconnect_configure": "mpangilio wa mtandao", "gui_autoconnect_no_bridge": "jaribu tena bila viungio", "gui_autoconnect_try_again_without_a_bridge": "jaribu tena bila viungio", "gui_general_settings_window_title": "kuu", "gui_settings_bridge_radio_builtin": "chagua kiungio kilichoundwa", "gui_settings_bridge_none_radio_option": "usitumie viungio", "gui_settings_version_label": "unatumia OnionShare {}", "gui_settings_help_label": "unahitaji usaidizi? angaliadocs. onionshare.org", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "muda uliopangwa hauwezi kuwa sawa kuliko muda wa kuanza. tafadhali anza kusambaza.", "gui_share_url_public_description": "yeyotemwenye hii tovuti ya OnionShare anawezakupakua mafaili kwa kutumia kivinjari cha Tor: ", "gui_website_url_description": "yeyote mwenye hii tovuti ya OnionShare na private key anawezatenmbelea kwenye tovuti yako kwa kutumia Tor Browser ", "gui_url_instructions": "kwanza, tuma anuani ya OnionShare apo chini:", "gui_url_instructions_public_mode": "tuma anuani ya OnionShare inayofuata:", "gui_chat_url_description": " yeyote mwenye hii anuani ya OnionShare na private key anaweza kujiunga na hii chumba cha chat kutumia Tor Browser :", "gui_chat_url_public_description": "yeyote mwenye hii anuani ya OnionShare anaweza kujiunga na hii chumba cha chat kwa kutumia Tor Browser :", "gui_status_indicator_chat_stopped": "tayari kwa chat", "gui_status_indicator_chat_working": "inaanza…", "gui_status_indicator_chat_scheduled": "imepangwa…", "gui_status_indicator_chat_started": "wasiliana", "gui_open_folder_error": "haiwezi kufungua folda na xdg-open. faili lipo hapa: {}", "gui_settings_theme_label": "dhamira", "gui_settings_theme_auto": "auto", "gui_settings_theme_light": "light", "gui_settings_theme_dark": "dark", "gui_color_mode_changed_notice": "anza upya OnionShare kuona rangi mpya.", "systray_page_loaded_message": "anuani ya OnionShare inapakiwa", "systray_share_started_title": "imeanza kusambazwa", "systray_share_started_message": "anza kutuma mafaili kwa mtu", "systray_receive_started_message": "mtu anatuma faili kwako", "gui_all_modes_transfer_started": "imeanza {}", "gui_all_modes_progress_complete": "%p%, {0:s:} ilipita.", "gui_all_modes_progress_starting": "{0:s}, %p% (inahesabu)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "hakuna faili iliotumwa", "gui_share_mode_autostop_timer_waiting": "inamalizia kutuma…", "gui_website_mode_no_files": "hakuna tovuti iliosambazwa", "gui_receive_mode_no_files": "hakuna faili iliopokelewa", "gui_new_tab_tooltip": "fungua ukurasa mpya", "gui_new_tab_share_button": "sambaza faili", "gui_new_tab_receive_button": "pokea faili", "gui_new_tab_website_button": "endesha tovuti", "mode_settings_persistent_checkbox": "mara zote fungua ukurasa wako OnionShare ikianza", "mode_settings_public_checkbox": "hii ni huduma ya OnionShare ya umma (zima private key)", "mode_settings_autostart_timer_checkbox": "anza huduma za onion kwa muda uliopangwa", "gui_server_autostart_timer_expired": "muda uliopangwa umeeisha. tafadhali anza kusambaza.", "gui_receive_url_public_description": " yeyote mwenye anuani ya OnionShare unaweza mafaili kwenye kompyuta yako kutumia Tor Browser :", "gui_client_auth_instructions": "inayofuata, tuma private key kuruhusu upatikanaji wa huduma za Onion Service yako:", "mode_settings_share_autostop_sharing_checkbox": "acha kusambaza baada ya mafaili kutumwa (toa kuruhusu upakuaji wa mafaili binafsi)", "gui_tab_name_chat": "chat", "mode_settings_autostop_timer_checkbox": "funga huduma za onion kwa muda uliopangwa", "moat_solution_empty_error": "ingiza alama za picha", "gui_all_modes_transfer_canceled_range": "imesitishwa {}- {}", "gui_rendezvous_cleanup": "inasubiri mzunguko wa Tor kumalizika ili kuwa na uhakika wa mafaili yako kuhamishwa.\n\nhii inaweza kuchukua muda kidogo." } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/sq.json000066400000000000000000000541171521174352300271400ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} s’është kartelë e lexueshme.", "other_page_loaded": "Adresa u ngarkua", "incorrect_password": "Fjalëkalim i pasaktë", "close_on_autostop_timer": "U ndal, ngaqë kohëmatësi për auto-stop u plotësua", "closing_automatically": "U ndal, ngaqë shpërngulja u plotësua", "large_filesize": "Kujdes: Dërgimi i një sasie të madhe mund të dojë orë", "gui_drag_and_drop": "Që të fillohet ndarje me të tjerë, tërhiqni dhe lini kartela dhe dosje", "gui_add": "Shto", "gui_add_files": "Shtoni Kartela", "gui_add_folder": "Shtoni Dosje", "gui_remove": "Hiqe", "gui_dragdrop_sandbox_flatpak": "Për ta bërë më të sigurt bankëprovën Flatpak, nuk mbulohet “merr dhe vër”. Në vend të saj përdorni “Shtoni Kartela” dhe “Shtoni Dosje”.", "gui_file_selection_remove_all": "Hiqi Krejt", "gui_choose_items": "Zgjidhni", "gui_share_start_server": "Filloni të ndani me të tjerë", "gui_share_stop_server": "Resht së ndari me të tjerë", "gui_share_stop_server_autostop_timer": "Resht së Ndari Me të Tjerë ({})", "gui_chat_start_server": "Nis shërbyes fjalosjesh", "gui_chat_stop_server": "Ndal shërbyes fjalosjesh", "gui_stop_server_autostop_timer_tooltip": "Kohëmatësi për vetë-ndalje përfundon më {}", "gui_start_server_autostart_timer_tooltip": "Kohëmatësi i vetë-nisjes përfundon më {}", "gui_receive_start_server": "Fillo Mënyrën Marrje", "gui_receive_stop_server": "Ndal Mënyrën Marrje", "gui_receive_stop_server_autostop_timer": "Ndal Mënyrën Marrje (edhe {})", "gui_receive_flatpak_data_dir": "Ngaqë e instaluat OnionShare-in duke përdorur Flatpak, duhet t’i ruani kartelat te një dosje në ~/OnionShare.", "gui_copy_url": "Kopjo Adresën", "gui_copy_client_auth": "Kopjo Kyç Privat", "gui_canceled": "Anuluar", "gui_copied_url_title": "Adresa OnionShare u Kopjua", "gui_copied_url": "Adresa OnionShare u kopjua te e papastra", "gui_copied_client_auth_title": "Kyçi Privat u Kopjua", "gui_copied_client_auth": "Kyçi Privat u kopjua në të papastër", "gui_show_qr_code": "Shfaq kod QR", "gui_qr_code_dialog_title": "Kod QR OnionShare", "gui_qr_label_url_title": "Adresë OnionShare", "gui_qr_label_auth_string_title": "Kyç Privat", "gui_reveal": "Shfaqe", "gui_hide": "Fshihe", "gui_waiting_to_start": "Vënë në plan që të nisë për {}. Klikoni që të anulohet.", "gui_please_wait_no_button": "Po niset…", "gui_please_wait": "Po niset… Klikoni që të anulohet.", "zip_progress_bar_format": "Po ngjeshet: %p%", "gui_tor_settings_window_title": "Rregullime Tor-i", "gui_autoconnect_description": "OnionShare bazohet në rrjetin Tor të mbajtur në punë nga vullnetarë.", "gui_enable_autoconnect_checkbox": "Vetëlidhu me Tor-in", "gui_autoconnect_failed_to_connect_to_tor": "S’u lidh dot me Tor-in", "gui_autoconnect_trying_to_connect_to_tor": "Po lidhet me Tor-in…", "gui_autoconnect_connection_error_msg": "Sigurohuni se jeni të lidhur në Internet.", "gui_autoconnect_bridge_description": "Mund të jeni në gjendje të lidheni duke përdorur një urë, nëse lidhja juaj Internet censurohet.", "gui_autoconnect_bridge_detect_automatic": "Për rregullime urash, përcaktoje vendin tim nga adresa ime IP", "gui_autoconnect_bridge_detect_manual": "Përzgjidhje dorazi e vendit tim për rregullime urash", "gui_autoconnect_bridge_setting_options": "Rregullime Ure", "gui_autoconnect_start": "Lidhu me Tor-in", "gui_autoconnect_configure": "Rregullime Rrjeti", "gui_autoconnect_no_bridge": "Riprovo pa ura", "gui_autoconnect_try_again_without_a_bridge": "Riprovo pa ura", "gui_autoconnect_circumventing_censorship": "Po zgjidhen probleme lidhje…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Anashkalim censurimi…", "gui_autoconnect_circumventing_censorship_starting_meek": "Po vendoset urë “meek” për “domain-fronting”…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Po kërkohen ura nga API Tor anashkalimi censurimi…", "gui_autoconnect_circumventing_censorship_got_bridges": "U vendosën ura. Po rilidhet me Tor-in…", "gui_autoconnect_could_not_connect_to_tor_api": "S’u lidh dot me API Tor-i. Sigurohuni se jeni lidhur në Internet, para se të riprovoni.", "gui_settings_window_title": "Rregullime", "gui_general_settings_window_title": "Të përgjithshme", "gui_settings_autoupdate_label": "Kontrolloni për version të ri", "gui_settings_autoupdate_option": "Njoftomë, kur ka një version të ri gati", "gui_settings_autoupdate_timestamp": "Kontrolluar së fundi më: {}", "gui_settings_autoupdate_timestamp_never": "Kurrë", "gui_settings_autoupdate_check_button": "Kontrollo për Version të Ri", "gui_settings_connection_type_label": "Si duhet të lidhet me Tor-in OnionShare?", "gui_settings_connection_type_bundled_option": "Përdor versionin Tor që përmban OnionShare", "gui_settings_connection_type_automatic_option": "Provo vetë-formësim me Shfletuesin Tor", "gui_settings_controller_extras_label": "Rregullime Tor-i", "gui_settings_connection_type_control_port_option": "Lidhu duke përdorur portë kontrolli", "gui_settings_connection_type_socket_file_option": "Lidhu duke përdorur kartelë socket", "gui_settings_connection_type_test_button": "Provo Lidhjen me Tor-in", "gui_settings_control_port_label": "Portë kontrolli", "gui_settings_socket_file_label": "Kartelë socket", "gui_settings_socks_label": "Portë Socks", "gui_settings_authenticate_no_auth_option": "Pa mirëfilltësim, apo mirëfilltësim me cookie", "gui_settings_authenticate_password_option": "Fjalëkalim", "gui_settings_password_label": "Fjalëkalim", "gui_settings_tor_bridges": "Të lidhet duke përdorur një urë Tor?", "gui_settings_tor_bridges_label": "Urat e ndihmojnë trafikun tuaj të hyjë në Rrjetin Tor, nëse hyrja në Tor është e bllokuar. Një urë mund të punojë më mirë se një tjetër, në varësi të faktit se prej nga lidheni.", "gui_settings_bridge_use_checkbox": "Përdorni një urë", "gui_settings_bridge_radio_builtin": "Përzgjidhni një urë të brendshme", "gui_settings_bridge_none_radio_option": "Mos përdor ura", "gui_settings_meek_lite_expensive_warning": "Kujdes: Xhirimi i urave “meek-azure” është shumë i kushtueshëm për Projektin Tor.

    Përdorin vetëm nëse s’jeni në gjendje të lidheni drejtpërsëdrejti te Tor-i, përmes transportesh via obfs4 transports, ose urash të tjera normale.", "gui_settings_bridge_moat_radio_option": "Kërkoni një urë nga torproject.org", "gui_settings_bridge_moat_button": "Kërkoni një Urë të Re", "gui_settings_bridge_custom_radio_option": "Jepni një urë që e mësuar nga një burim i besuar", "gui_settings_bridge_custom_placeholder": "shtypni adresë:portë (një për rresht)", "gui_settings_moat_bridges_invalid": "S’keni kërkuar ende një ura nga torproject.org.", "gui_settings_tor_bridges_invalid": "S’funksionon asnjë nga urat që shtuat. Rikontrollojini, ose shtoni të tjera.", "gui_settings_stop_active_tabs_label": "Në disa nga skedat tuaja ka shërbime që janë duke punuar.\nQë të ndryshoni rregullimet e Tor-it tuaj. duhet të ndalni krejt shërbimet.", "gui_settings_button_save": "Ruaje", "gui_settings_button_cancel": "Anuloje", "gui_settings_button_help": "Ndihmë", "gui_settings_version_label": "Po përdorni OnionShare {}", "gui_settings_help_label": "Ju duhet ndihmë? Shihni docs.onionshare.org", "settings_test_success": "I lidhur me kontrollorin Tor.\n\nVersion Tor: {}\nMbulon shërbime Onion efemere: {}.\nMbulon mirëfilltësim klientësh: {}.\nMbulon adresa .onion të brezit pasues: {}.", "connecting_to_tor": "Lidhje me rrjetin Tor", "update_available": "OnionShare e Re. Klikoni këtu që ta merrni.

    Po përdorni {} dhe më i riu është {}.", "update_error_invalid_latest_version": "S’u kontrollua dot për version të ri: Sajti OnionShare po thotë se versioni më i ri është i papranuar '{}'…", "update_error_check_error": "S’u kontrollua dot për version të ri: Ndoshta s’jeni lidhur me Tor-in, ose sajti OnionShare është jashtë funksionimi?", "update_not_available": "Po xhironi versionin më të ri të OnionShare-it.", "gui_tor_connection_ask": "Të hapen rregullimet për të zgjidhur lidhjen me Tor-in?", "gui_tor_connection_ask_open_settings": "Po", "gui_tor_connection_ask_quit": "Dilni", "gui_tor_connection_error_settings": "Provoni të ndryshoni te rregullimet se si lidhet me rrjetin Tor OnionShare-i.", "gui_tor_connection_canceled": "S’u lidh dot me Tor-in.\n\nSigurohuni se jeni lidhur në Internet, mandej rihapni OnionShare dhe ujdisni lidhjen e tij me Tor-in.", "gui_tor_connection_lost": "Shkëputur nga Tor-i.", "gui_server_started_after_autostop_timer": "Koha e caktuar te kohëmatësi për vetëndalje i plotësua, para se të nisej shërbyesi. Ju lutemi, bëni një ndarje të re.", "gui_server_autostop_timer_expired": "Koha e caktuar te kohëmatësi për vetëndalje i plotësua. Ju lutemi, rregullojeni që të fillohet të ndahet me të tjerë.", "gui_server_autostart_timer_expired": "Koha e planifikuar kaloi tashmë. Ju lutemi, rregullojeni, që të fillohet të ndahet me të tjerë.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Koha për vetëndalje s’mund të jetë e njëjtë ose më herët se koha për vetënisje. Ju lutemi, që të fillohet ndarje me të tjerë, rregullojeni.", "gui_server_doesnt_support_stealth": "Na ndjeni, ky version i Tor-it s’mbulon “stealth” (mirëfilltësim klientësh). Ju lutemi, provoni me një version më të ri të Tor-it, ose përdorni mënyrën 'public', nëse s’është e nevojshme të jetë private.", "gui_share_url_description": "Cilido me këtë adresë OnionShare dhe kyç privat mundet të shkarkojë kartelat tuaja duke përdorur Shfletuesin Tor: ", "gui_share_url_public_description": "Cilido me këtë adresë OnionShare mundet të shkarkojë kartelat tuaja duke përdorur Shfletuesin Tor: ", "gui_website_url_description": "Cilido me këtë adresë OnionShare dhe kyç privat mundet të vizitojë sajtin tuaj duke përdorur Shfletuesin Tor: ", "gui_website_url_public_description": "Cilido me këtë adresë OnionShare mundet vizitojë sajtin tuaj duke përdorur Shfletuesin Tor: ", "gui_receive_url_description": "Cilido me këtë adresë OnionShare dhe kyç privat mundet të ngarkojë kartela në kompjuterin tuaj duke përdorur Shfletuesin Tor: ", "gui_receive_url_public_description": "Cilido me këtë adresë OnionShare mundet të ngarkojë kartela në kompjuterin tuaj duke përdorur Shfletuesin Tor: ", "gui_chat_url_description": "Cilido me këtë adresë OnionShare dhe kyç privat mundet të hyjë në këtë dhomë fjalosjesh duke përdorur Shfletuesin Tor: ", "gui_chat_url_public_description": "Cilido me këtë adresë OnionShare mundet të hyjë në këtë dhomë fjalosjesh duke përdorur Shfletuesin Tor: ", "gui_url_label_persistent": "Kjo ndarje me të tjerë s’do të vetë-ndalet.

    Çdo ndarje pasuese ripërdor adresën. (Që të përdoren adresa vetëm për një herë, çaktivizoni “Hap përherë këtë skedë, kur niset OnionShare-i”, te rregullimet.)", "gui_url_label_stay_open": "Kjo ndarje me të tjerë s’do të vetë-ndalet.", "gui_url_label_onetime": "Kjo ndarje me të tjerë do të ndalet pas plotësimit të vet të parë.", "gui_url_label_onetime_and_persistent": "Kjo ndarje me të tjerë s’do të vetë-ndalet.

    Çdo ndarje pasuese do të ripërdorë adresën. (Që të përdoren adresa vetëm për një herë, çaktivizoni “Hap përherë këtë skedë, kur niset OnionShare-i”, te rregullimet.)", "gui_url_instructions": "Së pari, dërgoni adresën OnionShare më poshtë:", "gui_url_instructions_public_mode": "Dërgo adresën OnionShare më poshtë:", "gui_client_auth_instructions": "Më pas, dërgoni kyçin privat që të lejoni hyrje te shërbimi juaj OnionShare:", "gui_status_indicator_share_stopped": "U ndal", "gui_status_indicator_share_working": "Po niset…", "gui_status_indicator_share_scheduled": "Vënë në plan…", "gui_status_indicator_share_started": "Ndarje me të tjerë", "gui_status_indicator_receive_stopped": "U ndal", "gui_status_indicator_receive_working": "Po niset…", "gui_status_indicator_receive_scheduled": "Vënë në plan…", "gui_status_indicator_receive_started": "Po merret", "gui_status_indicator_chat_stopped": "U ndal", "gui_status_indicator_chat_working": "Po niset…", "gui_status_indicator_chat_scheduled": "Vënë në plan…", "gui_status_indicator_chat_started": "Po fjaloset", "gui_file_info": "{} kartela, {}", "gui_file_info_single": "{} kartelë, {}", "history_in_progress_tooltip": "{} në kryerje e sipër", "history_completed_tooltip": "{} i plotësuar", "history_requests_tooltip": "{} kërkesa web", "error_cannot_create_data_dir": "S’u krijua dot dosje të dhënash OnionShare: {}", "gui_receive_mode_warning": "Mënyra marrje u lejon njerëzve të ngarkojnë kartela në kompjuterin tuaj.

    Disa kartela munden, potencialisht, të marrin kontrollin e kompjuterit tuaj, nëse i hapni. Hapni gjëra vetëm nga persona të cilëve u zini besë, ose nëse e dini se ç’po bëni.", "gui_open_folder_error": "S’u hap dot dosja me xdg-open. Kartela gjendet këtu: {}", "gui_settings_language_label": "Gjuhë", "gui_settings_theme_label": "Temë", "gui_settings_theme_auto": "Auto", "gui_settings_theme_light": "E çelët", "gui_settings_theme_dark": "E errët", "gui_settings_language_changed_notice": "Që të kalohet te gjuha e re, rinisni OnionShare.", "gui_color_mode_changed_notice": "Që të shihni ngjyrat e reja, rinisni OnionShare.", "systray_menu_exit": "Dilni", "systray_page_loaded_title": "Faqja u Ngarkua", "systray_page_loaded_message": "U ngarkua adresë OnionShare", "systray_share_started_title": "Ndarja Me të Tjerë Filloi", "systray_share_started_message": "Po fillon dërgim kartelash te dikush", "systray_share_completed_title": "Ndarje Me të Tjerë u Plotësua", "systray_share_completed_message": "U përfundua dërgim kartelash", "systray_share_canceled_title": "Ndarja Me të Tjerë u Anulua", "systray_share_canceled_message": "Dikush anuloi marrjen e kartelave tuaja", "systray_receive_started_title": "Filloi Marrje", "systray_receive_started_message": "Dikush po ju dërgon kartela", "gui_all_modes_history": "Historik", "gui_all_modes_clear_history": "Spastroji Krejt", "gui_all_modes_transfer_started": "Filloi {}", "gui_all_modes_progress_complete": "%p%, {0:s} të rrjedhura.", "gui_all_modes_progress_starting": "{0:s}, %p% (po llogaritet)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Ende Pa Kartela të Dërguara", "gui_share_mode_autostop_timer_waiting": "Përfundoi së dërguari…", "gui_website_mode_no_files": "Ende Pa Sajt të Ndarë Me të Tjerët", "gui_receive_mode_no_files": "Ende Pa Kartela të Marra", "gui_receive_mode_autostop_timer_waiting": "Po përfundohet marrja …", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_new_tab": "Skedë e Re", "gui_new_tab_tooltip": "Hape në skedë të re", "gui_new_tab_share_button": "Ndani Kartela Me të Tjerë", "gui_new_tab_receive_button": "Merr Kartela", "gui_new_tab_website_button": "Strehoni një Sajt", "gui_new_tab_chat_button": "Bisedoni Në Mënyrë Anonime", "gui_main_page_share_button": "Fillo të Ndash Me të Tjerë", "gui_main_page_receive_button": "Fillo të Marrësh", "gui_main_page_website_button": "Fillo të Strehosh", "gui_main_page_chat_button": "Filloni të Bisedoni", "gui_tab_name_share": "Ndani me të tjerë", "gui_tab_name_receive": "Merr", "gui_tab_name_website": "Sajt", "gui_tab_name_chat": "Fjalosje", "gui_close_tab_warning_title": "Të mbyllet skeda?", "gui_close_tab_warning_persistent_description": "Të mbyllet skeda dhe të humbet adresa Onion që po përdor?", "gui_close_tab_warning_share_description": "Të mbyllet skeda që po dërgon kartela?", "gui_close_tab_warning_receive_description": "Të mbyllet skeda që po merr kartela?", "gui_close_tab_warning_website_description": "Të mbyllet skeda që po strehon një sajt?", "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_cancel": "Anuloje", "gui_quit_warning_title": "Të dilet nga OnionShare?", "gui_quit_warning_description": "Të dilet dhe të mbyllen krejt skedat, edhe pse në disa prej tyre po kryhet ende ndarje me të tjerë?", "gui_quit_warning_quit": "Dilni", "gui_quit_warning_cancel": "Anuloje", "mode_settings_advanced_toggle_show": "Shfaq rregullime të mëtejshme", "mode_settings_advanced_toggle_hide": "Fshihi rregullimet e mëtejshme", "mode_settings_title_label": "Titull vetjak", "mode_settings_persistent_checkbox": "Hape përherë këtë skedë, kur niset OnionShare (adresa Onion do të mbetet po ajo)", "mode_settings_public_checkbox": "Ky është një shërbim OnionShare publik (çaktivizon kyç publik)", "mode_settings_autostart_timer_checkbox": "Nise shërbimin Onion në kohën e planifikuar", "mode_settings_autostop_timer_checkbox": "Ndale shërbimin Onion në kohën e planifikuar", "mode_settings_share_autostop_sharing_checkbox": "Ndale ndarjen me të tjerë pasi të jenë dërguar kartelat (hiqjani shenjën që të lejoni shkarkim kartelash individuale)", "mode_settings_receive_data_dir_label": "Ruaji kartelat te", "mode_settings_receive_data_dir_browse_button": "Shfletoni", "mode_settings_receive_disable_text_checkbox": "Çaktivizo parashtrim teksti", "mode_settings_receive_disable_files_checkbox": "Çaktivizo ngarkim kartelash", "mode_settings_receive_webhook_url_checkbox": "Përdor webhook njoftimesh", "mode_settings_website_disable_csp_checkbox": "Mos dërgo kryet parazgjedhje Content Security Policy (i lejon sajtit tuaj të përdorë burime nga palë të treta)", "mode_settings_website_custom_csp_checkbox": "Dërgo një krye vetjake Content Security Policy", "gui_all_modes_transfer_finished_range": "Shpërngulur {} - {}", "gui_all_modes_transfer_finished": "Shpërngulur {}", "gui_all_modes_transfer_canceled_range": "Anuluar {} - {}", "gui_all_modes_transfer_canceled": "Anuluar {}", "settings_error_unknown": "S’lidhet dot me kontrollor Tor, ngaqë rregullimet tuaja s’kanë kuptim.", "settings_error_automatic": "S\"u lidh dot me kontrollor Tor. A po xhiron në prapaskenë Shfletuesi Tor (i passhëm prej torproject.org)?", "settings_error_socket_port": "S’lidhet do me kontrollor Tor-i te {}:{}.", "settings_error_socket_file": "S’lidhet dot te kontrollor Tor duke përdorur kartelë socket {}.", "settings_error_auth": "I lidhur me {}:{}, por s’bëhet dot mirëfilltësimi. Mos nuk është kontrollor Tor?", "settings_error_missing_password": "I lidhur me kontrollorin Tor, por lypset fjalëkalim për të bërë mirëfilltësimin.", "settings_error_unreadable_cookie_file": "U lidh me kontrollorin Tor, por fjalëkalimi mund të jetë i gabuar, ose përdoruesit tuaj s’i është lejuar të lexojë kartelën e cookie-ve.", "settings_error_bundled_tor_not_supported": "Përdorimi i versionit Tor që vjen me OnionShare nuk funksionon nën mënyrën zhvillues në Windows apo macOS.", "settings_error_bundled_tor_timeout": "Po zgjat shumë lidhje me Tor-in. Ndoshta s’jeni lidhur në Internet, ose keni sahat të pasaktë sistemi?", "settings_error_bundled_tor_broken": "OnionShare s’u lidh dot me Tor-in:\n{}", "gui_rendezvous_cleanup": "Po pritet që të mbyllen qarqet Tor, për të qenë të sigurt se kartelat tuaja u shpërngulën.\n\nKjo mund të dojë disa minuta.", "gui_rendezvous_cleanup_quit_early": "Mbylle Herët", "error_port_not_available": "S’ka portë OnionShare", "history_receive_read_message_button": "Lexoni Mesazhin", "error_tor_protocol_error": "Pati një gabim me Tor-in: {}", "moat_contact_label": "Po lidhet me BridgeDB…", "moat_captcha_label": "Që të kërkoni një urë, zgjidhni CAPTCHA-n.", "moat_captcha_placeholder": "Jepni shenjat prej figure", "moat_captcha_submit": "Parashtroje", "moat_captcha_reload": "Ringarkoje", "moat_bridgedb_error": "S’u lidh dot me BridgeDB.", "moat_captcha_error": "Zgjidhje e pasaktë. Ju lutemi, riprovoni.", "moat_solution_empty_error": "Jepni shenjat prej figure", "mode_tor_not_connected_label": "OnionShare s’është i lidhur me rrjetin Tor", "waitress_web_server_error": "Pati një problem me nisjen e shërbyesit", "gui_close_tab_warning_chat_description": "Të mbyllet skeda që strehon një shërbyes fjalosjeje?", "gui_chat_mode_explainer": "Mënyra fjalosje ju lejon të bisedoni në mënyrë ndërvepruese me të tjerë, në Shfletuesin Tor.

    Historiku i fjalosjes nuk depozitohet në OnionShare. Historiku i fjalosjes do të zhduket, kur të mbyllni Shfletuesin Tor.", "mode_settings_persistent_autostart_on_launch_checkbox": "Nise automatikisht këtë shërbim Onion, kur niset OnionShare", "gui_settings_license_label": "OnionShare licencohet sipas GPL v3.
    Licenca palësh të treta mund të shihen këtu:
    https://github.com/onionshare/onionshare/tree/main/licenses", "error_generic": "Pati një gabim të papritur me OnionShare-in:\n{}" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/sr_Latn.json000066400000000000000000000440271521174352300301160ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} nije čitljiv fajl.", "other_page_loaded": "Adresa učitana", "incorrect_password": "Pogrešna lozinka", "close_on_autostop_timer": "Prekid rada zato što je isteklo vreme na auto-stop tajmeru", "closing_automatically": "Prekid rada zato što je prenos završen", "large_filesize": "Upozorenje: Slanje velikih fajlova može trajati satima", "gui_drag_and_drop": "Prevuci i otpusti datoteke i fascikle da bi započeo deljenje", "gui_add": "Dodaj", "gui_add_files": "Dodaj datoteke", "gui_add_folder": "Dodat fascikle", "gui_choose_items": "Odaberi", "gui_share_start_server": "Započni deljenje", "gui_share_stop_server": "Prekini deljenje", "gui_share_stop_server_autostop_timer": "Prekini deljenje ({})", "gui_stop_server_autostop_timer_tooltip": "Auto-stop tajmer se zaustavlja na {}", "gui_start_server_autostart_timer_tooltip": "Auto-start tajmer se zaustavlja na {}", "gui_receive_start_server": "Započni režim primanja", "gui_receive_stop_server": "Prekini režim primanja", "gui_receive_stop_server_autostop_timer": "Prekini režim primanja ({} preostalo)", "gui_copy_url": "Kopiraj adresu", "gui_canceled": "Obustavljeno", "gui_copied_url_title": "Kopirana OnionShare adresa", "gui_copied_url": "OnionShare adresa kopirana u privremenu memoriju", "gui_waiting_to_start": "Planirano da počne u {}. Klikni da obustaviš.", "gui_please_wait": "Počinje… Klikni da obustaviš.", "gui_quit_warning_quit": "Izađi", "zip_progress_bar_format": "Komprimujem: %p%", "gui_settings_window_title": "Podešavanja", "gui_settings_autoupdate_label": "Proveri da li postoji nova verzija", "gui_settings_autoupdate_option": "Obavesti me kada nova verzija bude na raspolaganju", "gui_settings_autoupdate_timestamp": "Poslednja provera: {}", "gui_settings_autoupdate_timestamp_never": "Nikada", "gui_settings_autoupdate_check_button": "Proveri da li postoji nova verzija", "gui_settings_connection_type_label": "Kako bi OnionShare trebalo povezati sa Torom?", "gui_settings_connection_type_bundled_option": "Koristi verziju Tora ugrađenu u OnionShare", "gui_settings_connection_type_automatic_option": "Pokušaj automatsku konfiguraciju pomoću Tor pretraživača", "gui_settings_connection_type_control_port_option": "Poveži se koristeći kontrolni port", "gui_settings_connection_type_socket_file_option": "Poveži se koristeći datoteku priključka", "gui_settings_connection_type_test_button": "Testiranje veze sa Torom", "gui_settings_control_port_label": "Kontrolni port", "gui_settings_socket_file_label": "Datoteka priključka", "gui_settings_socks_label": "SOCKS priključak", "gui_settings_authenticate_no_auth_option": "Bez autentifikacije ili autentifikacija kolačićem", "gui_settings_authenticate_password_option": "Lozinka", "gui_settings_password_label": "Lozinka", "gui_settings_tor_bridges": "Povezivanje pomoću Tor mosta?", "gui_settings_meek_lite_expensive_warning": "Upozorenje: meek-azure mostovi su vrlo skupi za Tor projekat da ih koristi.

    Koristi ih samo ako ne možeš da se povežeš na Tor direktno, preko obfs4 transporta ili drugih redovnih mostova.", "gui_settings_tor_bridges_invalid": "Nijedan od mostova koje ste dodali ne funkcioniše. Proverite ih ponovo ili dodajte druge.", "gui_settings_button_save": "Sačuvaj", "gui_settings_button_cancel": "Odustani", "gui_settings_button_help": "Pomoć", "settings_error_unknown": "Nije moguće povezati se sa Tor kontrolerom jer tvoje postavke nemaju smisla.", "settings_error_automatic": "Nije moguće povezati se sa Tor kontrolerom. Da li Tor pregledač (dostupan na torproject.org) radi u pozadini?", "settings_error_socket_port": "Nije moguće povezati se sa Tor kontrolerom na {}: {}.", "settings_error_socket_file": "Nije moguće povezati se na Tor kontroler pomoću datoteke priključka {}.", "settings_error_auth": "Povezan na {}: {}, ali nije moguća autentifikacija. Možda ovo nije Tor kontroler?", "settings_error_missing_password": "Povezan sa Tor kontrolerom, ali on zahteva lozinku za autentifikaciju.", "settings_error_unreadable_cookie_file": "Povezan sa Tor kontrolerom, ali je lozinka možda pogrešna ili tvomj korisniku nije dozvoljeno da pročita datoteku kolačića.", "settings_error_bundled_tor_not_supported": "Korišćenje verzije Tora koja se isporučuje sa OnionShare ne radi u razvojnom režimu u operativnom sistemu Windows ili macOS.", "settings_error_bundled_tor_timeout": "Predugo traje povezivanje sa Torom. Možda nisi povezan sa Internetom ili imaš netačan sistemski sat?", "settings_error_bundled_tor_broken": "OnionShare ne može da se poveže sa Torom u pozadini:\n{}", "settings_test_success": "Povezan sa Tor kontrolerom.\n\nTor verzija: {}\nPodržava povremene onion usluge: {}.\nPodržava autentifikaciju klijenta: {}.\nPodržava next-gen .onion adrese: {}.", "error_tor_protocol_error": "Došlo je do greške sa Torom: {}", "connecting_to_tor": "Povezivanje sa Tor mrežom", "update_available": "Novi OnionShare objavljen. Klikni ovde da bi ga dobio.

    Trenutno koristiš {} a najnoviji je {}.", "update_error_check_error": "Nije moguće proveriti novu verziju: Mođda nije povezana na Tor, ili sajt OnionShare ne radi?", "update_error_invalid_latest_version": "Nije moguće proveriti novu verziju: Sajt OnionShare kaže da poslednja verzija nije prepoznata '{}'…", "update_not_available": "Da li koristite najnoviji OnionShare.", "gui_tor_connection_ask": "Da li otvoriti podešavanja da biste podesili vezu sa Torom?", "gui_tor_connection_ask_open_settings": "Da", "gui_tor_connection_ask_quit": "Odustani", "gui_tor_connection_error_settings": "Pokušaj da u podešavanjima promeniš način na koji se OnionShare povezuje sa Tor mrežom.", "gui_tor_connection_canceled": "Nije moguće povezati se sa Torom.\n\nProveri da li si povezan sa Internetom, a zatim ponovo pokreni OnionShare i podesi vezu sa Torom.", "gui_tor_connection_lost": "Prekinuta veza sa Torom.", "gui_server_started_after_autostop_timer": "Tajmer automatskog zaustavljanja je odbrojao pre početka rada servera. Unesi novi deo.", "gui_server_autostop_timer_expired": "Tajmer automatskog zaustavljanja je već odbrojao. Podesi ga da bi započelo deljenje.", "gui_server_autostart_timer_expired": "Predviđeno vreme je već prošlo. Podesi ga da bi započelo deljenje.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Vreme automatskog zaustavljanja ne može biti isto ili ranije od vremena početka automatskog pokretanja. Podesi ga da bi započelo deljenje.", "gui_share_url_description": "Svako sa ovom OnionShare adresom i privatnim ključem može preuzeti tvoje datoteke koristeći Tor Browser: ", "gui_website_url_description": "Bilo ko sa ovom OnionShare adresom i privatnim ključem može posetiti tvoju web-stranicu koristeći Tor Browser: ", "gui_receive_url_description": "Bilo ko sa ovom OnionShare adresom i privatnim ključem može poslati datoteke na tvoj računar koristeći Tor Browser: ", "gui_url_label_persistent": "Ovo deljenje neće se automatski zaustaviti.

    Svako sledeće deljenje ponovo koristi istu adresu. (Da bi koristio jednokratnu adresu, isključi opciju \"koristi trajnu adresu\" u podešavanjima.)", "gui_url_label_stay_open": "Ovaj deljenje neće se automatski zaustaviti.", "gui_url_label_onetime": "Ovaj deljenje će se zaustaviti nakon prvog dovršenja.", "gui_url_label_onetime_and_persistent": "Ovaj deljenje neće se automatski zaustaviti.

    Svako naredno deljenje ponovo će koristiti istu adresu. (Da bi koristio jednokratnu adresu, isključi opciju \"Koristi trajnu adresu\" u podešavanjima.)", "gui_status_indicator_share_stopped": "Spremno za deljenje", "gui_status_indicator_share_working": "Počinje…", "gui_status_indicator_share_scheduled": "Planirano…", "gui_status_indicator_share_started": "Deljenje", "gui_status_indicator_receive_stopped": "Spremno za prijem", "gui_status_indicator_receive_working": "Počinje…", "gui_status_indicator_receive_scheduled": "Planirano…", "gui_status_indicator_receive_started": "Primanje", "gui_file_info": "{} datoteke, {}", "gui_file_info_single": "{} datoteka, {}", "history_in_progress_tooltip": "{} u toku", "history_completed_tooltip": "{} završeno", "history_requests_tooltip": "{} web zahtevi", "error_cannot_create_data_dir": "Nije moguće kreirati OnionShare fasciklu sa podacima: {}", "gui_receive_mode_warning": "Režim prijema dozvoljava korisnicima da šalju datoteke na tvoj računar.

    Neke datoteke mogu da preuzmu kontrolu nad tvojim računarom ako ih otvoriš. Otvaraj samo stvari od ljudi kojima veruješ ili ako znaš šta radiš. ", "gui_settings_language_label": "Željeni jezik", "gui_settings_language_changed_notice": "Ponovo pokreni OnionShare da bi novi jezik bio primenjen.", "systray_menu_exit": "Izađi", "systray_page_loaded_title": "Stranica učitana", "systray_page_loaded_message": "OnionShare adresa učitana", "systray_share_started_title": "Deljenje započeto", "systray_share_started_message": "Početak slanja datoteka nekome", "systray_share_completed_title": "Deljenje završeno", "systray_share_completed_message": "Slanje datoteka završeno", "systray_share_canceled_title": "Deljenje otkazano", "systray_share_canceled_message": "Neko je otkazao primanje tvojih datoteka", "systray_receive_started_title": "Prijem započet", "systray_receive_started_message": "Neko ti šalje datoteke", "gui_all_modes_history": "Istorija", "gui_all_modes_clear_history": "Izbriši sve", "gui_all_modes_transfer_started": "Započeto {}", "gui_all_modes_transfer_finished_range": "Preneto {}-{}", "gui_all_modes_transfer_finished": "Preneto {}", "gui_all_modes_transfer_canceled_range": "Otkazano {}-{}", "gui_all_modes_transfer_canceled": "Otkazano {}", "gui_all_modes_progress_complete": "% p%, {0: s} je proteklo.", "gui_all_modes_progress_starting": "{0: s},% p% (proračunavam)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Nijedna datoteka još nije poslata", "gui_share_mode_autostop_timer_waiting": "Čekam na završetak slanja", "gui_website_mode_no_files": "Još nijedna web stranica nije podeljena", "gui_receive_mode_no_files": "Još nijedna datoteka nije primljena", "gui_receive_mode_autostop_timer_waiting": "Čekam na završetak prijema", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_rendezvous_cleanup_quit_early": "Prestani", "gui_rendezvous_cleanup": "Čekajući da se Tor čvorovi zatvore da bi bili sigurni da su vaši fajlovi uspešno preneti.\n\nOvo može trajati nekoliko minuta.", "error_port_not_available": "OnionShare port nije dostupan", "mode_settings_website_disable_csp_checkbox": "Ne šaljite zaglavlje smernica za bezbednost sadržaja (omogućava vašem veb sajtu da koristi nezavisne resurse)", "mode_settings_share_autostop_sharing_checkbox": "Zaustavite deljenje nakon slanja fajlova (uklonite oznaku da bi omogućili preuzimanje pojedinačnih fajlova)", "gui_quit_warning_description": "Deljenje je aktivno u nekim vašim jezičcima. Ako želite napustiti, svi važi jezičci će biti zatvoreni. Da li ste sigurni da želite napustiti?", "gui_close_tab_warning_website_description": "Aktivno hostujete veb sajt. Da li ste sigurni da želite da zatvorite ovaj jezičak?", "gui_close_tab_warning_receive_description": "U procesu ste primanja fajlova. Da li ste sigurni da želite da zatvorite ovaj jezičak?", "gui_close_tab_warning_share_description": "U procesu ste slanja fajlova. Da li ste sigurni da želite zatvoriti ovaj jezičak?", "gui_close_tab_warning_persistent_description": "Ovaj jezičak je postojan. Ako ga zatvorite, izgubićete onion adresu koju koristite. Da li ste sigurni da želite zatvoriti?", "mode_settings_receive_data_dir_browse_button": "Pronađi", "mode_settings_receive_data_dir_label": "Sačuvaj fajlove u", "mode_settings_autostop_timer_checkbox": "Zaustavi onion servis u planirano vreme", "mode_settings_autostart_timer_checkbox": "Pokreni onion servis u planirano vreme", "mode_settings_public_checkbox": "Ne koristi lozinku", "mode_settings_persistent_checkbox": "Sačuvaj ovaj jezičak i automatski ga otvori kada otvorim OnionShare", "gui_quit_warning_cancel": "Otkaži", "gui_close_tab_warning_cancel": "Otkaži", "mode_settings_advanced_toggle_hide": "Sakrij napredne postavke", "mode_settings_advanced_toggle_show": "Prikaži napredne postavke", "gui_quit_warning_title": "Da li ste sigurni?", "gui_close_tab_warning_close": "U redu", "gui_close_tab_warning_title": "Da li ste sigurni?", "gui_tab_name_chat": "Ćaskanje", "gui_tab_name_website": "Veb sajt", "gui_tab_name_receive": "Prijem", "gui_tab_name_share": "Deli", "gui_main_page_chat_button": "Pokreni ćaskanje", "gui_new_tab_website_button": "Hosting veb sajta", "gui_main_page_website_button": "Pokreni hosting", "gui_main_page_receive_button": "Pokreni primanje", "gui_main_page_share_button": "Pokreni deljenje", "gui_new_tab_chat_button": "Anonimno ćaskanje", "gui_new_tab_receive_button": "Primanje fajlova", "gui_new_tab_share_button": "Deli fajlove", "gui_new_tab_tooltip": "Otvori novi jezičak", "gui_new_tab": "Novi jezičak", "gui_color_mode_changed_notice": "Ponovo pokrenite OnionShare da bi primenili novi režim boja.", "gui_open_folder_error": "Neuspelo otvaranje fascikle sa xdg-open. Fajl je ovde: {}", "gui_chat_url_description": "Bilo ko sa ovom OnionShare adresom i privatnim ključem može pristupiti ovoj sobi za ćaskanje koristeći Tor Browser: ", "gui_qr_code_dialog_title": "OnionShare QR kod", "gui_show_qr_code": "Prikaži QR kod", "gui_receive_flatpak_data_dir": "Pošto ste instalirali OnionShare koristeći Flatpak, morate čuvati fajlove u falcikli ~/OnionShare.", "gui_chat_stop_server": "Zaustavi server za ćaskanje", "gui_chat_start_server": "Pokreni server za ćaskanje", "gui_file_selection_remove_all": "Ukloni sve", "gui_remove": "Ukloni", "gui_copy_client_auth": "Kopiraj privatni ključ", "gui_copied_client_auth_title": "Privatni ključ je kopiran", "gui_copied_client_auth": "Privatni ključ je kopiran u clipboard", "gui_tor_settings_window_title": "Tor Podešenja", "gui_settings_controller_extras_label": "Tor Podešenja", "gui_settings_bridge_use_checkbox": "Koristite most", "gui_settings_bridge_radio_builtin": "Odaberite most", "gui_settings_bridge_none_radio_option": "Ne koristi mostove", "gui_settings_bridge_moat_radio_option": "Zatražite most od torproject.org", "gui_settings_bridge_moat_button": "Zatražite novi most", "gui_settings_bridge_custom_radio_option": "Obezbedite most za koji ste saznali iz pouzdanog izvora", "gui_settings_bridge_custom_placeholder": "upišite adresu:port (jedan po liniji)", "gui_settings_moat_bridges_invalid": "Još niste zatražili most od torproject.org.", "gui_settings_version_label": "Koristite OnionShare {}", "gui_share_url_public_description": "Bilo ko sa ovom OnionShare adresom može preuzeti tvoje datoteke koristeći Tor Browser: ", "gui_website_url_public_description": "Bilo ko s ovom OnionShare adresom može posetiti tvoju web-stranicu koristeći Tor Browser: ", "gui_receive_url_public_description": "Bilo ko sa ovom OnionShare adresom može poslati datoteke na tvoj računar koristeći Tor Browser: ", "gui_chat_url_public_description": "Bilo ko sa ovom OnionShare adresom može se pridružiti ovoj sobi za ćaskanje koristeći Tor Browser: ", "gui_url_instructions": "Prvo pošalji ovu dole OnionShare adresu:", "moat_contact_label": "Kontaktiranje BridgeDB-a...", "moat_captcha_label": "Rešite CAPTCHA da bi zatražili most.", "moat_captcha_placeholder": "Unesite znakove sa slike", "moat_captcha_submit": "Pošalji", "moat_captcha_reload": "Obnovi", "moat_bridgedb_error": "Greška u kontaktiranju BridgeDB.", "gui_please_wait_no_button": "Pokretanje …", "gui_qr_label_url_title": "OnionShare adresa", "gui_qr_label_auth_string_title": "Privatni ključ", "gui_reveal": "Otkrij", "gui_hide": "Sakrij", "gui_dragdrop_sandbox_flatpak": "Da bi Flatpak sandbox bio sigurniji, prevlačenje i ispuštanje nije podržano. Umesto toga koristite dugmad Dodaj datoteke i Dodaj direktorijume za pretraživanje datoteka.", "gui_settings_tor_bridges_label": "Mostovi vam pomažu da pristupite Tor mreži u područjima gde je Tor blokiran. U zavisnosti gde se nalazite, jedan most može raditi bolje od drugog.", "gui_settings_help_label": "Treba vam pomoć? Pogledajte docs.onionshare.org", "gui_server_doesnt_support_stealth": "Nažalost, ova Tor verzija ne podržava nevidljivost (autentifikacija klijenta). Pokušajte s novijom verzijom Tor-a ili koristite 'javni' način rada ako ne mora biti privatan.", "history_receive_read_message_button": "Pročitaj poruku", "moat_captcha_error": "Rješenje nije ispravno. Molimo pokušajte ponovo.", "moat_solution_empty_error": "Morate uneti znakove sa slike", "mode_tor_not_connected_label": "OnionShare nije povezan na Tor mrežu", "gui_settings_theme_dark": "Tamna", "gui_status_indicator_chat_working": "Pokretanje …", "gui_status_indicator_chat_scheduled": "Planirano…", "gui_settings_theme_label": "Tema", "gui_settings_theme_light": "Svetla", "gui_general_settings_window_title": "Generalno" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/sv.json000066400000000000000000000522251521174352300271430ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} är inte en läsbar fil.", "other_page_loaded": "Adressen laddades", "close_on_autostop_timer": "Stoppad för att tiden för den automatiska stopp-tidtagaren löpte ut", "closing_automatically": "Stoppad för att hämtningen är klar", "large_filesize": "Varning: Att skicka en stor delning kan ta timmar", "systray_menu_exit": "Avsluta", "gui_drag_and_drop": "Dra och släpp filer och mappar\nför att starta delning", "gui_add": "Lägg till", "gui_choose_items": "Välj", "gui_share_start_server": "Starta delning", "gui_share_stop_server": "Stoppa delning", "gui_share_stop_server_autostop_timer": "Stoppa delning ({})", "gui_receive_start_server": "Starta mottagningsläge", "gui_receive_stop_server": "Stoppa mottagningsläge", "gui_receive_stop_server_autostop_timer": "Stoppa mottagningsläge ({} kvarstår)", "gui_copy_url": "Kopiera adress", "gui_canceled": "Avbruten", "gui_copied_url_title": "OnionShare-adress kopierad", "gui_copied_url": "OnionShare-adress kopierad till urklipp", "gui_please_wait": "Startar... klicka för att avbryta.", "gui_quit_warning_quit": "Avsluta", "zip_progress_bar_format": "Komprimerar: %p%", "gui_settings_window_title": "Inställningar", "gui_settings_autoupdate_label": "Sök efter ny version", "gui_settings_autoupdate_option": "Meddela mig när en ny version är tillgänglig", "gui_settings_autoupdate_timestamp": "Senast kontrollerad: {}", "gui_settings_autoupdate_timestamp_never": "Aldrig", "gui_settings_autoupdate_check_button": "Sök efter ny version", "gui_settings_connection_type_label": "Hur ska OnionShare ansluta till Tor?", "gui_settings_connection_type_bundled_option": "Använd Tor-versionen som är inbyggd i OnionShare", "gui_settings_connection_type_automatic_option": "Försök med automatisk konfiguration med Tor Browser", "gui_settings_connection_type_control_port_option": "Anslut med kontrollport", "gui_settings_connection_type_socket_file_option": "Anslut med socket-fil", "gui_settings_connection_type_test_button": "Testa anslutning till Tor", "gui_settings_control_port_label": "Kontrollport", "gui_settings_socket_file_label": "Socket-fil", "gui_settings_socks_label": "SOCKS-port", "gui_settings_authenticate_no_auth_option": "Ingen autentisering eller kakautentisering", "gui_settings_authenticate_password_option": "Lösenord", "gui_settings_password_label": "Lösenord", "gui_settings_tor_bridges": "Ansluta med en Tor-bro?", "gui_settings_meek_lite_expensive_warning": "Varning: meek-azure broarna är mycket kostsamma för Tor-projektet att köra.

    Använd dem endast om det inte går att ansluta till Tor direkt, via obfs4-transporter eller andra vanliga broar.", "gui_settings_tor_bridges_invalid": "Ingen av broarna du lagt till fungerar. Dubbelkolla dem eller lägg till andra.", "gui_settings_button_save": "Spara", "gui_settings_button_cancel": "Avbryt", "gui_settings_button_help": "Hjälp", "settings_error_unknown": "Kan inte ansluta till Tor-kontrollern eftersom dina inställningar inte är vettiga.", "settings_error_automatic": "Kunde inte ansluta till Tor-regulatorn. Körs Tor Browser (tillgänglig från torproject.org) i bakgrunden?", "settings_error_socket_port": "Det går inte att ansluta till Tor-regulatorn på {}:{}.", "settings_error_socket_file": "Det går inte att ansluta till Tor-regulatorn med socket-filen {}.", "settings_error_auth": "Ansluten till {}:{}, men kan inte autentisera. Kanske är det här inte en Tor-regulator?", "settings_error_missing_password": "Ansluten till Tor-regulatorn, men den kräver ett lösenord för att autentisera.", "settings_error_unreadable_cookie_file": "Ansluten till Tor-regulatorn, men lösenordet kan vara fel, eller din användare är inte tillåtet att läsa kakfilen.", "settings_error_bundled_tor_not_supported": "Användning av Tor-versionen som följer med OnionShare fungerar inte i utvecklarläge på Windows eller macOS.", "settings_error_bundled_tor_timeout": "Det tar för lång tid att ansluta till Tor. Kanske är du inte ansluten till Internet, eller har en felaktig systemklocka?", "settings_error_bundled_tor_broken": "OnionShare kunde inte ansluta till Tor:\n{}", "settings_test_success": "Ansluten till Tor-regulatorn.\n\nTor-version: {}\nStöder efemära onion-tjänster: {}.\nStöder klientautentisering: {}.\nStöder nästa generations .onion-adresser: {}.", "error_tor_protocol_error": "Det uppstod ett fel med Tor: {}", "connecting_to_tor": "Ansluter till Tor-nätverket", "update_available": "Ny OnionShare utgiven. Klicka här för att få den.

    Du använder {} och den senaste är {}.", "update_error_check_error": "Det gick inte att söka efter ny version: Kanske är du inte ansluten till Tor eller OnionShare-webbplatsen är nere?", "update_error_invalid_latest_version": "Det gick inte att söka efter ny version: OnionShare-webbplatsen säger att den senaste versionen är den oigenkännliga \"{}\"…", "update_not_available": "Du kör den senaste OnionShare.", "gui_tor_connection_ask": "Öppna inställningarna för att reda ut anslutning till Tor?", "gui_tor_connection_ask_open_settings": "Ja", "gui_tor_connection_ask_quit": "Avsluta", "gui_tor_connection_error_settings": "Försök att ändra hur OnionShare ansluter till Tor-nätverket i inställningarna.", "gui_tor_connection_canceled": "Kunde inte ansluta till Tor.\n\nSe till att du är ansluten till Internet, öppna sedan OnionShare igen och ställ in anslutningen till Tor.", "gui_tor_connection_lost": "Frånkopplad från Tor.", "gui_server_started_after_autostop_timer": "Tiden för den automatiska stopp-tidtagaren löpte ut innan servern startades.\nGör en ny delning.", "gui_server_autostop_timer_expired": "Den automatiska stopp-tidtagaren har redan löpt ut. Justera den för att starta delning.", "gui_share_url_description": "Vem som helst med denna OnionShare-adress och privata nyckel kan ladda ner dina filer med hjälp av Tor Browser: ", "gui_receive_url_description": "Alla med denna OnionShare-adress och privata nyckel kan ladda upp filer till din dator med Tor Browser: ", "gui_url_label_persistent": "Denna delning kommer inte att stoppas automatiskt.

    Varje efterföljande delning återanvänder adressen. (För att använda engångsadresser, stäng av \"Öppna alltid den här fliken när OnionShare startas\" i inställningarna.)", "gui_url_label_stay_open": "Denna delning kommer inte automatiskt att avslutas.", "gui_url_label_onetime": "Den här delningen avslutas efter den första slutförda överföringen.", "gui_url_label_onetime_and_persistent": "Denna delning kommer inte att stoppas automatiskt.

    Varje efterföljande delning kommer att återanvända adressen. (För att använda engångsadresser, stäng av \"Öppna alltid den här fliken när OnionShare startas\" i inställningarna.)", "gui_status_indicator_share_stopped": "Stoppad", "gui_status_indicator_share_working": "Startar…", "gui_status_indicator_share_started": "Delar", "gui_status_indicator_receive_stopped": "Stoppad", "gui_status_indicator_receive_working": "Startar…", "gui_status_indicator_receive_started": "Tar emot", "gui_file_info": "{} filer, {}", "gui_file_info_single": "{} fil, {}", "history_in_progress_tooltip": "{} pågår", "history_completed_tooltip": "{} slutförda", "gui_receive_mode_warning": "Mottagningsläget låter personer skicka filer till din dator.

    Vissa filer kan potentiellt ta kontroll över din dator om du öppnar dem. Öppna endast saker från personer du litar på eller om du vet vad du gör.", "systray_page_loaded_title": "Sidan lästes in", "gui_settings_language_label": "Språk", "gui_settings_language_changed_notice": "Starta om OnionShare för att språkändringen ska börja gälla.", "gui_add_files": "Lägg till filer", "gui_add_folder": "Lägg till mapp", "error_cannot_create_data_dir": "Det gick inte att skapa OnionShare-datamapp: {}", "systray_page_loaded_message": "OnionShare-adress lästes in", "systray_share_started_title": "Delningen startades", "systray_share_started_message": "Startar sändning av filer till någon", "systray_share_completed_title": "Delning klar", "systray_share_completed_message": "Filerna skickades", "systray_share_canceled_title": "Delning avbruten", "systray_share_canceled_message": "Någon har avbrutit mottagningen av dina filer", "systray_receive_started_title": "Mottagning startad", "systray_receive_started_message": "Någon skickar filer till dig", "gui_all_modes_history": "Historik", "gui_all_modes_clear_history": "Rensa alla", "gui_all_modes_transfer_started": "Startades {}", "gui_all_modes_transfer_finished_range": "Överförd {} - {}", "gui_all_modes_transfer_finished": "Överförd {}", "gui_all_modes_progress_complete": "%p%, {0} förflutit.", "gui_all_modes_progress_starting": "{0} %s% (beräkning)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Inga filer har skickats än", "gui_share_mode_autostop_timer_waiting": "Slutför sändning…", "gui_receive_mode_no_files": "Inga filer har mottagits ännu", "gui_receive_mode_autostop_timer_waiting": "Slutför mottagning…", "gui_all_modes_transfer_canceled_range": "Avbröt {} - {}", "gui_all_modes_transfer_canceled": "Avbröt {}", "gui_stop_server_autostop_timer_tooltip": "Automatisk stopp-tidtagare slutar vid {}", "gui_start_server_autostart_timer_tooltip": "Automatisk start-tidtagare slutar vid {}", "gui_waiting_to_start": "Planeras starta om {}. Klicka för att avbryta.", "gui_server_autostart_timer_expired": "Den schemalagda tiden har redan passerat. Justera den för att starta delning.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Den automatiska stopp-tiden kan inte vara samma eller tidigare än den automatiska starttiden. Justera den för att starta delning.", "gui_status_indicator_share_scheduled": "Planerad…", "gui_status_indicator_receive_scheduled": "Planerad…", "days_first_letter": "d", "hours_first_letter": "t", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_website_url_description": "Vem som helst med denna OnionShare-adress och privata nyckel kan besöka din webbplats med hjälp av Tor Browser: ", "gui_website_mode_no_files": "Ingen webbplats delas ännu", "incorrect_password": "Felaktigt lösenord", "history_requests_tooltip": "{} webbförfrågningar", "gui_close_tab_warning_persistent_description": "Vill du stänga fliken och tappa onion-adressen som den använder?", "mode_settings_website_disable_csp_checkbox": "Inaktivera rubriken för innehållssäkerhetspolicy (tillåter din webbplats att använda resurser från tredje part)", "mode_settings_receive_data_dir_browse_button": "Bläddra", "mode_settings_receive_data_dir_label": "Spara filer till", "mode_settings_share_autostop_sharing_checkbox": "Stoppa delning efter att filer har skickats (avmarkera för att tillåta hämtning av enskilda filer)", "mode_settings_autostart_timer_checkbox": "Starta oniontjänsten vid schemalagd tid", "mode_settings_autostop_timer_checkbox": "Stoppa oniontjänsten vid schemalagd tid", "mode_settings_public_checkbox": "Detta är en offentlig OnionShare-tjänst (inaktiverar den privata nyckeln)", "mode_settings_persistent_checkbox": "Öppna alltid den här fliken när OnionShare startas (onion-adressen förblir densamma)", "mode_settings_advanced_toggle_hide": "Dölj avancerade inställningar", "mode_settings_advanced_toggle_show": "Visa avancerade inställningar", "gui_quit_warning_cancel": "Avbryt", "gui_quit_warning_description": "Vill du vsluta och stänga alla flikar, även om delning är aktiv i några av dem?", "gui_quit_warning_title": "Avsluta OnionShare?", "gui_close_tab_warning_cancel": "Avbryt", "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_website_description": "Vill du stänga fliken som är värd för en webbplats?", "gui_close_tab_warning_receive_description": "Vill du stänga fliken som tar emot filer?", "gui_close_tab_warning_share_description": "Vill du stänga fliken som skickar filer?", "gui_close_tab_warning_title": "Stäng flik?", "gui_new_tab_website_button": "Publicera webbplats", "gui_new_tab_receive_button": "Ta emot filer", "gui_new_tab_share_button": "Dela filer", "gui_new_tab_tooltip": "Öppna en ny flik", "gui_new_tab": "Ny flik", "gui_qr_code_dialog_title": "OnionShare QR-kod", "gui_show_qr_code": "Visa QR-kod", "gui_receive_flatpak_data_dir": "Eftersom du installerade OnionShare med Flatpak måste du spara filer i en mapp i ~/OnionShare.", "gui_chat_stop_server": "Stoppa chattservern", "gui_chat_start_server": "Starta chattservern", "gui_file_selection_remove_all": "Ta bort alla", "gui_remove": "Ta bort", "gui_main_page_share_button": "Starta delning", "error_port_not_available": "OnionShare-porten är inte tillgänglig", "gui_rendezvous_cleanup_quit_early": "Avsluta tidigt", "gui_rendezvous_cleanup": "Väntar på att Tor-kretsar stänger för att vara säker på att dina filer har överförts.\n\nDet kan ta några minuter.", "gui_tab_name_chat": "Chatt", "gui_tab_name_website": "Webbplats", "gui_tab_name_receive": "Ta emot", "gui_tab_name_share": "Dela", "gui_main_page_chat_button": "Börja chatta", "gui_main_page_website_button": "Börja publicera", "gui_main_page_receive_button": "Starta mottagning", "gui_new_tab_chat_button": "Chatta anonymt", "gui_open_folder_error": "Det gick inte att öppna mappen med xdg-open. Filen finns här: {}", "gui_chat_url_description": "Vem som helst med denna OnionShare-adress och privata nyckel kan gå med i detta chattrum med hjälp av Tor Browser: ", "gui_status_indicator_chat_stopped": "Stoppad", "gui_status_indicator_chat_scheduled": "Schemalagd…", "history_receive_read_message_button": "Läs meddelandet", "mode_settings_receive_webhook_url_checkbox": "Använd aviseringswebhook", "mode_settings_receive_disable_files_checkbox": "Inaktivera uppladdning av filer", "mode_settings_receive_disable_text_checkbox": "Inaktivera att skicka text", "mode_settings_title_label": "Anpassad titel", "gui_color_mode_changed_notice": "Starta om OnionShare för att se det nya färgläget.", "gui_status_indicator_chat_started": "Chattar", "gui_status_indicator_chat_working": "Startar…", "gui_chat_url_public_description": "Alla med denna OnionShare-adress kan gå med i detta chattrum med Tor Browser: ", "gui_settings_theme_dark": "Mörk", "gui_settings_theme_light": "Ljus", "gui_settings_theme_auto": "Automatiskt", "gui_settings_theme_label": "Tema", "gui_client_auth_instructions": "Skicka sedan den privata nyckeln för att ge åtkomst till din OnionShare -tjänst:", "gui_url_instructions_public_mode": "Skicka OnionShare-adressen nedan:", "gui_url_instructions": "Skicka först OnionShare-adressen nedan:", "gui_receive_url_public_description": "Alla med denna OnionShare-adress kan ladda upp filer till din dator med Tor Browser: ", "gui_website_url_public_description": "Alla med denna OnionShare-adress kan besöka din webbplats med Tor Browser: ", "gui_share_url_public_description": "Alla med denna OnionShare-adress kan hämta dina filer med Tor Browser: ", "gui_server_doesnt_support_stealth": "Tyvärr, den här versionen av Tor stöder inte stealth (klientautentisering). Försök med en nyare version av Tor, eller använd \"offentligt\" läge om det inte behöver vara privat.", "gui_please_wait_no_button": "Startar…", "gui_hide": "Dölja", "gui_reveal": "Visa", "gui_qr_label_auth_string_title": "Privat nyckel", "gui_qr_label_url_title": "OnionShare-adress", "gui_copied_client_auth": "Privat nyckel kopierad till Urklipp", "gui_copied_client_auth_title": "Privat nyckel kopierad", "gui_copy_client_auth": "Kopiera den privata nyckeln", "gui_tor_settings_window_title": "Tor-inställningar", "gui_settings_controller_extras_label": "Tor-inställningar", "gui_dragdrop_sandbox_flatpak": "För att göra Flatpak mer säkert, är dra och släpp inte tillåtet. Använd knapparna \"Lägg till filer\" och \"Lägg till mapp\" för att välja filer istället.", "gui_settings_bridge_use_checkbox": "Använd en bro", "gui_settings_bridge_radio_builtin": "Välj en inbyggd bro", "gui_settings_bridge_none_radio_option": "Använd inte broar", "gui_settings_bridge_moat_radio_option": "Begär en bro från torproject.org", "gui_settings_bridge_moat_button": "Begär en ny bro", "gui_settings_bridge_custom_radio_option": "Tillhandahåll en bro som du fått från en pålitlig källa", "gui_settings_bridge_custom_placeholder": "skriv adress:port (en per rad)", "gui_settings_moat_bridges_invalid": "Du har inte begärt en bro från torproject.org ännu.", "gui_settings_stop_active_tabs_label": "Det finns tjänster som körs på några av dina flikar.\nDu måste stoppa alla tjänster för att ändra dina Tor-inställningar.", "gui_settings_version_label": "Du använder OnionShare {}", "gui_settings_help_label": "Behöver du hjälp? Se docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "Skicka en anpassad rubrik för innehållssäkerhetsprincipen", "moat_contact_label": "Kontaktar BridgeDB…", "moat_captcha_label": "Lös CAPTCHA:t för att begära en bro.", "moat_captcha_placeholder": "Ange tecknen från bilden", "moat_captcha_reload": "Uppdatera", "moat_bridgedb_error": "Kunde inte kontakta BridgeDB.", "moat_captcha_error": "Lösningen är inte korrekt. Var god försök igen.", "moat_solution_empty_error": "Ange tecknen från bilden", "mode_tor_not_connected_label": "OnionShare är inte ansluten till Tor-nätverket", "gui_settings_tor_bridges_label": "Broar hjälper din trafik att komma in i Tor-nätverket om Tor-åtkomst blockeras. Beroende på var du ansluter från kan en bro fungera bättre än en annan.", "moat_captcha_submit": "Skicka", "gui_autoconnect_description": "OnionShare bygger på Tor-nätverket, som drivs av tusentals frivilliga runt om i världen.", "gui_enable_autoconnect_checkbox": "Anslut till Tor automatiskt", "gui_autoconnect_failed_to_connect_to_tor": "Det gick inte att ansluta till Tor", "gui_autoconnect_trying_to_connect_to_tor": "Ansluter till Tor…", "gui_autoconnect_connection_error_msg": "Se till att du är ansluten till Internet.", "gui_autoconnect_bridge_description": "Du kanske kan ansluta med en bro om din internetanslutning är censurerad.", "gui_autoconnect_bridge_detect_automatic": "Bestäm mitt land från min IP-adress för broinställningar", "gui_autoconnect_bridge_detect_manual": "Välj mitt land för broinställningar manuellt", "gui_autoconnect_start": "Anslut till Tor", "gui_autoconnect_configure": "Nätverksinställningar", "gui_autoconnect_no_bridge": "Försök igen utan broar", "gui_autoconnect_try_again_without_a_bridge": "Försök igen utan broar", "gui_autoconnect_circumventing_censorship": "Löser anslutningsproblem…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Kringgår censur…", "gui_autoconnect_circumventing_censorship_starting_meek": "Etablerar meek-bro för domänfronting…", "gui_autoconnect_circumventing_censorship_got_bridges": "Broar etablerade. Återansluter till Tor…", "gui_general_settings_window_title": "Allmänt", "gui_autoconnect_bridge_setting_options": "Broinställningar", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Begär broar från Tors censur kringgående API…", "gui_autoconnect_could_not_connect_to_tor_api": "Det gick inte att ansluta till Tor API. Kontrollera att du är ansluten till internet innan du försöker igen.", "gui_close_tab_warning_chat_description": "Stäng flik som är värd för en chattserver?", "waitress_web_server_error": "Det gick inte att starta webbservern", "gui_chat_mode_explainer": "Chattläget låter dig chatta interaktivt med andra i Tor Browser.

    Chatthistoriken lagras inte i OnionShare. Chatthistoriken försvinner när du stänger Tor Browser.", "error_generic": "Det uppstod ett oväntat fel med OnionShare:\n{}", "gui_settings_license_label": "OnionShare är licensierad under GPL v3.
    Tredjepartslicenser kan ses här:
    https://github.com/onionshare/onionshare/tree/main/licenses", "mode_settings_persistent_autostart_on_launch_checkbox": "Starta denna onion-tjänst automatiskt när OnionShare startar" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/sw.json000066400000000000000000000473311521174352300271460ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} sio faili linalosomeka.", "other_page_loaded": "Anwani imepakiwa", "close_on_autostop_timer": "Imesimama kwa sababu ipo nje ya mda", "closing_automatically": "imesimamishwa kwa sababu uhamishaji wake umekamilika", "large_filesize": "Angalizo: kutuma sehemu kubwa itachukua masaa", "gui_drag_and_drop": "Weka faili na uanze kutumia", "gui_add": "Ongeza", "gui_add_files": "Weka faili", "gui_add_folder": "Weka folda", "gui_choose_items": "Chagua", "gui_share_start_server": "Anza kusanbaza", "gui_share_stop_server": "Acha kusambaza", "gui_share_stop_server_autostop_timer": "Acha kusambaza ({})", "gui_stop_server_autostop_timer_tooltip": "Inaishia kwa Auto-stop timer {}", "gui_start_server_autostart_timer_tooltip": "Auto-start timer inaishia kwa {}", "gui_receive_start_server": "Anza kupokea mfumo", "gui_receive_stop_server": "Acha kupokea mfumo", "gui_receive_stop_server_autostop_timer": "Acha kupokea mfumo ({} iliobaki)", "gui_copy_url": "Nakili anuani", "gui_canceled": "imetolewa", "gui_copied_url_title": "OnionShare anwani imenakiliwa", "gui_copied_url": "OnionShare anwani imenakiliwa kwenye ubao", "gui_waiting_to_start": "Ratiba ya kuanza {}. bofya kufuta.", "gui_please_wait": "inaanza...bonyeza kusitisha.", "gui_quit_warning_quit": "Acha", "zip_progress_bar_format": "kandamiza:%p%", "gui_settings_window_title": "mpangilio", "gui_settings_autoupdate_label": "angalia version mpya", "gui_settings_autoupdate_option": "nipe taarifa endapo version mpya inapatikana", "gui_settings_autoupdate_timestamp": "mara ya mwisho iliangaliwa: {}", "gui_settings_autoupdate_timestamp_never": "kanusho", "gui_settings_autoupdate_check_button": "angalia version mpya", "gui_settings_connection_type_label": "jinsi gani OnionShare inaunganishwa na Tor?", "gui_settings_connection_type_bundled_option": "Tumia version ya Tor ilio ndani ya 0nionShare", "gui_settings_connection_type_automatic_option": "jaribu usanidi wa moja kwa moja na Tor Browser", "gui_settings_connection_type_control_port_option": "unganisha kwa kutumia control port", "gui_settings_connection_type_socket_file_option": "unganisha kwa kutumia socket file", "gui_settings_connection_type_test_button": "jaribu kuunganisha kwa Tor", "gui_settings_control_port_label": "Control port", "gui_settings_socket_file_label": "Socket file", "gui_settings_socks_label": "SOCKS port", "gui_settings_authenticate_no_auth_option": "hakuna authentication, au vidakuzi authentication", "gui_settings_authenticate_password_option": "neno la siri", "gui_settings_password_label": "neno siri", "gui_settings_tor_bridges": "Unganisha kwa kutumia kiungio cha Tor?", "gui_settings_meek_lite_expensive_warning": "Onyo: Hizi viungio vya meek- azure ni gharama sana kwa Tor Project kuendeshea.

    unaweza tu kutumia endapo umeshindwa kuunganisha moja kwa moja, kupitia usafirishwaji, au kutumia viungio.", "gui_settings_tor_bridges_invalid": "Hakuna kiungio ulichoongeza kinafanya kazi. bofya mara mbili au ongeza kingine.", "gui_settings_button_save": "Hifadhi", "gui_settings_button_cancel": "Sitisha", "gui_settings_button_help": "Msaada", "settings_error_unknown": "Haiwezi kuunganishwa na kizuizi cha Tor kwa sababu mpangilio wako hauleti maana.", "settings_error_automatic": "Haiwezi kuunganishwa na kizuizi cha tor. Tor Browser( inapatikana kwenye tovuti ya torproject,org) inaendeshwa kwa muktadha?", "settings_error_socket_port": "Haiwezi kuunganishwa na kizuizi cha Tor {}:{}.", "settings_error_socket_file": "Haiwezi kuunganishwa na kizuizi cha Tor kwa kutumia socket file {}.", "settings_error_auth": "Imeunganishwa na {}: {} lakini sio halisi. Labda inaweza kuwa sio kizuizi cha Tor?", "settings_error_missing_password": "Imeunganishwa na kizuizi cha Tor, lakini inahitaji neno siri kuthibitisha.", "settings_error_unreadable_cookie_file": "Imeunganishwa na tor, lakini neno siri linaweza kuwa sio sahihi, au utumiaji wako haujaruhusiwa kusoma mafaili ya vidakuzi.", "settings_error_bundled_tor_not_supported": "Kutumia Tor version inayotokana na OnionShare haiwezi kufanya kazi kwa utengenezaji wa usanidi kwa Windows au macOS.", "settings_error_bundled_tor_timeout": "Inachukua mda mrefu kuunganisha na Tor. Labda haujaunganishwa na mtandao. au una mfumo usio sahihi?", "settings_error_bundled_tor_broken": "OnionShare haiwezi kuunganishwa na Tor:\n{}", "settings_test_success": "Imeunganishwa na msimamizi wa Tor. \n \nTor version: {} \nHusaidia huduma za onion za muda mfupi: {}. \nHusaidia authentication kwa mtumiaji: {}. \nHusaidia anwani za onion za kizazi kijacho: {}.", "error_tor_protocol_error": "Kuna makosa ya Tor:{}", "connecting_to_tor": "Unaunganishwa na mtandao wa Tor", "update_available": "OnionShare mpya nje.Click here to get it.

    unatumia {} na kipya {}.", "update_error_check_error": "Version mpya haiwezi kuangaliwa: labda haujaunganishwa na Tor, au tovuti OnionShare ipo chini?", "update_error_invalid_latest_version": "Haikuweza kuangaliwa kwa version mpya. Kwa sababu tovuti ya OnionShare inasema version ya karibuni haitambuliki '{}'…", "update_not_available": "Unaendesha OnionShare mpya.", "gui_tor_connection_ask": "Fungua mpangilio ili kupanga muunganisho wa Tor?", "gui_tor_connection_ask_open_settings": "Ndio", "gui_tor_connection_ask_quit": "Acha", "gui_tor_connection_error_settings": "Jaribu kubadilisha jinsi gani OnionShare inaunganishwa na network ya tor kwa mpangilio.", "gui_tor_connection_canceled": "Haijaunganishwa na Tor\n\nHakikisha mtandao wako umeunganishwa, halafu fungua OnionShare kuseti mpangilio wake kwa Tor.", "gui_tor_connection_lost": "Umetenganishwa na Tor.", "gui_server_started_after_autostop_timer": "auto-stop timer imetoka nje ya mda kabla server haijaanza. Tafadhali anza upya.", "gui_server_autostop_timer_expired": "Tayari muda wa auto-stop timer umekwiasha. Tafadhali rekebisha na uanze kusambaza.", "gui_server_autostart_timer_expired": "Wakati uliopangwa tayari umepita. Tafadhali irekebishe ili kuanza kusambaza.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Muda wa kuisha hauwezi kuwa sawa na muda wa kuanza. Tafadhali rekebisha ili kuanza kusambaza.", "gui_share_url_description": "Yeyote mwenye hizi anwani za OnionShare pamoja na alama za kipekee binafsi anaweza kupakua mafaili yako kwa kutumiaTor Browser: ", "gui_receive_url_description": "Yeyote mwenye hii anwani ya OnionShare na private key anawezaoakia mafaili katika kompyuta yako kwa kutumia Tor Browser: ", "gui_url_label_persistent": "Hii anuani inaweza kusimama.

    Hivyo unaweza kutumia baadae. (Unaweza kutumia mara moja , zima halafu tumia anuani inayoendelea kwenye mpangilio.)", "gui_url_label_stay_open": "Usambazaji huo hautoacha wenyewe.", "gui_url_label_onetime": "Huu usambazaji utasimama baada ya hitimisho la kwanza.", "gui_url_label_onetime_and_persistent": "Huu usambazaji hautosimama.

    Kila baada ya muda hii anuani itasimama. (ili kutumia anuani ya moja kwa moja, zima kwanza \"tumia anuani endelevu \" kwenye mpangilio.)", "gui_status_indicator_share_stopped": "Ipo tayari kwa kusambazwa", "gui_status_indicator_share_working": "Inaanza…", "gui_status_indicator_share_scheduled": "Imepangwa…", "gui_status_indicator_share_started": "Inasambaza", "gui_status_indicator_receive_stopped": "Tayari kwa kupokea", "gui_status_indicator_receive_working": "Inaanza…", "gui_status_indicator_receive_scheduled": "Imepangwa…", "gui_status_indicator_receive_started": "Kupokea", "gui_file_info": "{} faili, {}", "gui_file_info_single": "{} faili, {}", "history_in_progress_tooltip": "{} inaendelea", "history_completed_tooltip": "{} imekamilika", "error_cannot_create_data_dir": "Huwezi kuunda folda ya data ya Onionshare: {}", "gui_receive_mode_warning": "Pokea mode na uache watu wapakie mafaili kwenye kompyuta yako.

    Faili zingine zinaweza kuwa nzuri kwenye komyuta yako endapo utavifungua, fungua vitu vyako kwa watu unaowaamini tu, au kama unajua unachokifanya.", "gui_settings_language_label": "Lugha", "gui_settings_language_changed_notice": "Anzisha tena OnionShare kubadilisha lugha mpya.", "systray_menu_exit": "Acha", "systray_page_loaded_title": "Ukurasa unapakiwa", "systray_page_loaded_message": "Anuani ya OnionShare inapakiwa", "systray_share_started_title": "Imeanza Kusambazwa", "systray_share_started_message": "Imeanza kusambaza mafaili kwa mwingine", "systray_share_completed_title": "Imemaliza Kusambazwa", "systray_share_completed_message": "Imemaliza kutuma mafaili", "systray_share_canceled_title": "Kusambaza Imeghairishwa", "systray_share_canceled_message": "Mtu ameghairi kupokea faili zako", "systray_receive_started_title": "Imeanza Kupokea", "systray_receive_started_message": "Mtu anatuma mafaili kwako", "gui_all_modes_history": "Historia", "gui_all_modes_clear_history": "Toa Zote", "gui_all_modes_transfer_started": "Imeanza {}", "gui_all_modes_transfer_finished_range": "Imehamishwa {}-{}", "gui_all_modes_transfer_finished": "Imehamishwa {}", "gui_all_modes_transfer_canceled_range": "Imesitishwa {} - {}", "gui_all_modes_transfer_canceled": "Imesitishwa {}", "gui_all_modes_progress_complete": "%p%, {0:s} ilipita.", "gui_all_modes_progress_starting": "{0:s}, %p% (inahesabu)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Hakuna Faili Iliotumwa", "gui_share_mode_autostop_timer_waiting": "Inamaliza kutuma…", "gui_receive_mode_no_files": "Hakuna Faili Iliopokelewa", "gui_receive_mode_autostop_timer_waiting": "Inamalizia Kupokea…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_copy_client_auth": "Nakili private key", "gui_copied_client_auth_title": "Private Key imenakiliwa", "gui_copied_client_auth": "Private Key imenakiliwa kwenye ubao", "gui_show_qr_code": "Onyesha QR code", "gui_qr_label_url_title": "anuani ya OnionShare", "gui_qr_label_auth_string_title": "Funguo binafsi", "gui_reveal": "onyesha", "gui_hide": "ficha", "gui_please_wait_no_button": "Kuanza…", "gui_tor_settings_window_title": "mpangilio wa Tor", "gui_settings_controller_extras_label": "mpangilio wa Tor", "gui_settings_bridge_use_checkbox": "Tumia kiungio", "gui_settings_bridge_radio_builtin": "Chagua kiungio kilichoundwa", "gui_settings_version_label": "Unatumia OnionShare{}", "gui_settings_help_label": "Unahitaji msaada? Angalia docs.onionshare.org", "gui_autoconnect_bridge_detect_manual": "chagua nchi yangu kwa mpangilio wenyewe", "gui_autoconnect_no_bridge": "jaribu tena bila kiungio", "gui_autoconnect_circumventing_censorship_starting_circumvention": "kukwepa vikwazo vya udhibiti wa mtandao…", "gui_autoconnect_circumventing_censorship_starting_meek": "Kuanzisha meek bridge ya domain-fronting…", "gui_qr_code_dialog_title": "OnionShare QR code", "gui_receive_flatpak_data_dir": "Kwa sababu umepakua onionshare kwa kutumia flatpak, ni lazima uhifadhi faili kwenye folda ya ~/onionshare.", "gui_chat_stop_server": "Acha seva ya chat", "gui_chat_start_server": "Anza seva ya chat", "gui_file_selection_remove_all": "Ondoa zote", "gui_remove": "Toa", "incorrect_password": "Nywila imekosewa", "gui_dragdrop_sandbox_flatpak": "Kufanya sandbox flatpak salama zaidi , weka na ushushe kama haijasapotiwa. \" ongeza faili\"na \"ongeza folda\" kuchagua faili badala yake.", "gui_autoconnect_bridge_detect_automatic": "kutambua nchi yangu kutokana na Ip anuani yangu", "gui_autoconnect_try_again_without_a_bridge": "jaribu tena bila kiungio", "gui_autoconnect_circumventing_censorship": "kutatua tatizo la mawasiliano…", "gui_settings_tor_bridges_label": "Viungio vinakusaidia kuingiza mtandao wa Tor kuligana na wapi unaunganishwa kutoka kiungio kimoja ili kuweza kufanya kazi vizuri kuliko kiungio kingine.", "gui_autoconnect_description": "OnionShare inategemea mtandao wa Tor ulioendeshwa wa kujitolea.", "gui_enable_autoconnect_checkbox": "kuunganisha moja kwa moja na Tor", "gui_autoconnect_failed_to_connect_to_tor": "haiwezi kuunganishwa na Tor", "gui_autoconnect_trying_to_connect_to_tor": "unganisha na Tor…", "gui_autoconnect_connection_error_msg": "Hakikisha umeunganishwa na mtandao.", "gui_autoconnect_bridge_description": "Unaweza kuunganishwa kwa kutumia kiungo kama mtandao wako umedhibitiwa.", "gui_autoconnect_bridge_setting_options": "mpangilio wa kiungo", "gui_autoconnect_start": "unganisha Tor", "gui_autoconnect_configure": "mpangilio wa mtandao", "gui_autoconnect_circumventing_censorship_requesting_bridges": "kuomba kiungio kutoka kwa mzunguko wa udhibiti wa Tor API…", "gui_autoconnect_circumventing_censorship_got_bridges": "Kiungio kimeanzishwa. inaunganishwa tena na Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "haiwezi kuunganishwa na Tor API. hakikisha umeunganishwa na mtandao kabla ya kujaribu tena.", "gui_general_settings_window_title": "kuu", "gui_settings_bridge_none_radio_option": "Usitumie kiungio", "gui_settings_bridge_moat_radio_option": "Omba kiungio kutoka kwa torproject.org", "gui_settings_bridge_moat_button": "Omba kiungio kipya", "gui_settings_bridge_custom_radio_option": "Toa kiungio uliyojifunza kutoka kwa chanzo inayoaminika", "gui_settings_bridge_custom_placeholder": "andika address:port (moja kwa kila mstari)", "gui_settings_moat_bridges_invalid": "Haujaomba kiungio kutoka torproject.org.", "gui_settings_stop_active_tabs_label": "Kuna huduma zinazoendelea kwenye baadhi ya kurasa zako. \nHakikisha unasimamisha huduma zako zote ili kubadilisha mpangilio wa Tor.", "gui_server_doesnt_support_stealth": "Samahani, hii version ya Tor haiwezeshi vitu vilivyofichwa kwa makusudi( mtumiaji wa anthentication. Tafadhali jaribu version mpya ya Tor au tumia mode za\" uma\" na hazihitaji kuwa binafsi.", "gui_share_url_public_description": "Yeyote mwenye hii anwani ya OnionShare anaweza pakua mafaili yako kwa kutumia Tor Browser: ", "gui_website_url_description": "Yeyote mwenye hii anwani ya OnionShare na private key anaweza tembelea tovuti yako kwa kutumia Tor Browser: ", "gui_website_url_public_description": "Yeyote mwenye hii anwani ya OnionShare anaweza tembelea tovuti yako kwa kutumia Tor Browser: ", "gui_receive_url_public_description": "Yeyote mwenye hizi anwani za OnionShare anaweza pakia mafaili katika kompyuta yako kwa kutumiaTor Browser: ", "gui_chat_url_description": "Yeyote mwenye hizi anwani za OnionShare na private key anawezajiunga sehemu hii ya chat kwa kutumia Tor Browser: ", "gui_url_instructions_public_mode": "Tuma anuani ya OnionShare hapo chini:", "gui_client_auth_instructions": "Inayofuata, tuma Private key ili kuwezesha kutumia huduma za OnionShare:", "gui_status_indicator_chat_stopped": "Tayari kwa chat", "history_requests_tooltip": "{} ombi la tovuti", "gui_settings_theme_auto": "Auto", "gui_settings_theme_light": "Light", "gui_settings_theme_label": "Maudhui", "gui_settings_theme_dark": "Dark", "gui_color_mode_changed_notice": "Anzisha tena OnionShare kuon rangi mpya.", "gui_website_mode_no_files": "Hakuna Tovuti Iliopakiwa", "gui_new_tab_share_button": "Sambaza Faili", "gui_new_tab_receive_button": "Pokea Faili", "gui_new_tab_website_button": "Hifadhi Tovuti", "gui_new_tab_chat_button": "Chat Bila Kujulikana", "gui_main_page_share_button": "Anza Kusambaza", "gui_tab_name_share": "Sambaza", "gui_main_page_receive_button": "Anza Kupokea", "gui_tab_name_chat": "Chat", "gui_close_tab_warning_title": "Funga Ukurasa?", "gui_close_tab_warning_persistent_description": "Funga kurasa inayoendelea na kupoteza anuani ya onion inayotumia?", "gui_close_tab_warning_share_description": "Funga kurasa inayotuma mafaili?", "gui_close_tab_warning_receive_description": "Funga ukurasa unaopokea mafaili?", "gui_close_tab_warning_website_description": "Funga ule ukurasa unaoendesha tovuti?", "gui_close_tab_warning_cancel": "Sitisha", "gui_quit_warning_title": "Acha OnionShare?", "gui_quit_warning_description": "Acha na ufunge kurasa zote, hata kama bado kuna zinazosambaza?", "gui_quit_warning_cancel": "Sitisha", "mode_settings_persistent_checkbox": "Fungua huu ukurasa kama OnionShare imeanza", "mode_settings_public_checkbox": "OnionShare ni huduma ya umma (ina zima private key)", "mode_settings_autostart_timer_checkbox": "Anza huduma za onion kwa mda uliopangwa", "mode_settings_autostop_timer_checkbox": "Simamisha huduma za onion kwa mda uliopangwa", "mode_settings_share_autostop_sharing_checkbox": "Acha kusambaza baada ya faili kutumwa (sitisha kuruhusu upakuaji wa mafaili binafsi)", "mode_settings_receive_disable_text_checkbox": "Zima kuwasilisha maandishi", "mode_settings_receive_disable_files_checkbox": "Zima kupakia mafaili", "mode_settings_website_disable_csp_checkbox": "Usitumie maudhui ya Sera ya Usalama ( ruhusu tovuti yako kutumia sehemu ya tatu)", "mode_settings_website_custom_csp_checkbox": "Tuma taarifa zenye maudhui kuzingatia Sera ya Usalama kwa mtumiaji", "gui_rendezvous_cleanup_quit_early": "Acha Mapema", "moat_captcha_error": "Ufumbuzi usio sahihi. tafadhali jaribu tena.", "moat_solution_empty_error": "Weka alama kutoka kwenye picha", "mode_tor_not_connected_label": "OnionShare imunganishwa na mtandao wa Tor", "gui_close_tab_warning_close": "Sawa", "gui_tab_name_website": "Tovuti", "error_port_not_available": "Sakiti za OnionShare hazipatikani", "history_receive_read_message_button": "Soma Ujumbe", "gui_new_tab": "Kurasa Mpya", "mode_settings_receive_data_dir_label": "Hifadhi faili kwa", "mode_settings_receive_data_dir_browse_button": "Kuperuzi", "gui_chat_url_public_description": "Yeyote mwenye hizi anwani za OnionShare anaweza jiunga sehemu hii ya chat kwa kutumia Tor Browser: ", "gui_status_indicator_chat_started": "Mawasiliano", "gui_url_instructions": "Kwanza, tuma anuani ya OnionShare apo chini:", "gui_status_indicator_chat_working": "Inaanza…", "gui_status_indicator_chat_scheduled": "Imepangwa…", "gui_open_folder_error": "Huwezi kufungua folda kwa kutumia xsd-open. Faili lipo hapa:{}", "gui_new_tab_tooltip": "Fungua kurasa mpya", "gui_main_page_website_button": "Anza Kuendesha", "gui_main_page_chat_button": "Anza Mawasiliano", "gui_tab_name_receive": "Pokea", "mode_settings_advanced_toggle_show": "Onyesha mpangilio ulioboreshwa zaidi", "mode_settings_advanced_toggle_hide": "Ficha mpangilio ulioboreshwa", "mode_settings_title_label": "Kichwa cha habari kuu", "mode_settings_receive_webhook_url_checkbox": "Tumia taarifa webhook", "gui_rendezvous_cleanup": "subiri mzunguko wa Tor ufungwe ili kuwa na uhakika kama mafaili yako yamehamishwa.\n\ninaweza kuchukua dakika chache.", "moat_contact_label": "Wasiliana BridgeDB…", "moat_captcha_label": "Tatua ili CAPTCHA kuomba kiungio.", "moat_captcha_placeholder": "Weka wahusika kutoka kwa picha", "moat_captcha_reload": "Pakia upya", "moat_captcha_submit": "Wasilisha", "moat_bridgedb_error": "Haikuweza kuwasiliana na BridgeD." } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ta.json000066400000000000000000001245061521174352300271210ustar00rootroot00000000000000{ "gui_tor_connection_ask_quit": "வெளியேறு", "gui_file_selection_remove_all": "அனைத்தையும் அகற்று", "gui_choose_items": "தேர்வு", "gui_canceled": "ரத்துசெய்யப்பட்டது", "gui_settings_button_save": "சேமி", "gui_settings_button_cancel": "நிராகரி", "gui_settings_button_help": "உதவி", "gui_all_modes_clear_history": "அனைத்தையும் தீர்த்துவை", "gui_tab_name_share": "பகிர்", "gui_tab_name_receive": "பெறு", "gui_tab_name_chat": "அரட்டை", "gui_close_tab_warning_cancel": "நிராகரி", "moat_captcha_placeholder": "படத்திலிருக்கும் எழுத்துகளை உள்ளிடுங்கள்", "moat_solution_empty_error": "படத்திலிருக்கும் எழுத்துகளை உள்ளிடுங்கள்", "gui_status_indicator_receive_working": "தொடங்குகிறது…", "gui_status_indicator_chat_working": "தொடங்குகிறது…", "gui_close_tab_warning_close": "சரி", "gui_settings_authenticate_password_option": "கடவுச்சொல்", "gui_settings_password_label": "கடவுச்சொல்", "gui_hide": "மறை", "gui_quit_warning_cancel": "நிராகரி", "gui_tab_name_website": "இணையதளம்", "gui_settings_autoupdate_timestamp_never": "ஒருபோதும் இல்லை", "gui_settings_theme_dark": "கருமை", "gui_new_tab": "புதிய பக்கம்", "gui_settings_theme_light": "வெளிச்சம்", "gui_settings_bridge_moat_radio_option": "torproject.org இலிருந்து bridge கோருங்கள்", "gui_settings_bridge_custom_placeholder": "முகவரி:முனை தட்டச்சிடுங்கள் (ஒரு வரிசைக்கு ஒன்று)", "mode_settings_receive_data_dir_browse_button": "உலாவு", "moat_captcha_reload": "மீளேற்று", "moat_captcha_submit": "சமர்ப்பிக்கவும்", "gui_please_wait_no_button": "தொடங்குகிறது…", "gui_add": "சேர்க்க", "gui_remove": "நீக்கு", "gui_autoconnect_start": "Tor உடன் இணை", "gui_settings_window_title": "அமைப்புகள்", "gui_general_settings_window_title": "பொது", "gui_settings_autoupdate_label": "புதிய Versionக்கு Check செய்யவும்", "gui_tor_connection_ask_open_settings": "ஆம்", "gui_settings_language_label": "மொழி", "gui_settings_theme_label": "கருப்பொருள்", "gui_status_indicator_receive_started": "பெறுகிறது", "gui_settings_theme_auto": "தானியங்கி", "systray_menu_exit": "வெளியேறு", "gui_all_modes_history": "வரலாறு", "gui_quit_warning_quit": "வெளியேறு", "gui_status_indicator_share_working": "தொடங்குகிறது…", "gui_autoconnect_configure": "பிணைய அமைப்புகள்", "gui_share_stop_server_autostop_timer": "பகிர்வை நிறுத்துங்கள் ({})", "gui_stop_server_autostop_timer_tooltip": "ஆட்டோ-ச்டாப் நேரங்குறிகருவி {} இல் முடிகிறது", "gui_start_server_autostart_timer_tooltip": "ஆட்டோ-ச்டார்ட் நேரங்குறிகருவி {} இல் முடிகிறது", "gui_receive_start_server": "பயன்முறையைப் பெறத் தொடங்குங்கள்", "gui_receive_stop_server": "பயன்முறையைப் பெறுவதை நிறுத்து", "gui_receive_stop_server_autostop_timer": "பெறும் பயன்முறையை நிறுத்துங்கள் ({} மீதமுள்ள)", "gui_settings_connection_type_socket_file_option": "சாக்கெட் கோப்பைப் பயன்படுத்தி இணைக்கவும்", "gui_settings_connection_type_automatic_option": "டோர் உலாவியுடன் தானாக கட்டமைப்பை முயற்சிக்கவும்", "gui_settings_controller_extras_label": "TOR அமைப்புகள்", "gui_settings_authenticate_no_auth_option": "ஏற்பு இல்லை, அல்லது குக்கீ ஏற்பு இல்லை", "gui_tor_settings_window_title": "TOR அமைப்புகள்", "gui_enable_autoconnect_checkbox": "TOR உடன் தானாக இணைக்கவும்", "gui_autoconnect_failed_to_connect_to_tor": "டோருடன் இணைக்க முடியவில்லை", "gui_settings_socket_file_label": "சாக்கெட் கோப்பு", "gui_settings_socks_label": "சாக்ச் துறைமுகம்", "gui_settings_tor_bridges": "டோர் பாலத்தைப் பயன்படுத்தி இணைக்கவா?", "gui_close_tab_warning_receive_description": "கோப்புகளைப் பெறும் தாவலை மூடு?", "gui_close_tab_warning_website_description": "வலைத்தளத்தை புரவலன் செய்யும் தாவலை மூடு?", "gui_close_tab_warning_share_description": "கோப்புகளை அனுப்பும் தாவலை மூடு?", "systray_page_loaded_message": "வெங்காய முகவரி ஏற்றப்பட்டது", "gui_status_indicator_receive_stopped": "நிறுத்தப்பட்டது", "gui_all_modes_progress_eta": "{0: с}, இது: {1: с}, %n %", "hours_first_letter": "ம", "gui_autoconnect_circumventing_censorship": "இணைப்பு சிக்கல்களைத் தீர்ப்பது…", "mode_settings_advanced_toggle_show": "மேம்பட்ட அமைப்புகளைக் காட்டு", "update_error_invalid_latest_version": "புதிய பதிப்பைச் சரிபார்க்க முடியவில்லை: வெங்காயர் வலைத்தளம் அண்மைக் கால பதிப்பு அடையாளம் காண முடியாத '{}' என்று கூறுகிறது…", "gui_settings_moat_bridges_invalid": "Torproject.org இலிருந்து ஒரு பாலத்தை நீங்கள் இன்னும் கோரவில்லை.", "gui_main_page_share_button": "பகிர்வைத் தொடங்குங்கள்", "gui_receive_mode_no_files": "இதுவரை கோப்புகள் எதுவும் பெறப்படவில்லை", "gui_url_label_onetime_and_persistent": "இந்தப் பங்கு தானாக நிறுத்தப்படாது.

    ஒவ்வொரு அடுத்தடுத்த பங்கும் முகவரியை மீண்டும் பயன்படுத்தும். (ஒரு முறை முகவரிகளைப் பயன்படுத்த, அமைப்புகளில் \"வெங்காயவைத் தொடங்கும்போது எப்போதும் இந்தத் தாவலைத் திறக்கவும்\" அணைக்கவும்)", "gui_autoconnect_connection_error_msg": "நீங்கள் இணையத்துடன் இணைக்கப்பட்டுள்ளீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.", "gui_settings_bridge_radio_builtin": "உள்ளமைக்கப்பட்ட பாலத்தைத் தேர்ந்தெடுக்கவும்", "days_first_letter": "டி", "gui_new_tab_chat_button": "அநாமதேயமாக அரட்டையடிக்கவும்", "gui_new_tab_share_button": "கோப்புகளைப் பகிரவும்", "gui_settings_connection_type_control_port_option": "கட்டுப்பாட்டு துறைமுகத்தைப் பயன்படுத்தி இணைக்கவும்", "mode_tor_not_connected_label": "வெங்காயம் டோர் நெட்வொர்க்குடன் இணைக்கப்படவில்லை", "gui_autoconnect_could_not_connect_to_tor_api": "TOR பநிஇ உடன் இணைக்க முடியவில்லை. மீண்டும் முயற்சிக்கும் முன் நீங்கள் இணையத்துடன் இணைக்கப்பட்டுள்ளீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.", "gui_close_tab_warning_title": "தாவலை மூடு?", "gui_autoconnect_no_bridge": "பாலங்கள் இல்லாமல் மீண்டும் முயற்சிக்கவும்", "gui_share_url_public_description": " யாராவது இந்த வெங்காய முகவரியுடன் பதிவிறக்கம் டோர் உலாவியைப் பயன்படுத்தி உங்கள் கோப்புகள் : ", "gui_new_tab_website_button": "ஒரு வலைத்தளத்தை புரவலன் செய்யுங்கள்", "gui_close_tab_warning_persistent_description": "தொடர்ச்சியான தாவலை மூடி, அது பயன்படுத்தும் வெங்காய முகவரியை இழக்கிறீர்களா?", "history_in_progress_tooltip": "{} செயலில் உள்ளது", "gui_show_qr_code": "QR குறியீட்டைக் காட்டு", "gui_add_files": "கோப்புகளைச் சேர்", "gui_chat_start_server": "அரட்டை சேவையகத்தைத் தொடங்கவும்", "gui_chat_stop_server": "அரட்டை சேவையகத்தை நிறுத்துங்கள்", "gui_autoconnect_try_again_without_a_bridge": "பாலங்கள் இல்லாமல் மீண்டும் முயற்சிக்கவும்", "gui_autoconnect_circumventing_censorship_starting_circumvention": "தணிக்கை மீறுதல்…", "gui_autoconnect_circumventing_censorship_starting_meek": "டொமைன்-கைவினைக்கு சாந்தகுணத்தை நிறுவுதல்…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "TOR தணிக்கை சுற்றறிக்கை பநிஇ இலிருந்து பாலங்களை கோருகிறது…", "gui_settings_connection_type_test_button": "TOR க்கு சோதனை இணைப்பு", "gui_settings_control_port_label": "கட்டுப்பாட்டு துறை", "gui_settings_bridge_moat_button": "புதிய பாலம் கோருங்கள்", "gui_settings_bridge_custom_radio_option": "நம்பகமான மூலத்திலிருந்து நீங்கள் கற்றுக்கொண்ட ஒரு பாலத்தை வழங்கவும்", "gui_url_instructions_public_mode": "வெங்காய முகவரியை கீழே அனுப்பவும்:", "gui_all_modes_transfer_started": "தொடங்கியது {}", "gui_all_modes_progress_complete": "%p%, {0:s} கழிந்தது.", "gui_all_modes_progress_starting": "{0:s}, % p % (கணக்கிடுதல்)", "gui_share_mode_no_files": "கோப்புகள் இதுவரை அனுப்பப்படவில்லை", "gui_share_mode_autostop_timer_waiting": "அனுப்புதல் முடிக்கிறது…", "mode_settings_share_autostop_sharing_checkbox": "கோப்புகள் அனுப்பப்பட்ட பிறகு பகிர்வதை நிறுத்துங்கள் (தனிப்பட்ட கோப்புகளைப் பதிவிறக்க அனுமதிக்க தேர்வு செய்யவும்)", "mode_settings_receive_data_dir_label": "கோப்புகளை சேமிக்கவும்", "mode_settings_website_disable_csp_checkbox": "இயல்புநிலை உள்ளடக்க பாதுகாப்பு கொள்கை தலைப்பை அனுப்ப வேண்டாம் (மூன்றாம் தரப்பு ஆதாரங்களைப் பயன்படுத்த உங்கள் வலைத்தளத்தை அனுமதிக்கிறது)", "settings_error_bundled_tor_broken": "வெங்காயர் டோர் உடன் இணைக்க முடியவில்லை:\n {}", "gui_rendezvous_cleanup_quit_early": "ஆரம்பத்தில் விலகுங்கள்", "error_port_not_available": "வெங்காயர் துறைமுகம் கிடைக்கவில்லை", "history_receive_read_message_button": "செய்தியைப் படியுங்கள்", "error_tor_protocol_error": "TOR உடன் பிழை இருந்தது: {}", "moat_bridgedb_error": "பிரிட்செட் பி தொடர்பு கொள்ள முடியவில்லை.", "gui_website_url_public_description": " யாராவது இந்த வெங்காய முகவரியுடன் ஐப் பார்வையிடலாம் டோர் உலாவியைப் பயன்படுத்தி உங்கள் வலைத்தளம் : ", "gui_please_wait": "தொடங்குகிறது… ரத்து செய்ய சொடுக்கு செய்க.", "gui_receive_url_public_description": " யாராவது இந்த வெங்காய முகவரியுடன் பதிவேற்றலாம் டோர் உலாவி ஐப் பயன்படுத்தி உங்கள் கணினியில் கோப்புகள்: ", "gui_share_url_description": " எவரும் இந்த வெங்காய முகவரி மற்றும் தனிப்பட்ட விசையுடன் பதிவிறக்கம் டோர் உலாவி ஐப் பயன்படுத்தி உங்கள் கோப்புகள்: ", "gui_close_tab_warning_chat_description": "அரட்டை சேவையகத்தை புரவலன் செய்யும் தாவலை மூடு?", "gui_settings_help_label": "உதவி தேவையா? docs.onionshare.org ஐப் பார்க்கவும்", "gui_qr_label_url_title": "வெங்காய முகவரி", "gui_settings_meek_lite_expensive_warning": "எச்சரிக்கை: டோர் திட்டம் இயங்குவதற்கு சாந்தகுணமுள்ள ஏழ்நிலை பாலங்கள் மிகவும் விலை உயர்ந்தவை.", "update_available": "புதிய வெங்காயம் அவுட். அதைப் பெற இங்கே சொடுக்கு செய்க .

    நீங்கள் {} ஐப் பயன்படுத்துகிறீர்கள், மேலும் அண்மை காலத்தது {}.", "update_not_available": "நீங்கள் அண்மைக் கால வெங்காயத்தை இயக்குகிறீர்கள்.", "gui_tor_connection_lost": "TOR இலிருந்து துண்டிக்கப்பட்டது.", "gui_chat_url_description": " எவரும் இந்த வெங்காய முகவரி மற்றும் தனியார் விசையுடன் இந்த அரட்டை அறையில் சேரலாம் டோர் உலாவி ஐப் பயன்படுத்தி: ", "gui_open_folder_error": "XDG-OPEN உடன் கோப்புறையைத் திறக்க முடியவில்லை. கோப்பு இங்கே உள்ளது: {}", "gui_settings_language_changed_notice": "புதிய மொழிக்கு மாற்ற வெங்காயத்தை மறுதொடக்கம் செய்யுங்கள்.", "gui_color_mode_changed_notice": "புதிய வண்ணங்களைக் காண வெங்காயத்தை மறுதொடக்கம் செய்யுங்கள்.", "systray_page_loaded_title": "பக்கம் ஏற்றப்பட்டது", "systray_share_started_title": "பகிர்வு தொடங்கியது", "systray_share_canceled_title": "பகிர்வு ரத்து செய்யப்பட்டது", "systray_share_canceled_message": "உங்கள் கோப்புகளைப் பெறுவதை யாரோ ரத்து செய்தனர்", "systray_receive_started_title": "பெறுதல் தொடங்கியது", "gui_website_mode_no_files": "இதுவரை எந்த வலைத்தளமும் பகிரப்படவில்லை", "gui_receive_mode_autostop_timer_waiting": "பெறுவதை முடித்தல்…", "minutes_first_letter": "மீ", "seconds_first_letter": "கள்", "gui_new_tab_tooltip": "புதிய தாவலைத் திறக்கவும்", "gui_new_tab_receive_button": "கோப்புகளைப் பெறுக", "gui_website_url_description": " யாராவது இந்த வெங்காய முகவரி மற்றும் தனிப்பட்ட விசையுடன் பார்வையிடலாம் டோர் உலாவி ஐப் பயன்படுத்தி உங்கள் வலைத்தளம்: ", "gui_url_label_onetime": "இந்த பங்கு முதலில் முடிந்ததும் நின்றுவிடும்.", "gui_status_indicator_chat_started": "அரட்டை", "not_a_readable_file": "{0:s} என்பது படிக்கக்கூடிய கோப்பு அல்ல.", "other_page_loaded": "முகவரி ஏற்றப்பட்டது", "incorrect_password": "தவறான கடவுச்சொல்", "close_on_autostop_timer": "ஆட்டோ-ச்டாப் நேரங்குறிகருவி முடிந்ததால் நிறுத்தப்பட்டது", "closing_automatically": "பரிமாற்றம் முடிந்ததால் நிறுத்தப்பட்டது", "large_filesize": "எச்சரிக்கை: பெரிய பங்கை அனுப்புவதற்கு மணிநேரம் ஆகலாம்", "gui_drag_and_drop": "பகிர்வைத் தொடங்க கோப்புகள் மற்றும் கோப்புறைகளை இழுத்து விடுங்கள்", "gui_add_folder": "கோப்புறையைச் சேர்", "gui_dragdrop_sandbox_flatpak": "பிளாட்பாக் சாண்ட்பாக்சை மிகவும் பாதுகாப்பாக மாற்ற, இழுத்து துளி ஆதரிக்கப்படவில்லை. அதற்கு பதிலாக கோப்புகளைத் தேர்ந்தெடுக்க \"கோப்புகளைச் சேர்\" மற்றும் \"கோப்புறையைச் சேர்\" பொத்தான்களைப் பயன்படுத்தவும்.", "gui_share_start_server": "பகிர்வைத் தொடங்குங்கள்", "gui_share_stop_server": "பகிர்வை நிறுத்துங்கள்", "gui_receive_flatpak_data_dir": "பிளாட்பேக்கைப் பயன்படுத்தி வெங்காயத்தை நிறுவியதால், ~/வெங்காயத்தில் உள்ள கோப்புறையில் கோப்புகளை சேமிக்க வேண்டும்.", "gui_copy_url": "முகவரி நகல்", "gui_copy_client_auth": "தனிப்பட்ட விசையை நகலெடுக்கவும்", "gui_copied_url_title": "வெங்காய முகவரி நகலெடுக்கப்பட்டது", "gui_copied_url": "கிளிப்போர்டுக்கு நகலெடுக்கப்பட்ட வெங்காயம்", "gui_copied_client_auth_title": "தனியார் விசை நகலெடுக்கப்பட்டது", "gui_copied_client_auth": "தனியார் விசை கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது", "gui_qr_code_dialog_title": "வெங்காயம் QR குறியீடு", "gui_qr_label_auth_string_title": "தனிப்பட்ட விசை", "gui_reveal": "வெளிப்படுத்துங்கள்", "gui_waiting_to_start": "{} இல் தொடங்க திட்டமிடப்பட்டுள்ளது. ரத்து செய்யச் சொடுக்கு செய்க.", "zip_progress_bar_format": "சுருக்க: %p%", "gui_autoconnect_description": "வெங்காயர் தன்னார்வலத்தால் இயக்கப்படும் டோர் நெட்வொர்க்கை நம்பியுள்ளது.", "gui_autoconnect_trying_to_connect_to_tor": "TOR உடன் இணைத்தல்…", "gui_autoconnect_bridge_description": "உங்கள் இணைய இணைப்பு தணிக்கை செய்யப்பட்டால் நீங்கள் ஒரு பாலத்தைப் பயன்படுத்தி இணைக்க முடியும்.", "gui_autoconnect_bridge_detect_automatic": "பாலம் அமைப்புகளுக்கான எனது ஐபி முகவரியிலிருந்து எனது நாட்டைத் தீர்மானிக்கவும்", "gui_autoconnect_bridge_detect_manual": "பாலம் அமைப்புகளுக்கு கைமுறையாக எனது நாட்டைத் தேர்ந்தெடுக்கவும்", "gui_autoconnect_bridge_setting_options": "பாலம் அமைப்புகள்", "gui_autoconnect_circumventing_censorship_got_bridges": "பாலங்கள் நிறுவப்பட்டன. TOR உடன் மீண்டும் இணைகிறது…", "gui_settings_autoupdate_option": "புதிய பதிப்பு கிடைக்கும்போது எனக்கு அறிவிக்கவும்", "gui_settings_autoupdate_timestamp": "கடைசியாக சரிபார்க்கப்பட்டது: {}", "gui_settings_autoupdate_check_button": "புதிய பதிப்பை சரிபார்க்கவும்", "gui_settings_connection_type_label": "வெங்காயம் எவ்வாறு TOR உடன் இணைக்க வேண்டும்?", "gui_settings_connection_type_bundled_option": "வெங்காயத்தில் கட்டப்பட்ட TOR பதிப்பைப் பயன்படுத்தவும்", "gui_settings_tor_bridges_label": "டோர் அணுகல் தடுக்கப்பட்டால் உங்கள் போக்குவரத்து TOR நெட்வொர்க்கை உள்ளிட பாலங்கள் உதவுகின்றன. நீங்கள் எங்கிருந்து இணைக்கிறீர்கள் என்பதைப் பொறுத்து, ஒரு பாலம் மற்றொன்றை விட சிறப்பாக செயல்படக்கூடும்.", "gui_settings_bridge_use_checkbox": "ஒரு பாலத்தைப் பயன்படுத்தவும்", "gui_settings_bridge_none_radio_option": "பாலங்களைப் பயன்படுத்த வேண்டாம்", "gui_settings_tor_bridges_invalid": "நீங்கள் வேலையைச் சேர்த்த பாலங்கள் எதுவும் இல்லை. அவற்றை இருமுறை சரிபார்க்கவும் அல்லது மற்றவர்களைச் சேர்க்கவும்.", "gui_settings_stop_active_tabs_label": "உங்கள் சில தாவல்களில் சேவைகள் உள்ளன.\n உங்கள் TOR அமைப்புகளை மாற்ற அனைத்து சேவைகளையும் நீங்கள் நிறுத்த வேண்டும்.", "gui_settings_version_label": "நீங்கள் வெங்காயத்தைப் பயன்படுத்துகிறீர்கள் {}", "settings_test_success": "TOR கட்டுப்படுத்தியுடன் இணைக்கப்பட்டுள்ளது.\n\n TOR பதிப்பு: {}\n இடைக்கால வெங்காய சேவைகளை ஆதரிக்கிறது: {}.\n கிளையன்ட் அங்கீகாரத்தை ஆதரிக்கிறது: {}.\n நெக்ச்ட்-செனரலை ஆதரிக்கிறது .ஒனியன் முகவரிகள்: {}.", "connecting_to_tor": "TOR நெட்வொர்க்குடன் இணைக்கிறது", "update_error_check_error": "புதிய பதிப்பைச் சரிபார்க்க முடியவில்லை: ஒருவேளை நீங்கள் டோருடன் இணைக்கப்படவில்லை, அல்லது வெங்காய வலைத்தளம் குறைந்துவிட்டதா?", "gui_tor_connection_ask": "TOR உடனான இணைப்பை வரிசைப்படுத்த அமைப்புகளைத் திறக்கவா?", "gui_tor_connection_error_settings": "அமைப்புகளில் டோர் நெட்வொர்க்குடன் வெங்காயம்சேர் எவ்வாறு இணைகிறது என்பதை மாற்ற முயற்சிக்கவும்.", "gui_tor_connection_canceled": "டோருடன் இணைக்க முடியவில்லை.\n\n நீங்கள் இணையத்துடன் இணைக்கப்பட்டுள்ளீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள், பின்னர் வெங்காயத்தை மீண்டும் திறந்து அதன் இணைப்பை TOR உடன் அமைக்கவும்.", "gui_server_started_after_autostop_timer": "சேவையகம் தொடங்குவதற்கு முன்பு ஆட்டோ-ச்டாப் நேரங்குறிகருவி வெளியேறியது. தயவுசெய்து ஒரு புதிய பங்கை உருவாக்குங்கள்.", "gui_server_autostop_timer_expired": "ஆட்டோ-ச்டாப் நேரங்குறிகருவி ஏற்கனவே முடிந்துவிட்டது. பகிர்வைத் தொடங்க அதை சரிசெய்யவும்.", "gui_server_autostart_timer_expired": "திட்டமிடப்பட்ட நேரம் ஏற்கனவே கடந்துவிட்டது. பகிர்வைத் தொடங்க அதை சரிசெய்யவும்.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "ஆட்டோ-ச்டாப் நேரம் ஆட்டோ-ச்டார்ட் நேரத்தை விட ஒரே மாதிரியாகவோ அல்லது முந்தையதாகவோ இருக்க முடியாது. பகிர்வைத் தொடங்க அதை சரிசெய்யவும்.", "gui_server_doesnt_support_stealth": "மன்னிக்கவும், TOR இன் இந்த பதிப்பு திருட்டுத்தனத்தை ஆதரிக்காது (கிளையன்ட் அங்கீகாரம்). TOR இன் புதிய பதிப்பில் முயற்சிக்கவும், அல்லது தனிப்பட்டதாக இருக்க தேவையில்லை என்றால் 'பொது' பயன்முறையைப் பயன்படுத்தவும்.", "gui_receive_url_description": " எவரும் இந்த வெங்காய முகவரி மற்றும் தனிப்பட்ட விசையுடன் பதிவேற்றலாம் டோர் உலாவி ஐப் பயன்படுத்தி உங்கள் கணினியில் கோப்புகள்: ", "gui_chat_url_public_description": " எவரும் இந்த வெங்காய முகவரியுடன் இந்த அரட்டை அறையில் சேரலாம் டோர் உலாவியைப் பயன்படுத்தி : ", "gui_url_label_persistent": "இந்தப் பங்கு தானாக நிறுத்தப்படாது.

    ஒவ்வொரு அடுத்தடுத்த பங்கும் முகவரியை மீண்டும் பயன்படுத்துகின்றன. (ஒரு முறை முகவரிகளைப் பயன்படுத்த, அமைப்புகளில் \"வெங்காயவைத் தொடங்கும்போது எப்போதும் இந்தத் தாவலைத் திறக்கவும்\".)", "gui_url_label_stay_open": "இந்த பங்கு தானாக நிறுத்தப்படாது.", "gui_url_instructions": "முதலில், வெங்காய முகவரியை கீழே அனுப்பவும்:", "gui_client_auth_instructions": "அடுத்து, உங்கள் வெங்காய சேவைக்கு அணுகலை அனுமதிக்க தனிப்பட்ட விசையை அனுப்பவும்:", "gui_status_indicator_share_stopped": "நிறுத்தப்பட்டது", "gui_status_indicator_share_scheduled": "திட்டமிடப்பட்டுள்ளது…", "gui_status_indicator_share_started": "பகிர்வு", "gui_status_indicator_receive_scheduled": "திட்டமிடப்பட்டுள்ளது…", "gui_status_indicator_chat_stopped": "நிறுத்தப்பட்டது", "gui_status_indicator_chat_scheduled": "திட்டமிடப்பட்டுள்ளது…", "gui_file_info": "{} கோப்புகள், {}", "gui_file_info_single": "{} கோப்பு, {}", "history_completed_tooltip": "{} நிறைவு", "history_requests_tooltip": "{} வலை கோரிக்கைகள்", "error_cannot_create_data_dir": "வெங்காய தரவு கோப்புறையை உருவாக்க முடியவில்லை: {}", "gui_receive_mode_warning": "பயன்முறையைப் பெறுங்கள் உங்கள் கணினியில் கோப்புகளைப் பதிவேற்ற மக்களை அனுமதிக்கிறது.

    சில கோப்புகள் உங்கள் கணினியைத் திறந்தால் அவற்றைக் கட்டுப்படுத்தக்கூடும். நீங்கள் நம்பும் நபர்களிடமிருந்து மட்டுமே விசயங்களைத் திறக்கவும், அல்லது நீங்கள் என்ன செய்கிறீர்கள் என்பது உங்களுக்குத் தெரிந்தால். ", "gui_chat_mode_explainer": "டோர் உலாவியில், மற்றவர்களுடன் ஊடாடும் வகையில் அரட்டையடிக்க அரட்டை பயன்முறை உங்களை அனுமதிக்கிறது.

    அரட்டை வரலாறு வெங்காயத்தில் சேமிக்கப்படவில்லை. நீங்கள் டோர் உலாவியை மூடும்போது அரட்டை வரலாறு மறைந்துவிடும். ", "systray_share_started_message": "ஒருவருக்கு கோப்புகளை அனுப்பத் தொடங்குகிறது", "systray_share_completed_title": "பகிர்வு முழுமையானது", "systray_share_completed_message": "கோப்புகளை அனுப்பியது", "systray_receive_started_message": "யாரோ உங்களுக்கு கோப்புகளை அனுப்புகிறார்கள்", "gui_main_page_receive_button": "பெறத் தொடங்குங்கள்", "gui_main_page_website_button": "ஓச்டிங் தொடங்கவும்", "gui_main_page_chat_button": "அரட்டையடிக்கத் தொடங்குங்கள்", "gui_quit_warning_title": "வெங்காயத்தை விட்டு வெளியேறவா?", "gui_quit_warning_description": "அவற்றில் சிலவற்றில் பகிர்வு செயலில் இருந்தாலும், எல்லா தாவல்களையும் விட்டுவிட்டு மூடுங்கள்?", "mode_settings_advanced_toggle_hide": "மேம்பட்ட அமைப்புகளை மறைக்கவும்", "mode_settings_title_label": "தனிப்பயன் தலைப்பு", "mode_settings_persistent_checkbox": "வெங்காயவைத் தொடங்கும்போது எப்போதும் இந்த தாவலைத் திறக்கவும் (வெங்காய முகவரி அப்படியே இருக்கும்)", "mode_settings_public_checkbox": "இது ஒரு பொது வெங்காய பணி (தனியார் விசையை முடக்குகிறது)", "mode_settings_autostart_timer_checkbox": "திட்டமிடப்பட்ட நேரத்தில் வெங்காய சேவையைத் தொடங்கவும்", "mode_settings_autostop_timer_checkbox": "திட்டமிடப்பட்ட நேரத்தில் வெங்காய சேவையை நிறுத்துங்கள்", "mode_settings_receive_disable_text_checkbox": "சமர்ப்பிக்கும் உரையை முடக்கு", "mode_settings_receive_disable_files_checkbox": "பதிவேற்றும் கோப்புகளை முடக்கு", "mode_settings_receive_webhook_url_checkbox": "அறிவிப்பு வெப்ஊக் பயன்படுத்தவும்", "mode_settings_website_custom_csp_checkbox": "தனிப்பயன் உள்ளடக்க பாதுகாப்பு கொள்கை தலைப்பை அனுப்பவும்", "gui_all_modes_transfer_finished_range": "மாற்றப்பட்டது {} - {}", "gui_all_modes_transfer_finished": "மாற்றப்பட்டது {}", "gui_all_modes_transfer_canceled_range": "ரத்துசெய்யப்பட்டது {} - {}", "gui_all_modes_transfer_canceled": "ரத்துசெய்யப்பட்டது {}", "settings_error_unknown": "உங்கள் அமைப்புகள் அர்த்தமல்ல என்பதால் டோர் கன்ட்ரோலருடன் இணைக்க முடியாது.", "settings_error_automatic": "TOR கட்டுப்படுத்தியுடன் இணைக்க முடியவில்லை. டோர் உலாவி (Torproject.org இலிருந்து கிடைக்கிறது) பின்னணியில் இயங்குகிறதா?", "settings_error_socket_port": "{}:{} இல் டோர் கட்டுப்படுத்தியுடன் இணைக்க முடியாது.", "settings_error_socket_file": "{} சாக்கெட் கோப்பைப் பயன்படுத்தி டோர் கட்டுப்படுத்தியுடன் இணைக்க முடியாது.", "settings_error_auth": "{}: {With உடன் இணைக்கப்பட்டுள்ளது, ஆனால் அங்கீகரிக்க முடியாது. ஒருவேளை இது ஒரு டோர் கட்டுப்படுத்தி அல்லவா?", "settings_error_missing_password": "டோர் கன்ட்ரோலருடன் இணைக்கப்பட்டுள்ளது, ஆனால் அங்கீகரிக்க கடவுச்சொல் தேவைப்படுகிறது.", "settings_error_unreadable_cookie_file": "TOR கட்டுப்படுத்தியுடன் இணைக்கப்பட்டுள்ளது, ஆனால் கடவுச்சொல் தவறாக இருக்கலாம், அல்லது உங்கள் பயனருக்கு குக்கீ கோப்பைப் படிக்க அனுமதிக்கப்படவில்லை.", "settings_error_bundled_tor_not_supported": "வெங்காயவாதியுடன் வரும் TOR பதிப்பைப் பயன்படுத்துவது சாளரங்கள் அல்லது மேகோசில் உருவாக்குபவர் பயன்முறையில் வேலை செய்யாது.", "settings_error_bundled_tor_timeout": "TOR உடன் இணைக்க அதிக நேரம் எடுத்துக்கொள்வது. ஒருவேளை நீங்கள் இணையத்துடன் இணைக்கப்படவில்லை, அல்லது தவறான கணினி கடிகாரத்தைக் கொண்டிருக்கலாமா?", "gui_rendezvous_cleanup": "உங்கள் கோப்புகள் மாற்றப்பட்டுள்ளன என்பதை உறுதிப்படுத்த டோர் சுற்றுகள் மூடப்படுவதற்கு காத்திருக்கிறது.\n\n இதற்கு சில நிமிடங்கள் ஆகலாம்.", "moat_contact_label": "பிரிட்ச்ட்பி தொடர்பு கொள்ளுங்கள்…", "moat_captcha_label": "ஒரு பாலம் கோர கேப்ட்சாவை தீர்க்கவும்.", "moat_captcha_error": "தவறான தீர்வு. மீண்டும் முயற்சிக்கவும்.", "waitress_web_server_error": "வலை சேவையகத்தைத் தொடங்குவதில் சிக்கல் இருந்தது", "error_generic": "வெங்காயத்தில் எதிர்பாராத பிழை ஏற்பட்டது: \n{}", "mode_settings_persistent_autostart_on_launch_checkbox": "வெங்காயர் தொடங்கும் போது தானாக இந்த வெங்காய சேவையைத் தொடங்கவும்", "gui_settings_license_label": "சிபிஎல் வி 3 இன் கீழ் வெங்காயர் உரிமம் பெற்றது.
    மூன்றாம் தரப்பு உரிமங்களை இங்கே காணலாம்:
    " } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/te.json000066400000000000000000000530561521174352300271260ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} చదువగలిగిన దస్త్రం కాదు.", "other_page_loaded": "జాల చిరునామా లోడు చేయబడినది", "close_on_autostop_timer": "స్వయంచాలితంగా ఆగు సమయ సూచీ సమయాతీతమయిపోయినది కనుక ఆపివేయబడినది", "closing_automatically": "బదిలీ పూర్తి అయినందున ఆపబడినది", "large_filesize": "హెచ్చరిక: ఒక పెద్ద అంశాన్ని పంపించడానికి కొన్ని గంటలు పట్టవచ్చు", "gui_drag_and_drop": "దస్త్రాలను, సంచయాలను లాగి వదలండి వాటిని పంచుకోవడం మొదలుపెట్టుటకు", "gui_add": "చేర్చు", "gui_add_files": "దస్త్రాలను చేర్చు", "gui_add_folder": "సంచయాన్ని చేర్చు", "gui_choose_items": "ఎంచుకో", "gui_share_start_server": "పంచుకోవడం మొదలుపెట్టు", "gui_share_stop_server": "పంచుకోవడం ఆపివేయి", "gui_share_stop_server_autostop_timer": "పంచుకోవడం ఆపివేయి ({})", "gui_receive_start_server": "స్వీకరించు రీతిని మొదలుపెట్టు", "gui_receive_stop_server": "స్వీకరించు రీతిని ఆపివేయి", "gui_receive_stop_server_autostop_timer": "స్వీకరించు రీతిని ఆపివేయి ({} మిగిలినది)", "gui_copy_url": "జాల చిరునామాను నకలు తీయి", "gui_canceled": "రద్దు చేయబడినది", "gui_copied_url_title": "OnionShare జాల చిరునామా నకలు తీయబడినది", "gui_copied_url": "OnionShare జాల చిరునామా క్లిప్‌బోర్డునకు నకలు తీయబడినది", "gui_waiting_to_start": "ఇంకా {}లో మొదలగునట్లు అమర్చబడినది. రద్దుచేయుటకై ఇక్కడ నొక్కు.", "gui_please_wait": "మొదలుపెట్టబడుతుంది... రద్దు చేయుటకై ఇక్కడ నొక్కు.", "gui_quit_warning_quit": "నిష్క్రమించు", "zip_progress_bar_format": "కుదించబడుతున్నది: %p%", "gui_settings_window_title": "అమరికలు", "gui_settings_autoupdate_label": "కొత్త రూపాంతరం కోసం సరిచూడు", "gui_settings_autoupdate_option": "కొత్త రూపాంతరం వస్తే నాకు తెలియచేయి", "gui_settings_autoupdate_timestamp": "ఇంతకుముందు సరిచూసినది: {}", "gui_settings_autoupdate_timestamp_never": "మునుపెన్నడూ లేదు", "gui_settings_autoupdate_check_button": "కొత్త రూపాంతరం కొరకు సరిచూడు", "gui_settings_connection_type_label": "OnionShareను Torతో ఎలా అనుసంధానించాలి?", "gui_settings_connection_type_bundled_option": "OnionShareలో కూర్చిన Tor రూపాంతరాన్ని ఉపయోగించు", "gui_settings_connection_type_automatic_option": "Tor విహారిణిని వాడి స్వయంచాలక ఆకృతీకరణకు ప్రయత్నించు", "gui_settings_connection_type_control_port_option": "నియంత్రణ పోర్టును వాడి అనుసంధానం చేయి", "gui_settings_connection_type_socket_file_option": "సాకెట్ దస్త్రాన్ని వాడి అనుసంధానం చేయి", "gui_settings_connection_type_test_button": "Torకు అనుసంధానతను పరీక్షించు", "gui_settings_control_port_label": "నియంత్రణ చేయు పోర్టు", "gui_settings_socket_file_label": "సాకెట్ దస్త్రం", "gui_settings_socks_label": "SOCKS పోర్టు", "gui_settings_authenticate_no_auth_option": "ధృవీకరణ లేకుండా, లేదా కుకీ ధ్రువీకరణ", "gui_settings_authenticate_password_option": "సంకేతపుమాట", "gui_settings_password_label": "సంకేతపుమాట", "gui_settings_tor_bridges": "Tor బ్రిడ్జి మద్దతు", "gui_settings_meek_lite_expensive_warning": "హెచ్చరిక: tor వ్యవస్థను meek_lite బ్రిడ్జిల ద్వారా నడపడం చాలా ఖర్చుతో కూడిన పని.

    మీరు obfs4 మాధ్యమాల ద్వారా లేదా వేరే మామూలు బ్రిడ్జిల ద్వారా torకు సూటిగా అనుసంధానించలేని పక్షంలోనే వాటిని వాడండి.", "gui_settings_tor_bridges_invalid": "మీరు చేర్చిన ఏ బ్రిడ్జీ కూడా పనిచేయుటలేదు.\nమరల సరిచూచుకోండి లేదా వేరేవాటిని చేర్చండి.", "gui_settings_button_save": "భద్రపరచు", "gui_settings_button_cancel": "రద్దుచేయి", "gui_settings_button_help": "సహాయం", "settings_error_unknown": "మీ అమరికలు సరైనవిగా లేవు కనుక టార్ నియంత్రితకు అనుసంధానింపబడలేదు.", "settings_error_automatic": "Tor నియంత్రణకర్తకు అనుసంధానం కాలేకపోతుంది. Tor విహారిణి (torproject.org నుండి లభ్యం) వెనుతలంలో పనిచేస్తుందా?", "settings_error_socket_port": "{}:{} వద్ద టార్ నియంత్రితకు అనుసంధానింపబడలేదు.", "settings_error_socket_file": "సాకెట్ దస్త్రం {} ద్వారా టార్ నియంత్రితకు అనుసంధానింపబడలేదు.", "settings_error_auth": "{}:{} వద్ద అనుసంధానించబడినది, కానీ ధ్రువపరచబడలేదు. ఇది టార్ నియంత్రిత కాదేమో?", "settings_error_missing_password": "Tor నియంత్రితకు అనుసంధానించబడినది, కానీ ధ్రువపరచడానికి ఒక సంకేతపుమాట అవసరం.", "settings_error_unreadable_cookie_file": "Tor నియంత్రితకు అనుసంధానించబడినది, కానీ సంకేతపుమాట సరైనది కాకపోవచ్చు, లేదా మీ వాడుకరికి కుకీ దస్త్రాన్ని చదవడానికి అనుమతి లేకపోవచ్చు.", "settings_error_bundled_tor_not_supported": "OnionShareతో పాటు వచ్చిన Tor రూపాంతరం విండోస్ లేదా మాక్ఓఎస్‌లో అభివృద్ధి రీతిలో పనిచేయదు.", "settings_error_bundled_tor_timeout": "Torకు అనుసంధానించబడుటకు ఎక్కువ సమయం తీసుకుంటుంది. మీరు జాలకు అనుసంధానించబడలేదేమో, లేదా మీ గణనయంత్ర సమయం సరైనది కాదేమో?", "settings_error_bundled_tor_broken": "OnionShare వెనుతలంలో Torతో అనుసంధానం అవట్లేదు: \n{}", "settings_test_success": "Tor నియంత్రణికి అనుసంధానమయింది.\n\nTor రూపాంతరం: {}\nఅల్పాయుష్క onion సేవలకు మద్దతు ఉంది: {}.\nఉపయోక్త ధ్రువీకరణకు మద్దతు ఉంది: {}.\nసరికొత్త .onion చిరునామాలకు మద్దతు ఉంది: {}.", "error_tor_protocol_error": "Torతో పనిచేయుటలో ఒక దోషం కనబడింది: {}", "connecting_to_tor": "Tor జాలాకార వ్యవస్థకు అనుసంధానించబడుతుంది", "update_available": "సరికొత్త OnionShare వచ్చింది. తెచ్చుకోవడానికి
    ఇక్కడ నొక్కండి.

    మీరు వాడుతున్నది {}, సరికొత్తది {}.", "update_error_check_error": "కొత్త రూపాంతరం కోసం సరిచూడలేకపోతుంది: బహుశా మీరు Torకు అనుసంధానమై లేరా, లేదా OnionShare జాలగూడు పనిచేయట్లేదా?", "update_not_available": "మీరు అతినూతన OnionShareని వాడుతున్నారు.", "gui_tor_connection_ask": "Tor అనుసంధానత సమస్యను పరిష్కరించడానికి అమరికలను తెరవనా?", "gui_tor_connection_ask_open_settings": "అవును", "gui_tor_connection_ask_quit": "విడిచిపెట్టు", "gui_tor_connection_error_settings": "OnionShareను Torతో అనుసంధానించే విధానాన్ని అమరికలలో మార్చు.", "gui_tor_connection_canceled": "Torకు అనుసంధానం కాలేకపోతుంది.\n\nమీరు జాలకు అనుసంధానమయ్యారేమో సరిచూసుకోండి, ఆ తరువాత OnionShareను మరల తెరచి, దాని Tor అనుసంధానతను అమర్చుకోండి.", "gui_tor_connection_lost": "Tor నుండి వేరుచేయబడినది.", "gui_server_started_after_autostop_timer": "సర్వరు మొదలయ్యేలోపే స్వయంచాలితంగా ఆగు సమయ సూచీ సమయాతీతమయిపోయినది. ఒక కొత్త అంశాన్ని పంచుకోండి.", "gui_server_autostop_timer_expired": "స్వయంచాలితంగా ఆగు సమయ సూచీ సమయాతీతమయిపోయినది. పంచుకోవడం మొదలుపెట్టడానికి దానిని నవీకరించండి.", "gui_server_autostart_timer_expired": "నిర్ణీత సమయం ఇప్పటికే దాటిపోయింది. పంచుకోవడం ప్రారంభించడం కొరకు దయచేసి దానిని నవీకరించండి.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "స్వయంచాలక ఆగు సమయం అనేది స్వయంచాలక ప్రారంభ సమయంతో సమానంగా లేదా అంతకు ముందు ఉండకూడదు. పంచుకోవడం ప్రారంభించడం కొరకు దయచేసి దానిని నవీకరించండి.", "gui_share_url_description": "ఈOnionShare చిరునామా గల ఎవరైనా మీ దస్త్రాలను Tor విహారిణితో దింపుకోవచ్చు: ", "gui_receive_url_description": "ఈOnionShare చిరునామా గల ఎవరైనా మీ దస్త్రాలను Tor విహారిణితో ఎక్కించుకోవచ్చు:", "gui_url_label_persistent": "ఈ పంచుకొనబడిన అంశం స్వయంచాలితంగా ఆపబడదు.

    తదుపరి పంచుకోబడిన ప్రతి అంశం ఈ చిరునామాను మరల వాడుకుంటుంది. (ఒక్కసారికి మాత్రం వాడగలిగే చిరునామాలను వాడాలనుకుంటే, అమరికలలో \"నిరంతర చిరునామాను వాడు\"ని అచేతనం చేయండి.)", "gui_url_label_stay_open": "ఈ పంచుకొనబడిన అంశం స్వయంచాలితంగా ఆపబడదు.", "gui_url_label_onetime": "ఒకసారి పూర్తయిన తరువాత ఈ పంచుకొనబడిన అంశం ఆపబడుతుంది.", "gui_url_label_onetime_and_persistent": "ఈ పంచుకొనబడిన అంశం స్వయంచాలితంగా ఆపబడదు.

    తదుపరి పంచుకోబడిన ప్రతి అంశం ఈ చిరునామాను మరల వాడుకుంటుంది. (ఒక్కసారికి మాత్రం వాడగలిగే చిరునామాలను వాడాలనుకుంటే, అమరికలలో \"నిరంతర చిరునామాను వాడు\"ని అచేతనం చేయండి.)", "gui_status_indicator_share_stopped": "ఆగిపోయినవి", "gui_status_indicator_share_working": "మొదలుపెడుతుంది…", "gui_status_indicator_share_scheduled": "షెడ్యూల్…", "gui_status_indicator_share_started": "పంచుకొంటుంది", "gui_status_indicator_receive_stopped": "ఆగిపోయినవి", "gui_status_indicator_receive_working": "మొదలుపెడుతుంది…", "gui_status_indicator_receive_scheduled": "షెడ్యూల్…", "gui_status_indicator_receive_started": "స్వీకరిస్తుంది", "gui_file_info": "{} దస్త్రాలు, {}", "gui_file_info_single": "{} దస్త్రము, {}", "history_in_progress_tooltip": "{} పని జరుగుతూ ఉంది", "history_completed_tooltip": "{} అయిపోయింది", "error_cannot_create_data_dir": "OnionShare దత్త సంచయం: {}ని సృష్టించడం జరగలేదు", "gui_receive_mode_warning": "స్వీకరించు రీతి వ్యక్తులు మీ కంప్యూటరుకు దస్త్రాలను ఎక్కించడానికి అనుమతినిస్తుంది.

    కొన్ని దస్త్రాలను మీరు తెరిస్తే అవి అవశ్యం మీ కంప్యూటరును నియంత్రించగలవు. కనుక మీరు విశ్వసించే వ్యక్తులనుండి వచ్చిన వాటినే తెరవండి, లేదా మీరేం చేస్తున్నారో మీకు అవగాహన ఉంటేనే తెరవండి.", "gui_settings_language_label": "ఎంచుకున్న భాష", "gui_settings_language_changed_notice": "మీరు మార్చిన భాష అమలులోకి రావడానికి OnionShareని పునఃప్రారంభించండి.", "systray_menu_exit": "నిష్క్రమించు", "systray_page_loaded_title": "పుట లోడు చేయబడినది", "systray_page_loaded_message": "OnionShare జాల చిరునామా లోడు చేయబడినది", "systray_share_started_title": "పంచుకోవడం మొదలయింది", "systray_share_started_message": "మరొకరికి దస్త్రాలు పంపడం మొదలవుతుంది", "systray_share_completed_title": "పంచుకోవడం పూర్తయింది", "systray_share_completed_message": "దస్త్రాలు పంపడం ముగిసినది", "systray_share_canceled_title": "పంచుకోవడం రద్దుచేయబడినది", "systray_share_canceled_message": "వేరెవరో మీ దస్త్రాలను స్వీకరించుట రద్దు చేసారు", "systray_receive_started_title": "స్వీకరించుట మొదలయింది", "systray_receive_started_message": "మరొకరు మీకు దస్త్రాలను పంపిస్తున్నారు", "gui_all_modes_history": "చరిత్ర", "gui_all_modes_clear_history": "అన్నీ తీసివేయి", "gui_all_modes_transfer_started": "మొదలయింది {}", "gui_all_modes_transfer_finished_range": "పంపబడినది {} - {}", "gui_all_modes_transfer_finished": "పంపబడినది {}", "gui_all_modes_transfer_canceled_range": "రద్దు చేయబడినది {} - {}", "gui_all_modes_transfer_canceled": "రద్దు చేయబడినది {}", "gui_all_modes_progress_complete": "%p%, {0:s} గడచినది.", "gui_all_modes_progress_starting": "{0:s}, %p% (లెక్కపెట్టబడుతుంది)", "gui_all_modes_progress_eta": "{0:s}, పూర్తి అగుటకు పట్టు సమయం: {1:s}, %p%", "gui_share_mode_no_files": "ఇంకా ఏ దస్త్రాలు పంపబడలేదు", "gui_share_mode_autostop_timer_waiting": "పంపుట పూర్తి అగుటకు వేచిచూడడం జరుగుతున్నది", "gui_receive_mode_no_files": "ఇంకా ఏ దస్త్రాలు స్వీకరించబడలేదు", "gui_receive_mode_autostop_timer_waiting": "స్వీకరణ పూర్తి అగుటకు వేచిచూడడం జరుగుతున్నది", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "incorrect_password": "తప్పు పాస్వర్డ్", "gui_settings_theme_dark": "దట్టము", "gui_please_wait_no_button": "మొదలుపెడుతుంది…", "mode_settings_receive_data_dir_label": "దస్త్రాలను ఇక్కడ భద్రపరచు", "gui_tab_name_share": "షేర్", "gui_tab_name_receive": "పొందు", "moat_captcha_submit": "Submit", "gui_general_settings_window_title": "సాధారణం", "gui_tab_name_chat": "చాట్", "gui_hide": "దాచు", "gui_status_indicator_chat_working": "మొదలుపెడుతుంది…", "gui_status_indicator_chat_scheduled": "షెడ్యూల్…", "gui_share_url_public_description": "ఈOnionShare చిరునామా గల ఎవరైనా మీ దస్త్రాలను Tor విహారిణితో దింపుకోవచ్చు: ", "gui_receive_url_public_description": "ఈOnionShare చిరునామా గల ఎవరైనా మీ దస్త్రాలను Tor విహారిణితో ఎక్కించుకోవచ్చు:", "gui_tab_name_website": "వెబ్సైట్", "gui_remove": "తొలగించు", "gui_file_selection_remove_all": "అన్నిటినీ తొలగించండి", "gui_new_tab_share_button": "దస్త్రాలను పంచుకో", "gui_new_tab_receive_button": "దస్త్రాలను స్వీకరించు", "gui_close_tab_warning_cancel": "రద్దు", "gui_quit_warning_cancel": "రద్దు", "mode_settings_receive_data_dir_browse_button": "విహరించండి", "gui_settings_theme_label": "అలంకారం", "gui_settings_theme_auto": "స్వయం", "gui_settings_bridge_none_radio_option": "బ్రిడ్జిలు వాడవద్దు", "gui_settings_bridge_custom_placeholder": "type address:port (one per line)", "mode_settings_title_label": "శీర్షికను అనుకూలపరుచు", "gui_main_page_share_button": "పంచుకోవడం మొదలుపెట్టు", "moat_captcha_reload": "Reload", "gui_settings_theme_light": "Light", "gui_stop_server_autostop_timer_tooltip": "స్వీయ నియంత్రణ సమయం అయిపోయినది", "gui_start_server_autostart_timer_tooltip": "స్వీయ నియంత్రణ సమయం అయిపోయినది", "gui_status_indicator_chat_stopped": "ఆగిపోయినవి" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/tl.json000066400000000000000000000024011521174352300271210ustar00rootroot00000000000000{ "gui_all_modes_history": "Kasaysayan", "gui_tab_name_share": "I-share", "gui_add": "Magdagdag", "gui_remove": "Tanggalin", "gui_choose_items": "Pumili", "gui_hide": "Itago", "gui_close_tab_warning_cancel": "Kanselahin", "gui_quit_warning_cancel": "Kanselahin", "mode_settings_receive_data_dir_browse_button": "Mag-browse", "moat_captcha_submit": "I-sumite", "gui_settings_theme_auto": "Awtomatik", "gui_settings_window_title": "Mga Setting", "gui_settings_button_help": "Tulong", "gui_settings_autoupdate_timestamp_never": "Di kailanman", "gui_settings_language_label": "Wika", "gui_settings_button_save": "I-save", "gui_settings_button_cancel": "Kanselahin", "gui_settings_theme_dark": "Madilim", "gui_general_settings_window_title": "Pangkalahatan", "gui_settings_authenticate_password_option": "Password", "gui_settings_password_label": "Password", "gui_settings_theme_light": "Maliwanag na tema", "gui_tab_name_website": "Pook-sapot", "gui_tor_connection_ask_open_settings": "Oo", "moat_captcha_reload": "Reload", "gui_status_indicator_receive_stopped": "Natigil", "gui_status_indicator_share_stopped": "Natigil", "gui_status_indicator_chat_stopped": "Natigil" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/tr.json000066400000000000000000000544301521174352300271400ustar00rootroot00000000000000{ "other_page_loaded": "Adres yüklendi", "closing_automatically": "Aktarım tamamlandığından durduruldu", "large_filesize": "Uyarı: Büyük bir paylaşım saatler sürebilir", "gui_drag_and_drop": "Paylaşıma başlamak için dosya ve klasörleri sürükleyip bırakın", "gui_add": "Ekle", "gui_choose_items": "Seç", "gui_share_start_server": "Paylaşımı başlat", "gui_share_stop_server": "Paylaşımı durdur", "gui_copy_url": "Adresi kopyala", "gui_canceled": "İptal edilen", "gui_copied_url": "OnionShare adresi panoya kopyalandı", "gui_please_wait": "Başlatılıyor... İptal etmek için tıklayın.", "zip_progress_bar_format": "Sıkıştırılıyor: %p%", "not_a_readable_file": "{0:s} okunabilir bir dosya değil.", "close_on_autostop_timer": "Otomatik durdurma sayacı sona erdiğinden durduruldu", "gui_add_files": "Dosya ekle", "gui_add_folder": "Klasör ekle", "gui_share_stop_server_autostop_timer": "Paylaşımı durdur ({})", "gui_receive_start_server": "Alma kipini başlat", "gui_receive_stop_server": "Alma kipini durdur", "gui_receive_stop_server_autostop_timer": "Alma kipini durdur ({} kaldı)", "gui_copied_url_title": "OnionShare Adresi Kopyalandı", "gui_quit_warning_quit": "Çık", "gui_settings_window_title": "Ayarlar", "gui_settings_autoupdate_label": "Yeni sürümü denetle", "gui_settings_autoupdate_option": "Yeni bir sürüm yayınlandığında haber ver", "gui_settings_autoupdate_timestamp": "Son denetleme: {}", "gui_settings_autoupdate_timestamp_never": "Hiçbir zaman", "gui_settings_autoupdate_check_button": "Güncelleme denetimi", "gui_settings_connection_type_label": "OnionShare ile Tor bağlantısı nasıl kurulmalı?", "gui_settings_connection_type_bundled_option": "OnionShare üzerindeki Tor sürümü kullanılsın", "gui_settings_connection_type_automatic_option": "Tor Browser ile otomatik yapılandırma denensin", "gui_settings_connection_type_control_port_option": "Denetim bağlantı noktası kullanılarak bağlanılsın", "gui_settings_connection_type_socket_file_option": "Soket dosyası kullanılarak bağlantı kurulsun", "gui_settings_connection_type_test_button": "Tor bağlantısını sına", "gui_settings_control_port_label": "Denetim kapı numarası", "gui_settings_socket_file_label": "Soket dosyası", "gui_settings_socks_label": "SOCKS kapı numarası", "gui_settings_authenticate_no_auth_option": "Kimlik doğrulama yok, veya çerez doğrulaması", "gui_settings_authenticate_password_option": "Parola", "gui_settings_password_label": "Parola", "gui_settings_tor_bridges": "Tor köprüsü kullanarak bağlanılsın mı?", "gui_settings_meek_lite_expensive_warning": "Uyarı: meek-azure köprülerini çalıştırmak Tor Projesine pahalıya patlıyor.

    Bu köprüleri yalnızca Tor ile doğrudan veya obfs4 ve diğer normal köprüler üzerinden bağlantı kuramıyorsanız kullanın.", "gui_settings_tor_bridges_invalid": "Eklediğiniz köprülerin hiçbiri çalışmıyor. İki kez denetleyin veya başka köprüler ekleyin.", "gui_settings_button_save": "Kaydet", "gui_settings_button_cancel": "İptal", "gui_settings_button_help": "Yardım", "settings_error_unknown": "Ayarlarınız mantıklı olmadığından Tor denetleyicisine bağlanılamıyor.", "settings_error_automatic": "Tor denetleyicisi ile bağlantı kurulamadı. Arka planda Tor Browser (torproject.org adresinden alınabilir) çalışıyor olabilir mi?", "settings_error_socket_port": "{}:{} adresinden Tor denetleyicisi ile bağlantı kurulamadı.", "settings_error_socket_file": "{} socket dosyası kullanılarak Tor denetleyicisi ile bağlantı kurulamadı.", "settings_error_auth": "{}:{} bağlantısı kuruldu, ancak kimlik doğrulaması yapılamadı. Bu bir Tor denetleyicisi olmayabilir mi?", "settings_error_missing_password": "Tor denetleyicisi ile bağlantı kuruldu, ancak kimlik doğrulaması için parola gerekiyor.", "settings_error_unreadable_cookie_file": "Tor denetleyicisi ile bağlantı kuruldu, ancak parola yanlış ya da kullanıcının çerez dosyasını okumasına izin verilmiyor.", "settings_error_bundled_tor_not_supported": "OnionShare ile birlikte gelen Tor sürümünü kullanmak, Windows veya macOS üzerinde geliştirici modunda çalışmaz.", "settings_error_bundled_tor_timeout": "Tor bağlantısının kurulması gecikiyor. İnternet bağlantınız kesik ya da sistem saatiniz hatalı olabilir mi?", "settings_error_bundled_tor_broken": "OnionShare, Tor ile bağlantı kuramadı:\n{}", "settings_test_success": "Tor denetleyicisi ile bağlantı kuruldu.\n\nTor sürümü: {}\nGeçici onion hizmetleri desteği: {}.\nİstemci kimlik doğrulaması desteği: {}.\nYeni nesil .onion adresleri desteği: {}.", "error_tor_protocol_error": "Tor ile ilgili bir hata oluştu: {}", "connecting_to_tor": "Tor ağı ile bağlantı kuruluyor", "update_available": "Yeni bir OnionShare sürümü yayınlanmış. Almak için buraya tıklayın.

    Kullandığınız sürüm {}, son sürüm {}.", "update_error_check_error": "Sürüm denetimi yapılamadı: Tor bağlantınız kesik ya da OnionShare web sitesi kapalı olabilir mi?", "update_error_invalid_latest_version": "Sürüm denetimi yapılamadı: OnionShare web sitesi en son sürümün anlaşılamayan '{}' olduğunu bildiriyor…", "update_not_available": "Güncel OnionShare sürümünü kullanıyorsunuz.", "gui_tor_connection_ask": "Tor bağlantı sorunlarını çözmek için ayarlar açılsın mı?", "gui_tor_connection_ask_open_settings": "Evet", "gui_tor_connection_ask_quit": "Çık", "gui_tor_connection_error_settings": "OnionShare ayarlarından Tor ağı ile bağlantı kurma yöntemini değiştirmeyi deneyin.", "gui_tor_connection_canceled": "Tor bağlantısı kurulamadı.\n\nİnternete bağlı olduğunuzdan emin olduktan sonra OnionShare uygulamasını yeniden açın ve Tor bağlantısını kurun.", "gui_tor_connection_lost": "Tor bağlantısı kesildi.", "gui_server_started_after_autostop_timer": "Otomatik durdurma sayacı, sunucu başlamadan önce sona erdi. Lütfen yeni bir paylaşım yapın.", "gui_server_autostop_timer_expired": "Otomatik durdurma sayacı zaten sona ermiş. Paylaşımı başlatmak için sayacı ayarlayın.", "gui_share_url_description": "Bu OnionShare adresine ve kişisel anahtara sahip olan herkes Tor Browser kullanarak dosyalarınızı indirebilir: ", "gui_receive_url_description": "Bu OnionShare adresine ve kişisel anahtara sahip olan herkes Tor Browser kullanarak dosyaları bilgisayarınıza yükleyebilir: ", "gui_url_label_persistent": "Bu paylaşım otomatik olarak durdurulmayacak.

    Sonraki her paylaşımda adres yeniden kullanılır (bir kerelik adresleri kullanmak için, ayarlardan \"OnionShare başlatıldığında her zaman bu sekmeyi aç\" seçeneğini kapatın.)", "gui_url_label_stay_open": "Bu paylaşım otomatik olarak durdurulmayacak.", "gui_url_label_onetime": "Bu paylaşım bir kez tamamlandıktan sonra durdurulacak.", "gui_url_label_onetime_and_persistent": "Bu paylaşım otomatik olarak durdurulmayacak.

    Sonraki her paylaşım adresi yeniden kullanır (bir kerelik adresleri kullanmak için, ayarlardan \"OnionShare başlatıldığında her zaman bu sekmeyi aç\" seçeneğini kapatın.)", "gui_status_indicator_share_stopped": "Durduruldu", "gui_status_indicator_share_working": "Başlatılıyor…", "gui_status_indicator_share_started": "Paylaşılıyor", "gui_status_indicator_receive_stopped": "Durduruldu", "gui_status_indicator_receive_working": "Başlatılıyor…", "gui_status_indicator_receive_started": "Alınıyor", "gui_file_info": "{} dosya, {}", "gui_file_info_single": "{} dosya, {}", "history_in_progress_tooltip": "{} sürüyor", "history_completed_tooltip": "{} tamamlandı", "error_cannot_create_data_dir": "OnionShare veri klasörü oluşturulamadı: {}", "gui_receive_mode_warning": "Alma kipi başkalarının bilgisayarınıza dosya yüklemesini sağlar.

    Bazı dosyalar, açtığınızda bilgisayarınızın denetimini ele geçirebilir. Bir şeyleri yalnızca güvendiğiniz kişilerden geliyorsa veya ne yaptığınızı biliyorsanız açın.", "gui_settings_language_label": "Dil", "gui_settings_language_changed_notice": "Yeni dile geçmek için OnionShare'i yeniden başlatın.", "systray_menu_exit": "Çık", "systray_page_loaded_title": "Sayfa yüklendi", "systray_page_loaded_message": "OnionShare adresi yüklendi", "systray_share_started_title": "Paylaşım başlatıldı", "systray_share_started_message": "Birine dosya gönderilmeye başlanıyor", "systray_share_completed_title": "Paylaşım tamamlandı", "systray_share_completed_message": "Dosyalar gönderildi", "systray_share_canceled_title": "Paylaşım iptal edildi", "systray_share_canceled_message": "Birisi dosyalarınızı almayı iptal etti", "systray_receive_started_title": "Alma başlatıldı", "systray_receive_started_message": "Birisi size dosyalar gönderiyor", "gui_all_modes_history": "Geçmiş", "gui_all_modes_clear_history": "Tümünü temizle", "gui_all_modes_transfer_started": "Başlatıldı {}", "gui_all_modes_transfer_finished_range": "Aktarıldı {} - {}", "gui_all_modes_transfer_finished": "Aktarıldı {}", "gui_all_modes_transfer_canceled_range": "İptal edildi {} - {}", "gui_all_modes_transfer_canceled": "İptal edildi {}", "gui_all_modes_progress_complete": "%p%, {0:s} geçti.", "gui_all_modes_progress_starting": "{0:s}, %p% (hesaplanıyor)", "gui_all_modes_progress_eta": "{0:s}, öngörülen yükleme zamanı: {1:s}, %p%", "gui_share_mode_no_files": "Henüz bir dosya gönderilmedi", "gui_receive_mode_no_files": "Henüz bir dosya alınmadı", "gui_stop_server_autostop_timer_tooltip": "Otomatik durdurma sayacı bitişi {}", "gui_start_server_autostart_timer_tooltip": "Otomatik başlatma sayacı bitişi {}", "gui_waiting_to_start": "{} içinde başlamaya zamanlandı. İptal etmek için tıklayın.", "gui_server_autostart_timer_expired": "Zamanlanan süre zaten geçmiş. Paylaşımı başlatmak için ayarlayın.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Otomatik durdurma zamanı, otomatik başlatma zamanı ile aynı veya daha önce olamaz. Paylaşımı başlatmak için ayarlayın.", "gui_status_indicator_share_scheduled": "Zamanlandı…", "gui_status_indicator_receive_scheduled": "Zamanlandı…", "gui_share_mode_autostop_timer_waiting": "Gönderme işlemi tamamlanıyor…", "gui_receive_mode_autostop_timer_waiting": "Alma işlemi tamamlanıyor…", "days_first_letter": "g", "hours_first_letter": "s", "minutes_first_letter": "d", "seconds_first_letter": "sn", "gui_website_url_description": "Bu OnionShare adresine ve kişisel anahtara sahip olan herkes Tor Browser kullanarak web sitenizi ziyaret edebilir: ", "gui_website_mode_no_files": "Henüz bir web sitesi paylaşılmadı", "incorrect_password": "Parola yanlış", "history_requests_tooltip": "{} web isteği", "mode_settings_website_disable_csp_checkbox": "Öntanımlı İçerik Güvenliği İlkesi başlığı gönderme (web sitenizin üçüncü taraf kaynaklarını kullanmasına izin verir)", "mode_settings_receive_data_dir_browse_button": "Göz at", "mode_settings_receive_data_dir_label": "Dosyaları şuraya kaydet", "mode_settings_share_autostop_sharing_checkbox": "Dosyalar gönderildikten sonra paylaşım durdurulsun (dosyaların tek tek indirilmesine izin vermek için işareti kaldırın)", "mode_settings_autostop_timer_checkbox": "Onion hizmeti şu zamanda durdurulsun", "mode_settings_autostart_timer_checkbox": "Onion hizmeti şu zamanda başlatılsın", "mode_settings_public_checkbox": "Bu, herkese açık bir OnionShare hizmetidir (kişisel anahtarı devre dışı bırakır)", "mode_settings_persistent_checkbox": "OnionShare başlatıldığında her zaman bu sekmeyi aç (onion adresi aynı kalacaktır)", "mode_settings_advanced_toggle_hide": "Gelişmiş ayarları gizle", "mode_settings_advanced_toggle_show": "Gelişmiş ayarları görüntüle", "gui_quit_warning_cancel": "İptal", "gui_quit_warning_description": "Bazılarında paylaşım etkin olsa bile tüm sekmelerden çıkıp kapatılsın mı?", "gui_quit_warning_title": "OnionShare'den çıkılsın mı?", "gui_close_tab_warning_cancel": "İptal", "gui_close_tab_warning_close": "Tamam", "gui_close_tab_warning_website_description": "Bir web sitesini barındıran sekme kapatılsın mı?", "gui_close_tab_warning_receive_description": "Dosya alan sekme kapatılsın mı?", "gui_close_tab_warning_share_description": "Dosya gönderen sekme kapatılsın mı?", "gui_close_tab_warning_persistent_description": "Kalıcı sekme kapatılsın ve kullandığı onion adresi kaybedilsin mi?", "gui_new_tab_website_button": "Web sitesi barındırın", "gui_new_tab_receive_button": "Dosya alın", "gui_new_tab_share_button": "Dosya paylaşın", "gui_close_tab_warning_title": "Sekme kapatılsın mı?", "gui_new_tab_tooltip": "Yeni bir sekme aç", "gui_new_tab": "Yeni sekme", "gui_remove": "Kaldır", "gui_file_selection_remove_all": "Tümünü kaldır", "gui_chat_start_server": "Sohbet sunucusunu başlat", "gui_chat_stop_server": "Sohbet sunucusunu durdur", "gui_receive_flatpak_data_dir": "OnionShare uygulamasını Flatpak kullanarak kurduğunuz için, dosyaları ~/OnionShare içindeki bir klasöre kaydetmelisiniz.", "gui_show_qr_code": "QR kodunu görüntüle", "gui_qr_code_dialog_title": "OnionShare QR kodu", "gui_open_folder_error": "Klasör xdg-open ile açılamadı. Dosya burada: {}", "gui_new_tab_chat_button": "Anonim olarak sohbet edin", "gui_main_page_share_button": "Paylaşımı başlat", "gui_main_page_receive_button": "Almayı başlat", "gui_main_page_website_button": "Barındırmayı başlat", "gui_main_page_chat_button": "Sohbeti başlat", "gui_tab_name_share": "Paylaş", "gui_tab_name_receive": "Al", "gui_tab_name_website": "Web sitesi", "gui_tab_name_chat": "Sohbet", "gui_chat_url_description": "Bu OnionShare adresine ve kişisel anahtara sahip olan herkes Tor Browser kullanarak bu sohbet odasına katılabilir: ", "error_port_not_available": "OnionShare kapı numarası kullanılamıyor", "gui_rendezvous_cleanup_quit_early": "Erken çık", "gui_rendezvous_cleanup": "Dosyalarınızın aktarıldığından emin olmak için Tor devrelerinin kapanması bekleniyor.\n\nBu, birkaç dakika sürebilir.", "gui_color_mode_changed_notice": "Yeni renkleri görmek için OnionShare'i yeniden başlatın.", "history_receive_read_message_button": "İletiyi oku", "mode_settings_receive_webhook_url_checkbox": "Bildirim web kancası kullanılsın", "mode_settings_receive_disable_files_checkbox": "Dosya yüklenemesin", "mode_settings_receive_disable_text_checkbox": "Metin gönderilemesin", "mode_settings_title_label": "Özel başlık", "gui_status_indicator_chat_started": "Sohbet ediliyor", "gui_status_indicator_chat_scheduled": "Zamanlandı…", "gui_status_indicator_chat_working": "Başlatılıyor…", "gui_status_indicator_chat_stopped": "Durduruldu", "gui_settings_theme_dark": "Koyu", "gui_settings_theme_light": "Açık", "gui_settings_theme_auto": "Otomatik", "gui_settings_theme_label": "Tema", "gui_please_wait_no_button": "Başlatılıyor…", "gui_server_doesnt_support_stealth": "Maalesef bu Tor sürümü gizliliği (istemci kimlik doğrulaması) desteklemiyor. Lütfen daha yeni bir Tor sürümünü deneyin veya özel olması gerekmiyorsa 'herkese açık' kipini kullanın.", "gui_client_auth_instructions": "Ardından, OnionShare hizmetinize erişime izin vermek için kişisel anahtarı gönderin:", "gui_url_instructions_public_mode": "Aşağıdaki OnionShare adresini gönderin:", "gui_url_instructions": "İlk olarak, aşağıdaki OnionShare adresini gönderin:", "gui_chat_url_public_description": "Bu OnionShare adresine sahip olan herkes Tor Browser kullanarak bu sohbet odasına katılabilir: ", "gui_receive_url_public_description": "Bu OnionShare adresine sahip olan herkes Tor Browser kullanarak dosyaları bilgisayarınıza yükleyebilir: ", "gui_website_url_public_description": "Bu OnionShare adresine sahip olan herkes Tor Browser kullanarak web sitenizi ziyaret edebilir: ", "gui_share_url_public_description": "Bu OnionShare adresine sahip olan herkes Tor Browser kullanarak dosyalarınızı indirebilir: ", "gui_hide": "Gizle", "gui_reveal": "Görüntüle", "gui_qr_label_auth_string_title": "Kişisel anahtar", "gui_qr_label_url_title": "OnionShare adresi", "gui_copied_client_auth": "Kişisel anahtar panoya kopyalandı", "gui_copied_client_auth_title": "Kişisel Anahtar Kopyalandı", "gui_copy_client_auth": "Kişisel anahtarı kopyala", "gui_settings_bridge_moat_radio_option": "torproject.org'dan bir köprü talep et", "gui_settings_bridge_moat_button": "Yeni Bir Köprü Talep Et", "gui_settings_bridge_custom_placeholder": "adres:bağlantınoktası yazın (satır başına bir tane)", "gui_settings_moat_bridges_invalid": "Henüz torproject.org'dan bir köprü talep etmediniz.", "moat_contact_label": "BridgeDB ile iletişime geçiliyor…", "moat_captcha_error": "Yanlış çözüm. Lütfen tekrar deneyin.", "moat_solution_empty_error": "Resimdeki karakterleri girin", "mode_tor_not_connected_label": "OnionShare Tor ağına bağlı değil", "gui_settings_tor_bridges_label": "Köprüler, Tor erişiminin engellendiği yerlerde trafiğinizin Tor Ağına girmesine yardımcı olur. Nerede olduğunuza bağlı olarak, bir köprü diğerinden daha iyi çalışabilir.", "gui_settings_bridge_use_checkbox": "Köprü kullan", "mode_settings_website_custom_csp_checkbox": "Özel bir İçerik Güvenliği İlkesi başlığı gönder", "gui_dragdrop_sandbox_flatpak": "Flatpak korumalı alanını daha güvenli hale getirmek için sürükle ve bırak desteklenmemektedir. Bunun yerine dosyaları seçmek için \"Dosya Ekle\" ve \"Klasör Ekle\" düğmelerini kullanın.", "gui_tor_settings_window_title": "Tor Ayarları", "gui_settings_controller_extras_label": "Tor ayarları", "gui_settings_bridge_none_radio_option": "Köprüleri kullanma", "gui_settings_bridge_radio_builtin": "Yerleşik bir köprü seç", "gui_settings_version_label": "OnionShare {} kullanıyorsunuz", "gui_settings_bridge_custom_radio_option": "Güvenilir bir kaynaktan öğrendiğiniz bir köprü belirtin", "gui_settings_stop_active_tabs_label": "Bazı sekmelerinizde çalışan hizmetler var.\nTor ayarlarınızı değiştirmek için tüm hizmetleri durdurmalısınız.", "gui_settings_help_label": "Yardıma mı ihtiyacınız var? docs.onionshare.org adresine bakın", "moat_captcha_submit": "Gönder", "moat_captcha_reload": "Yeniden yükle", "moat_captcha_label": "Bir köprü talep etmek için CAPTCHA'yı çözün.", "moat_captcha_placeholder": "Resimdeki karakterleri girin", "moat_bridgedb_error": "BridgeDB ile bağlantı kurulamadı.", "gui_autoconnect_bridge_description": "İnternetinizin sansürlenmiş olması da mümkündür. Bir köprü kullanarak bunu aşmanız mümkün olabilir.", "gui_autoconnect_connection_error_msg": "İnternete bağlı olduğunuzdan emin olun.", "gui_autoconnect_description": "OnionShare, dünya çapında binlerce gönüllü tarafından işletilen Tor Ağını temel alır.", "gui_enable_autoconnect_checkbox": "Tor'a otomatik olarak bağlan", "gui_autoconnect_failed_to_connect_to_tor": "Tor'a Bağlanılamadı", "gui_autoconnect_trying_to_connect_to_tor": "Tor'a bağlanılıyor…", "gui_autoconnect_bridge_detect_automatic": "Köprü ayarları için IP adresimden ülkemi otomatik olarak belirle", "gui_autoconnect_bridge_detect_manual": "Köprü ayarları için ülkemi el ile seç", "gui_autoconnect_bridge_setting_options": "Köprü Ayarları", "gui_autoconnect_start": "Tor'a Bağlan", "gui_autoconnect_configure": "Ağ Ayarları", "gui_autoconnect_no_bridge": "Köprü olmadan tekrar dene", "gui_autoconnect_try_again_without_a_bridge": "Köprü olmadan tekrar dene", "gui_autoconnect_circumventing_censorship": "Bağlantı sorunları çözülüyor…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Sansür aşılıyor…", "gui_autoconnect_circumventing_censorship_starting_meek": "Etki alanı ön uçlaması için Meek köprüsü kuruluyor…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Tor Sansürü Aşma API'den köprü talep ediliyor…", "gui_autoconnect_circumventing_censorship_got_bridges": "Köprüler alındı! Tor'a yeniden bağlanılıyor…", "gui_autoconnect_could_not_connect_to_tor_api": "Tor API'sine bağlanılamadı. Tekrar denemeden önce internete bağlı olduğunuzdan emin olun.", "gui_general_settings_window_title": "Genel", "waitress_web_server_error": "Web sunucusu başlatılırken bir sorun oluştu", "gui_close_tab_warning_chat_description": "Sohbet sunucusu barındıran sekme kapatılsın mı?", "gui_chat_mode_explainer": "Sohbet modu, Tor Browser'da başkalarıyla etkileşimli olarak sohbet etmenizi sağlar.

    Sohbet geçmişi OnionShare'de saklanmaz. Tor Browser'ı kapattığınızda sohbet geçmişi kaybolacaktır.", "error_generic": "Beklenmedik bir hata oluştu:\n{}", "gui_settings_license_label": "OnionShare, GPL v3 altında lisanslıdır.
    Üçüncü parti lisanslarına şuradan bakabilirsiniz:
    https://github.com/onionshare/onionshare/tree/main/licenses", "mode_settings_persistent_autostart_on_launch_checkbox": "OnionShare başlatıldığında bu onion hizmetini otomatik olarak başlat" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/ug.json000066400000000000000000000024031521174352300271170ustar00rootroot00000000000000{ "gui_settings_button_cancel": "ۋاز كەچ", "gui_settings_button_save": "ساقلاش", "gui_hide": "يوشۇرۇن", "gui_add": "قوش", "gui_remove": "ئۆچۈر", "gui_settings_window_title": "تەڭشەك", "gui_general_settings_window_title": "ئادەتتىكى", "gui_settings_theme_light": "ئاق", "gui_settings_theme_label": "ئۇسلۇب", "gui_settings_autoupdate_timestamp_never": "ھەرگىز", "gui_settings_authenticate_password_option": "پارول", "gui_settings_password_label": "پارول", "gui_tor_connection_ask_open_settings": "ھەئە", "gui_settings_language_label": "تىل", "gui_all_modes_history": "نەشىر تارىخى", "gui_tab_name_share": "ھەمبەھىر", "gui_tab_name_website": "تورتۇرا", "gui_close_tab_warning_cancel": "ۋاز كەچ", "gui_quit_warning_cancel": "ۋاز كەچ", "mode_settings_receive_data_dir_browse_button": "كۆرۈش", "gui_status_indicator_share_started": "ئورتاقلىشىش", "gui_settings_button_help": "ياردەم", "gui_status_indicator_share_stopped": "توختىدى", "gui_status_indicator_receive_stopped": "توختىدى", "gui_status_indicator_chat_stopped": "توختىدى" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/uk.json000066400000000000000000000715211521174352300271320ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} - файл що не читається.", "other_page_loaded": "Адресу завантажено", "close_on_autostop_timer": "Зупинено, оскільки збіг час таймера автостопу", "closing_automatically": "Зупинено, оскільки передавання завершено", "large_filesize": "Увага: надсилання великого об'єму може тривати години", "gui_drag_and_drop": "Перетягніть файли та теки для надсилання", "gui_add": "Додати", "gui_add_files": "Додати Файли", "gui_add_folder": "Додати Теку", "gui_choose_items": "Вибрати", "gui_share_start_server": "Почати надсилання", "gui_share_stop_server": "Припинити надсилання", "gui_share_stop_server_autostop_timer": "Припинити надсилання ({})", "gui_stop_server_autostop_timer_tooltip": "Таймер автостопу спливає о {}", "gui_start_server_autostart_timer_tooltip": "Таймер автостарту спливає о {}", "gui_receive_start_server": "Запустити режим отримання", "gui_receive_stop_server": "Зупинити режим отримання", "gui_receive_stop_server_autostop_timer": "Зупинити режим отримання ({} залишилось)", "gui_copy_url": "Копіювати Адресу", "gui_canceled": "Скасовано", "gui_copied_url_title": "Адресу OnionShare скопійовано", "gui_copied_url": "Адресу OnionShare копійовано до буферу обміну", "gui_waiting_to_start": "Заплановано почати за {}. Натисніть для скасування.", "gui_please_wait": "Початок... Натисніть для скасування.", "gui_quit_warning_quit": "Вийти", "zip_progress_bar_format": "Стиснення: %p%", "gui_settings_window_title": "Налаштування", "gui_settings_autoupdate_label": "Перевірити наявність оновлень", "gui_settings_autoupdate_option": "Повідомляти про наявність нової версії", "gui_settings_autoupdate_timestamp": "Попередня перевірка: {}", "gui_settings_autoupdate_timestamp_never": "Ніколи", "gui_settings_autoupdate_check_button": "Перевірити наявність оновлень", "gui_settings_connection_type_label": "Як OnionShare повинен з'єднуватися з Tor?", "gui_settings_connection_type_bundled_option": "Використовувати вбудовану в OnionShare версію Tor", "gui_settings_connection_type_automatic_option": "Намагатися автоматично налаштувати за допомогою Tor Browser", "gui_settings_connection_type_control_port_option": "Під'єднатися через порт керування", "gui_settings_connection_type_socket_file_option": "Під'єднатися через файл сокета", "gui_settings_connection_type_test_button": "Перевірити з'єднання з Tor", "gui_settings_control_port_label": "Порт керування", "gui_settings_socket_file_label": "Файл сокета", "gui_settings_socks_label": "SOCKS порт", "gui_settings_authenticate_no_auth_option": "Без автентифікації або автентифікація через cookie", "gui_settings_authenticate_password_option": "Пароль", "gui_settings_password_label": "Пароль", "gui_settings_tor_bridges": "Під'єднатися за допомогою мосту Tor?", "gui_settings_meek_lite_expensive_warning": "Увага: Мости meek-azure заважкі для роботи Tor Project.

    Користуйтеся ними лише якщо не вдається з'єднатися з Tor безпосередньо, через obfs4 транспорти або інші звичайні мости.", "gui_settings_tor_bridges_invalid": "Жоден з доданих мостів не працює. Ще раз перевірте їх або додайте інші.", "gui_settings_button_save": "Зберегти", "gui_settings_button_cancel": "Скасувати", "gui_settings_button_help": "Допомога", "settings_error_unknown": "Не вдалося з'єднатися з контролером Tor, оскільки налаштування беззмістовні.", "settings_error_automatic": "Не вдалося під'єднатися до контролера Tor. Чи запущено Tor браузер (доступний з torproject.org) у фоні?", "settings_error_socket_port": "Не вдалося з'єднатися з контролером Tor за {}: {}.", "settings_error_socket_file": "Не вдалося з'єднатися з контролером Tor за допомогою сокет файлу {}.", "settings_error_auth": "З'єднано з {}:{}, але не вдається автентифікувати. Можливо це не Tor контролер?", "settings_error_missing_password": "З'єднано з контролером Tor, але він вимагає пароль автентифікації.", "settings_error_unreadable_cookie_file": "З'єднано з контролером Tor, але пароль може бути неправильним, або у вас немає прав на читання файлів cookie.", "settings_error_bundled_tor_not_supported": "Використання Tor версії, яка поставляється з OnionShare не працює в режимі розробника на Windows або macOS.", "settings_error_bundled_tor_timeout": "Надто довге з'єднання з Tor. Можливо, відсутнє з'єднання з Інтернетом або у вас неточний системний час?", "settings_error_bundled_tor_broken": "OnionShare не вдалося з'єднатися з Tor:\n{}", "settings_test_success": "З'єднано з контролером Tor.\n\nВерсія Tor: {}\nПідтримка ephemeral onion services: {}.\nПідтримка автентифікації клієнта: {}.\nПідтримка .onion адрес наступного покоління: {}.", "error_tor_protocol_error": "Сталася помилка Tor: {}", "connecting_to_tor": "З'єднання з мережею Tor", "update_available": "Випущено новий OnionShare. Натисніть тут, щоб його отримати.

    Ваша версія {}, а найновіша {}.", "update_error_check_error": "Не вдалося перевірити наявність нових версій: можливо, ви не під'єднані до Tor або вебсайт OnionShare не працює?", "update_error_invalid_latest_version": "Не вдалося перевірити наявність нової версії: вебсайт OnionShare повідомляє, що не вдалося розпізнати найновішу версію '{}'…", "update_not_available": "У вас найновіша версія OnionShare.", "gui_tor_connection_ask": "Відкрити налаштування для перевірки з'єднання з Tor?", "gui_tor_connection_ask_open_settings": "Так", "gui_tor_connection_ask_quit": "Вийти", "gui_tor_connection_error_settings": "Спробуйте змінити в параметрах, як OnionShare з'єднується з мережею Tor.", "gui_tor_connection_canceled": "Не вдалося під'єднатися до Tor. \n\nПереконайтеся, що ви під'єднані до мережі Інтернет, відкрийте OnionShare знову і налаштуйте з'єднання з Tor.", "gui_tor_connection_lost": "Від'єднано від Tor.", "gui_server_started_after_autostop_timer": "Таймер автостопу збіг до початку роботи сервера. Розпочніть надсилання знову.", "gui_server_autostop_timer_expired": "Час автостопу збіг. Налаштуйте його, щоб розпочати надсилання.", "gui_server_autostart_timer_expired": "Запланований час збіг. Оновіть його, щоб почати надсилання.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Час автостопу не може бути однаковим або ранішим за час автозапуску. Налаштуйте його, щоб почати надсилання.", "gui_share_url_description": "Будь-хто, за допомогою цієї адреси та приватного ключа, може завантажити ваші файли, через Tor Browser: ", "gui_receive_url_description": "Будь-хто, за допомогою цієї адреси та приватного ключа, може вивантажити файли на ваш комп'ютер через Tor Browser: ", "gui_url_label_persistent": "Це надсилання не припинятиметься автоматично.

    Кожне наступне надсилання використовує ту ж адресу. (Щоб використовувати одноразову адресу, вимкніть «Завжди відкривати цю вкладку під час запуску OnionShare» в налаштуваннях.)", "gui_url_label_stay_open": "Це надсилання не припинятиметься автоматично.", "gui_url_label_onetime": "Це надсилання не припинятиметься після першого виконання.", "gui_url_label_onetime_and_persistent": "Це надсилання не припинятиметься автоматично.

    Кожне наступне надсилання використовує ту ж адресу. (Щоб використовувати одноразову адресу, вимкніть \"Завжди відкривати цю вкладку під час запуску OnionShare\" в налаштуваннях.)", "gui_status_indicator_share_stopped": "Зупинено", "gui_status_indicator_share_working": "Запуск…", "gui_status_indicator_share_scheduled": "Заплановано…", "gui_status_indicator_share_started": "Надсилання", "gui_status_indicator_receive_stopped": "Зупинено", "gui_status_indicator_receive_working": "Початок…", "gui_status_indicator_receive_scheduled": "Заплановано…", "gui_status_indicator_receive_started": "Отримання", "gui_file_info": "{} файлів, {}", "gui_file_info_single": "{} файл, {}", "history_in_progress_tooltip": "{} в процесі", "history_completed_tooltip": "{} завершено", "error_cannot_create_data_dir": "Не вдалося створити теку даних OnionShare: {}", "gui_receive_mode_warning": "Режим отримання дозволяє завантажувати файли до вашого комп'ютера.

    Деякі файли, потенційно, можуть заволодіти вашим комп'ютером, у разі їх відкриття. Відкривайте файли лише від довірених осіб, або якщо ви впевнені у своїх діях.", "gui_settings_language_label": "Мова", "gui_settings_language_changed_notice": "Перезапустіть OnionShare, щоб змінити мови.", "systray_menu_exit": "Вийти", "systray_page_loaded_title": "Сторінку Завантажено", "systray_page_loaded_message": "OnionShare адресу завантажено", "systray_share_started_title": "Надсилання почалося", "systray_share_started_message": "Початок надсилання комусь файлів", "systray_share_completed_title": "Надсилання виконано", "systray_share_completed_message": "Завершено надсилання файлів", "systray_share_canceled_title": "Надсилання скасовано", "systray_share_canceled_message": "Хтось скасував отримання ваших файлів", "systray_receive_started_title": "Отримання Розпочато", "systray_receive_started_message": "Хтось надсилає вам файли", "gui_all_modes_history": "Історія", "gui_all_modes_clear_history": "Очистити Все", "gui_all_modes_transfer_started": "Розпочато {}", "gui_all_modes_transfer_finished_range": "Передано {} - {}", "gui_all_modes_transfer_finished": "Передано {}", "gui_all_modes_transfer_canceled_range": "Скасовано {} - {}", "gui_all_modes_transfer_canceled": "Скасовано {}", "gui_all_modes_progress_complete": "%p%, {0:s} минуло.", "gui_all_modes_progress_starting": "{0:s}, %p% (обчислення)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Поки що нічого не надіслано", "gui_share_mode_autostop_timer_waiting": "Завершення надсилання…", "gui_receive_mode_no_files": "Поки що нічого не отримано", "gui_receive_mode_autostop_timer_waiting": "Завершення отримання…", "days_first_letter": "д", "hours_first_letter": "г", "minutes_first_letter": "х", "seconds_first_letter": "с", "gui_website_url_description": "Будь-хто, за допомогою цієї адреси та приватного ключа, може відвідати ваш вебсайт через Tor Browser: ", "gui_website_mode_no_files": "Немає опублікованих вебсайтів", "incorrect_password": "Неправильний пароль", "history_requests_tooltip": "{} вебзапити", "gui_close_tab_warning_persistent_description": "Закрити постійну вкладку та втратити адресу onion, яку вона використовує?", "gui_close_tab_warning_website_description": "Закрити вкладку, на якій розміщено вебсайт?", "mode_settings_receive_data_dir_browse_button": "Вибрати", "mode_settings_website_disable_csp_checkbox": "Не надсилати типовий заголовок Content Security Policy (дозволяє вебсайту використовувати сторонні ресурси)", "mode_settings_receive_data_dir_label": "Зберігати файли до", "mode_settings_share_autostop_sharing_checkbox": "Закрити доступ, коли файли надіслано (приберіть прапорець, щоб дозволити завантаження окремих файлів)", "mode_settings_autostop_timer_checkbox": "Зупинити службу onion у запланований час", "mode_settings_autostart_timer_checkbox": "Запускати службу onion у запланований час", "mode_settings_public_checkbox": "Це загальнодоступна служба OnionShare (вимикає приватний ключ)", "mode_settings_persistent_checkbox": "Завжди відкривати цю вкладку під час запуску OnionShare (onion-адреса залишиться та ж сама)", "mode_settings_advanced_toggle_hide": "Сховати розширені налаштування", "mode_settings_advanced_toggle_show": "Показати розширені налаштування", "gui_quit_warning_description": "Вийти та закрити всі вкладки, навіть якщо спільний доступ активний на деяких з них?", "gui_close_tab_warning_receive_description": "Закрити вкладку на яку отримуються файли?", "gui_close_tab_warning_share_description": "Закрити вкладку з якої надсилаються файли?", "gui_new_tab_website_button": "Опублікувати вебсайт", "gui_new_tab_receive_button": "Отримання файлів", "gui_new_tab_share_button": "Надсилання файлів", "gui_quit_warning_cancel": "Скасувати", "gui_quit_warning_title": "Вийти з OnionShare?", "gui_close_tab_warning_cancel": "Скасувати", "gui_close_tab_warning_close": "Ок", "gui_close_tab_warning_title": "Закрити вкладку?", "gui_new_tab_tooltip": "Відкрити нову вкладку", "gui_new_tab": "Нова вкладка", "gui_file_selection_remove_all": "Вилучити всі", "gui_remove": "Вилучити", "gui_new_tab_chat_button": "Анонімне спілкування", "gui_open_folder_error": "Не вдалося відкрити теку за допомогою xdg-open. Файл тут: {}", "gui_tab_name_chat": "Бесіда", "gui_tab_name_website": "Вебсайт", "gui_tab_name_receive": "Отримання", "gui_tab_name_share": "Поділитися", "gui_receive_flatpak_data_dir": "Оскільки ви встановили OnionShare за допомогою Flatpak, ви повинні зберігати файли в теці ~/OnionShare.", "gui_chat_stop_server": "Зупинити сервер бесіди", "gui_chat_start_server": "Запустити сервер бесіди", "gui_qr_code_dialog_title": "QR-код OnionShare", "gui_show_qr_code": "Показати QR-код", "gui_main_page_share_button": "Розпочати надсилання", "gui_main_page_chat_button": "Почати спілкуватися у бесіді", "gui_main_page_website_button": "Почати хостинг", "gui_main_page_receive_button": "Почати отримання", "gui_chat_url_description": "Будь-хто, за цією адресою та з приватним ключем, може приєднатися до цієї бесіди за допомогою Tor Browser: ", "error_port_not_available": "Порт OnionShare недоступний", "gui_rendezvous_cleanup_quit_early": "Вийти раніше", "gui_rendezvous_cleanup": "Очікування закриття схем Tor, щоб переконатися, що файли передано.\n\nЦе може тривати кілька хвилин.", "gui_color_mode_changed_notice": "Перезапустіть OnionShare, щоб переглянути нові кольори.", "mode_settings_receive_webhook_url_checkbox": "Застосовувати мережні обробники сповіщень", "history_receive_read_message_button": "Читати повідомлення", "mode_settings_receive_disable_files_checkbox": "Вимкнути передавання файлів", "mode_settings_receive_disable_text_checkbox": "Вимкнути надсилання тексту", "mode_settings_title_label": "Власний заголовок", "gui_status_indicator_chat_scheduled": "Заплановано…", "gui_status_indicator_chat_started": "Спілкування", "gui_status_indicator_chat_working": "Запуск…", "gui_status_indicator_chat_stopped": "Зупинено", "gui_settings_theme_dark": "Темна", "gui_settings_theme_light": "Світла", "gui_settings_theme_auto": "Автоматична", "gui_settings_theme_label": "Тема", "gui_please_wait_no_button": "Запускається…", "gui_hide": "Сховати", "gui_reveal": "Показати", "gui_qr_label_auth_string_title": "Приватний ключ", "gui_qr_label_url_title": "Адреса OnionShare", "gui_copied_client_auth": "Приватний ключ скопійовано до буфера обміну", "gui_copied_client_auth_title": "Приватний ключ скопійовано", "gui_copy_client_auth": "Скопіювати приватний ключ", "gui_client_auth_instructions": "Далі надішліть приватний ключ, щоб дозволити доступ до служби OnionShare:", "gui_url_instructions_public_mode": "Надішліть вказану внизу адресу OnionShare:", "gui_url_instructions": "Спочатку надішліть вказану внизу адресу OnionShare:", "gui_chat_url_public_description": "Будь-хто, за цією адресою OnionShare, може приєднатися до цієї бесіди за допомогою Tor Browser: ", "gui_website_url_public_description": "Будь-хто, за допомогою цієї адреси OnionShare, може відвідати ваш вебсайт через Tor Browser: ", "gui_receive_url_public_description": "Будь-хто, за допомогою цієї адреси OnionShare, може вивантажити файли на ваш комп'ютер через Tor Browser: ", "gui_share_url_public_description": "Будь-хто, за допомогою цієї адреси OnionShare, може завантажити ваші файли, через Tor Browser: ", "gui_server_doesnt_support_stealth": "На жаль, ця версія Tor не підтримує стелс-режим (автентифікацію клієнта). Спробуйте за допомогою новішої версії Tor або скористайтеся загальнодоступним режимом, якщо він не повинен бути приватним.", "gui_tor_settings_window_title": "Налаштування Tor", "gui_settings_bridge_radio_builtin": "Вибрати вбудований міст", "gui_settings_bridge_none_radio_option": "Не використовувати мости", "gui_settings_stop_active_tabs_label": "На деяких ваших вкладках запущені служби.\nВи повинні зупинити всі служби, щоб змінити налаштування Tor.", "moat_captcha_label": "Розв'яжіть CAPTCHA для запиту мостів.", "moat_captcha_error": "Неправильне розв'язання. Повторіть спробу.", "gui_settings_bridge_use_checkbox": "Використовувати міст", "gui_settings_bridge_moat_radio_option": "Запит мосту на torproject.org", "gui_dragdrop_sandbox_flatpak": "Щоб пісочниця Flatpak була безпечнішою, перетягування не підтримується. Натомість натисніть кнопку «Додати файли» і «Додати теку», щоб вибрати файли.", "gui_settings_controller_extras_label": "Налаштування Tor", "gui_settings_tor_bridges_label": "Мости допомагають перенаправити ваш трафік через мережу Tor, де доступ до Tor заблоковано. Залежно від місця вашого перебування, один міст може працювати краще, ніж інший.", "gui_settings_bridge_moat_button": "Запит нового мосту", "gui_settings_bridge_custom_radio_option": "Укажіть міст, про який ви дізналися з надійного джерела", "gui_settings_bridge_custom_placeholder": "введіть адреса:порт (по одному на рядок)", "gui_settings_version_label": "Ви використовуєте OnionShare {}", "gui_settings_help_label": "Потрібна допомога? Перегляньте docs.onionshare.org", "gui_settings_moat_bridges_invalid": "Ви ще не запитували міст на torproject.org.", "moat_captcha_placeholder": "Введіть символи із зображення", "moat_captcha_submit": "Надіслати", "mode_settings_website_custom_csp_checkbox": "Надсилати власний заголовок Content Security Policy", "moat_contact_label": "Зв'язок з BridgeDB…", "moat_captcha_reload": "Перезавантажити", "mode_tor_not_connected_label": "OnionShare не під'єднано до мережі Tor", "moat_bridgedb_error": "Не вдалося з’єднатися з BridgeDB.", "moat_solution_empty_error": "Введіть символи з зображення", "gui_enable_autoconnect_checkbox": "Автоматично під'єднуватися до Tor", "gui_autoconnect_connection_error_msg": "Переконайтеся, що ви під'єднані до інтернету.", "gui_autoconnect_bridge_detect_automatic": "Автоматично визначати мою країну за моєю IP-адресою для налаштування мосту", "gui_autoconnect_bridge_setting_options": "Налаштування моста", "gui_autoconnect_bridge_detect_manual": "Вручну вибрати мою країну для налаштувань мосту", "gui_autoconnect_try_again_without_a_bridge": "Спробувати ще раз без мосту", "gui_autoconnect_circumventing_censorship": "Усунення проблеми зі з'єднанням…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Обхід цензури…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Запит мостів від API обходу цензури Tor…", "gui_autoconnect_circumventing_censorship_got_bridges": "Мости наведено. Повторне з'єднання з Tor…", "gui_general_settings_window_title": "Загальні", "gui_autoconnect_description": "OnionShare покладається на мережу Tor, роботу якої забезпечують тисячі волонтерів по всьому світу.", "gui_autoconnect_could_not_connect_to_tor_api": "Не вдалося під'єднатися до API Tor. Переконайтеся, що ви під'єднані до Інтернету, перш ніж повторювати спробу.", "gui_autoconnect_circumventing_censorship_starting_meek": "Запуск meek-мосту для фронтингу домену…", "gui_autoconnect_failed_to_connect_to_tor": "Не вдалося під'єднатися до Tor", "gui_autoconnect_start": "Під'єднатися до Tor", "gui_autoconnect_trying_to_connect_to_tor": "З'єднання з Tor…", "gui_autoconnect_bridge_description": "Також можливо, що ваш Інтернет піддається цензурі. Можливо, ви зможете обійти це за допомогою моста.", "gui_autoconnect_configure": "Налаштування мережі", "gui_autoconnect_no_bridge": "Спробувати ще раз без мосту", "waitress_web_server_error": "Під час запуску вебсервера сталася помилка", "gui_close_tab_warning_chat_description": "Закрити вкладку, на якій розміщено чат-сервер?", "gui_chat_mode_explainer": "Режим бесіди дозволяє вам інтерактивно спілкуватися з іншими користувачами в Браузері Tor.

    Історія бесід не зберігається в OnionShare. Історія бесід зникне, коли ви закриєте Браузер Tor.", "mode_settings_persistent_autostart_on_launch_checkbox": "Автоматично запускати цю onion-службу під час запуску OnionShare", "error_generic": "В OnionShare сталася непередбачувана помилка:\n{}", "gui_settings_license_label": "OnionShare має ліцензію GPL v3.
    Ліцензії третіх сторін можна переглянути тут:
    https://github.com/onionshare/onionshare/tree/main/licenses" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/vi.json000066400000000000000000000627561521174352300271430ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} không phải là một file tập tin có thể đọc được.", "other_page_loaded": "Đã tải địa chỉ", "incorrect_password": "Mật khẩu không chính xác", "close_on_autostop_timer": "Đã dừng vì đồng hồ đếm giờ tự động dừng đã điểm giờ", "closing_automatically": "Đã dừng vì việc chuyển giao đã hoàn thành", "large_filesize": "Cảnh báo: Gửi một lượng lớn dữ liệu có thể mất nhiều giờ", "gui_drag_and_drop": "Kéo và thả tập tin và thư mục để bắt đầu chia sẻ", "gui_add": "Thêm", "gui_add_files": "Thêm tập tin", "gui_add_folder": "Thêm thư mục", "gui_remove": "Bỏ", "gui_dragdrop_sandbox_flatpak": "Để làm cho sandbox Flatpak thêm bảo mật, kéo và thả không được hỗ trợ. Để thay thế, sử dụng các nút \"Thêm tập tin\" và \"Thêm thư mục\" để chọn các tập tin.", "gui_file_selection_remove_all": "Bỏ tất cả", "gui_choose_items": "Chọn", "gui_share_start_server": "Bắt đầu chia sẻ", "gui_share_stop_server": "Dừng chia sẻ", "gui_share_stop_server_autostop_timer": "Dừng chia sẻ ({})", "gui_chat_start_server": "Bắt đầu máy chủ chat", "gui_chat_stop_server": "Dừng máy chủ chat", "gui_stop_server_autostop_timer_tooltip": "Đồng hồ đếm giờ tự động dừng kết thúc tại {}", "gui_start_server_autostart_timer_tooltip": "Đồng hồ đếm giờ tự động khởi động sẽ dừng tại {}", "gui_receive_start_server": "Bắt đầu chế độ nhận", "gui_receive_stop_server": "Dừng chế độ nhận", "gui_receive_stop_server_autostop_timer": "Dừng chế độ nhận ({} còn lại)", "gui_receive_flatpak_data_dir": "Vì bạn đã cài đặt OnionShare bằng cách sử dụng Flatpak, bạn phải lưu các tập tin vào một thư mục trong ~/OnionShare.", "gui_copy_url": "Sao chép địa chỉ", "gui_copy_client_auth": "Sao chép khoá key riêng tư", "gui_canceled": "Huỷ bỏ", "gui_copied_url_title": "Đã sao chép địa chỉ OnionShare", "gui_copied_url": "Địa chỉ OnionShare đã được sao chép vào khay nhớ tạm", "gui_copied_client_auth_title": "Khoá key riêng tư đã được sao chép", "gui_copied_client_auth": "Khoá key riêng tư đã được sao chép vào khay nhớ tạm", "gui_show_qr_code": "Hiện mã code QR", "gui_qr_code_dialog_title": "Mã code QR OnionShare", "gui_qr_label_url_title": "Địa chỉ OnionShare", "gui_qr_label_auth_string_title": "Khoá key riêng tư", "gui_reveal": "Lộ diện", "gui_hide": "Ẩn", "gui_waiting_to_start": "Đã lên lịch để bắt đầu vào {}. Nhấp vào để hủy bỏ.", "gui_please_wait_no_button": "Đang bắt đầu…", "gui_please_wait": "Đang bắt đầu... Nhấp vào để huỷ bỏ.", "zip_progress_bar_format": "Đang nén: %p%", "gui_tor_settings_window_title": "Các cài đặt Tor", "gui_autoconnect_description": "OnionShare phụ thuộc vào mạng lưới Tor Network do tình nguyện viên điều hành.", "gui_enable_autoconnect_checkbox": "Tự động kết nối tới Tor", "gui_autoconnect_failed_to_connect_to_tor": "Đã không thể kết nối tới Tor", "gui_autoconnect_trying_to_connect_to_tor": "Đang kết nối tới Tor…", "gui_autoconnect_connection_error_msg": "Hãy chắc chắn rằng bạn đã được kết nối tới Internet.", "gui_autoconnect_bridge_description": "Bạn có thể kết nối bằng cách sử dụng cầu Bridge nếu kết nối Internet của bạn bị kiểm duyệt.", "gui_autoconnect_bridge_detect_automatic": "Xác định quốc gia của tôi từ địa chỉ IP của tôi cho các cài đặt cầu Bridge", "gui_autoconnect_bridge_detect_manual": "Lựa chọn quốc gia của tôi cho các cài đặt cầu Bridge theo cách thủ công", "gui_autoconnect_bridge_setting_options": "Các cài đặt cầu Bridge", "gui_autoconnect_start": "Kết nối tới Tor", "gui_autoconnect_configure": "Các cài đặt Mạng lưới", "gui_autoconnect_no_bridge": "Thử lại mà không sử dụng cầu Bridge", "gui_autoconnect_try_again_without_a_bridge": "Thử lại mà không sử dụng cầu Bridge", "gui_autoconnect_circumventing_censorship": "Đang giải quyết các sự cố kết nối…", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Đang vượt kiểm duyệt…", "gui_autoconnect_circumventing_censorship_starting_meek": "Thiết lập cầu Bridge \"meek\" cho tên miền trước Domain-Fronting…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "Yêu cầu các cầu Bridge từ API vượt kiểm duyệt Tor…", "gui_autoconnect_circumventing_censorship_got_bridges": "Các cầu Bridge đã được thiết lập. Đang kết nối lại tới Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "Đã không thể kết nối tới API Tor. Đảm bảo rằng bạn đã kết nối tới Internet trước khi thử lại.", "gui_settings_window_title": "Cài đặt", "gui_general_settings_window_title": "Tổng quan", "gui_settings_autoupdate_label": "Kiểm tra phiên bản mới", "gui_settings_autoupdate_option": "Lưu ý cho tôi khi có một phiên bản mới khả dụng", "gui_settings_autoupdate_timestamp": "Kiểm tra lần cuối: {}", "gui_settings_autoupdate_timestamp_never": "Không bao giờ", "gui_settings_autoupdate_check_button": "Kiểm tra phiên bản mới", "gui_settings_connection_type_label": "OnionShare nên kết nối tới Tor theo cách nào?", "gui_settings_connection_type_bundled_option": "Sử dụng phiên bản Tor đã được tích hợp vào OnionShare", "gui_settings_connection_type_automatic_option": "Thử tự động cấu hình với Trình duyệt Tor Browser", "gui_settings_controller_extras_label": "Cài đặt Tor", "gui_settings_connection_type_control_port_option": "Kết nối sử dụng cổng điều khiển", "gui_settings_connection_type_socket_file_option": "Kết nối sử dụng tập tin socket", "gui_settings_connection_type_test_button": "Kết nối thử nghiệm tới Tor", "gui_settings_control_port_label": "Cổng điều khiển", "gui_settings_socket_file_label": "Tập tin Socket", "gui_settings_socks_label": "Cổng SOCKS", "gui_settings_authenticate_no_auth_option": "Không xác thực hoặc xác thực cookie", "gui_settings_authenticate_password_option": "Mật khẩu", "gui_settings_password_label": "Mật khẩu", "gui_settings_tor_bridges": "Sử dụng một cầu Bridge của Tor để kết nối chứ?", "gui_settings_tor_bridges_label": "Cầu Bridge giúp giao thông của bạn đi vào mạng lưới Tor Network nếu truy cập vào Tor bị chặn. Phụ thuộc vào việc bạn kết nối từ nơi nào, một cầu Bridge có thể hoạt động tốt hơn cái khác.", "gui_settings_bridge_use_checkbox": "Sử dụng một cầu Bridge", "gui_settings_bridge_radio_builtin": "Chọn một cầu Bridge đã được tích hợp", "gui_settings_bridge_none_radio_option": "Không sử dụng cầu Bridge", "gui_settings_meek_lite_expensive_warning": "Cảnh báo: Các cầu Bridge \"meek-azure\" rất tốn kém cho Dự Án Tor để chạy.

    Chỉ sử dụng chúng nếu không thể kết nối trực tiếp tới Tor, thông qua phương thức vận chuyển obfs4, hoặc các cầu Bridge thông thường khác.", "gui_settings_bridge_moat_radio_option": "Yêu cầu một cầu Bridge từ torproject.org", "gui_settings_bridge_moat_button": "Yêu cầu một cầu Bridge mới", "gui_settings_bridge_custom_radio_option": "Cung cấp một cầu Bridge bạn đã biết từ một nguồn cung cấp đáng tin cậy", "gui_settings_bridge_custom_placeholder": "Viết theo kiểu dạng địa chỉ:cổng (một trên mỗi dòng)", "gui_settings_moat_bridges_invalid": "Bạn vẫn chưa yêu cầu một cầu Bridge từ torproject.org.", "gui_settings_tor_bridges_invalid": "Không có cầu Bridge mà bạn thêm vào nào hoạt động cả. Kiểm tra lại chúng hoặc thêm cái khác vào.", "gui_settings_stop_active_tabs_label": "Có một số dịch vụ vẫn đang chạy trong một số tab của bạn.\nBạn phải dừng tất cả các dịch vụ để thay đổi cài đặt Tor của bạn.", "gui_settings_button_save": "Lưu", "gui_settings_button_cancel": "Huỷ bỏ", "gui_settings_button_help": "Giúp đỡ", "gui_settings_version_label": "Bạn đang sử dụng OnionShare {}", "gui_settings_help_label": "Yêu cầu trợ giúp ư? Hãy xem docs.onionshare.org", "settings_test_success": "Đã kết nối tới bộ điều khiển Tor.\n\nPhiên bản Tor: {}\nHỗ trợ các dịch vụ onion tạm thời: {}.\nHỗ trợ xác thực máy khách: {}.\nHỗ trợ các địa chỉ .onion thế hệ tiếp theo: {}.", "connecting_to_tor": "Đang kết nối tới mạng lưới Tor Network", "update_available": "Có một phiên bản OnionShare mới. Nhấp vào đây để lấy nó về.

    Bạn đang sử dụng {} và phiên bản mới nhất là {}.", "update_error_invalid_latest_version": "Đã không thể kiểm tra phiên bản mới: Theo như trang web OnionShare thì phiên bản mới nhất là phiên bản không xác định '{}'…", "update_error_check_error": "Đã không thể kiểm tra phiên bản mới: Có thể bạn đã không được kết nối tới Tor, hoặc trang web OnionShare đang ngoại tuyến?", "update_not_available": "Bạn đang chạy phiên bản OnionShare mới nhất.", "gui_tor_connection_ask": "Mở cài đặt để sắp xếp kết nối tới Tor chứ?", "gui_tor_connection_ask_open_settings": "Có", "gui_tor_connection_ask_quit": "Từ bỏ", "gui_tor_connection_error_settings": "Thử thay đổi cách làm thế nào OnionShare kết nối tới mạng lưới Tor Network trong cài đặt.", "gui_tor_connection_canceled": "Đã không thể kết nối tới Tor.\n\nHãy chắc chắn rằng bạn đã kết nối tới Internet, sau đó mở lại OnionShare và cài đặt kết nối tới Tor của nó.", "gui_tor_connection_lost": "Đã ngắt kết nối từ Tor.", "gui_server_started_after_autostop_timer": "Đồng hồ đếm giờ tự động dừng đã hết giờ trước khi máy chủ bắt đầu. Xin vui lòng thực hiện chia sẻ mới lại.", "gui_server_autostop_timer_expired": "Đồng hồ đếm giờ tự động dừng đã hết giờ. Xin vui lòng điều chỉnh nó để bắt đầu chia sẻ.", "gui_server_autostart_timer_expired": "Thời gian theo như lịch trình đã định trôi qua mất rồi. Xin vui lòng điều chỉnh nó để bắt đầu chia sẻ nhé.", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Thời gian tự động dừng không thể trùng khớp hoặc sớm hơn thời gian tự động bắt đầu. Xin vui lòng điều chỉnh nó để bắt đầu chia sẻ.", "gui_server_doesnt_support_stealth": "Xin lỗi, phiên bản này của Tor không hỗ trợ tàng hình (xác thực máy khách). Xin vui lòng thử lại với một phiên bản mới hơn của Tor, hoặc sử dụng chế độ 'công cộng' nếu nó không cần phải được riêng tư.", "gui_share_url_description": "Bất kỳ ai có địa chỉ OnionShare và khóa key cá nhân này đều có thể tải xuống các tệp của bạn bằng cách sử dụng Trình duyệt Tor: ", "gui_share_url_public_description": "Bất kỳ ai có địa chỉ OnionShare này có thể tải xuống các tập tin của bạn bằng cách sử dụng Trình duyệt Tor Browser: ", "gui_website_url_description": "Bất kỳ ai có địa chỉ OnionShare và khoá key cá nhân này có thể ghé thăm trang web của bạn bằng cách sử dụng Trình duyệt Tor Browser: ", "gui_website_url_public_description": "Bất kỳ ai có địa chỉ OnionShare này có thể ghé thăm trang web của bạn bằng cách sử dụng Trình duyệt Tor Browser: ", "gui_receive_url_description": "Bất kỳ ai có địa chỉ OnionShare và khoá key cá nhân này có thể tải lên các tập tin tới máy tính của bạn bằng cách sử dụng Trình duyệt Tor Browser: ", "gui_receive_url_public_description": "Bất kỳ ai có địa chỉ OnionShare này có thể tải lên các tập tin tới máy tính của bạn bằng cách sử dụng Trình duyệt Tor Browser: ", "gui_chat_url_description": "Bất kỳ ai có địa chỉ OnionShare và khoá key cá nhân này có thể tham gia vào phòng chat này bằng cách sử dụng Trình duyệt Tor Browser: ", "gui_chat_url_public_description": "Bất kỳ ai có địa chỉ OnionShare này có thể tham gia phòng chat này bằng cách sử dụng Trình duyệt Tor Browser: ", "gui_url_label_persistent": "Chia sẻ này sẽ không tự động dừng.

    Mỗi lần chia sẻ tiếp theo sẽ sử dụng lại địa chỉ. (Để sử dụng địa chỉ một lần, hãy tắt \"Luôn mở tab này khi OnionShare được khởi động\" trong cài đặt.)", "gui_url_label_stay_open": "Lượt chia sẻ này sẽ không tự động dừng.", "gui_url_label_onetime": "Lượt chia sẻ này sẽ dừng lại sau khi hoàn thành lần đầu tiên.", "gui_url_label_onetime_and_persistent": "Chia sẻ này sẽ không tự động dừng.

    Mỗi lần chia sẻ tiếp theo sẽ sử dụng lại địa chỉ. (Để sử dụng địa chỉ một lần, hãy tắt \"Luôn mở tab này khi OnionShare được khởi động\" trong cài đặt.)", "gui_url_instructions": "Đầu tiên, hãy gửi địa chỉ OnionShare bên dưới:", "gui_url_instructions_public_mode": "Gửi địa chỉ OnionShare bên dưới:", "gui_client_auth_instructions": "Tiếp theo, gửi khóa key riêng tư để cho phép truy cập vào dịch vụ OnionShare của bạn:", "gui_status_indicator_share_stopped": "Đã dừng", "gui_status_indicator_share_working": "Đang bắt đầu…", "gui_status_indicator_share_scheduled": "Lên kế hoạch…", "gui_status_indicator_share_started": "Chia sẻ", "gui_status_indicator_receive_stopped": "Đã dừng", "gui_status_indicator_receive_working": "Đang bắt đầu…", "gui_status_indicator_receive_scheduled": "Lên kế hoạch…", "gui_status_indicator_receive_started": "Đang nhận", "gui_status_indicator_chat_stopped": "Đã dừng", "gui_status_indicator_chat_working": "Đang bắt đầu…", "gui_status_indicator_chat_scheduled": "Lên kế hoạch…", "gui_status_indicator_chat_started": "Chat hội thoại", "gui_file_info": "{} các tập tin, {}", "gui_file_info_single": "{} tập tin, {}", "history_in_progress_tooltip": "{} đang tiến hành", "history_completed_tooltip": "{} đã hoàn thành", "history_requests_tooltip": "{} các yêu cầu web", "error_cannot_create_data_dir": "Đã không thể tạo thư mục dữ liệu OnionShare: {}", "gui_receive_mode_warning": "Chế độ nhận cho phép mọi người tải tập tin tới máy tính của bạn.

    Một số tệp có thể chiếm quyền kiểm soát máy tính của bạn nếu bạn mở chúng. Chỉ mở những thứ từ những người bạn tin tưởng, hoặc nếu bạn biết mình đang làm gì.", "gui_open_folder_error": "Đã không thể mở thư mục bằng xdg-open. Tập tin ở đây: {}", "gui_settings_language_label": "Ngôn ngữ", "gui_settings_theme_label": "Chủ đề", "gui_settings_theme_auto": "Tự động", "gui_settings_theme_light": "Sáng", "gui_settings_theme_dark": "Tối", "gui_settings_language_changed_notice": "Khởi động lại OnionShare để thay đổi sang ngôn ngữ mới.", "gui_color_mode_changed_notice": "Khởi động lại OnionShare để xem những màu sắc mới.", "systray_menu_exit": "Từ bỏ", "systray_page_loaded_title": "Đã tải Trang web", "systray_page_loaded_message": "đã tải địa chỉ OnionShare", "systray_share_started_title": "Đã bắt đầu chia sẻ", "systray_share_started_message": "Đã bắt đầu gửi các tập tin tới một người khác", "systray_share_completed_title": "Đã hoàn thành chia sẻ", "systray_share_completed_message": "Đã hoàn thành chia sẻ các tập tin", "systray_share_canceled_title": "Đã huỷ bỏ chia sẻ", "systray_share_canceled_message": "Ai đó đã hủy nhận tập tin của bạn", "systray_receive_started_title": "Đã bắt đầu nhận", "systray_receive_started_message": "Ai đó đang gửi các tập tin tới bạn", "gui_all_modes_history": "Lịch sử tiến trình", "gui_all_modes_clear_history": "Xóa tất cả danh sách", "gui_all_modes_transfer_started": "Đã bắt đầu {}", "gui_all_modes_progress_complete": "%p%, {0:s} đã trôi qua.", "gui_all_modes_progress_starting": "{0:s}, %p% (đang tính toán)", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_share_mode_no_files": "Chưa có tập tin nào được gửi", "gui_share_mode_autostop_timer_waiting": "Đang hoàn tất gửi đi…", "gui_website_mode_no_files": "Chưa có trang web nào được chia sẻ", "gui_receive_mode_no_files": "Chưa tập tin nào được nhận", "gui_receive_mode_autostop_timer_waiting": "Đang hoàn tất nhận…", "days_first_letter": "d", "hours_first_letter": "h", "minutes_first_letter": "m", "seconds_first_letter": "s", "gui_new_tab": "Tab mới", "gui_new_tab_tooltip": "Mở một tab mới", "gui_new_tab_share_button": "Chia sẻ các tập tin", "gui_new_tab_receive_button": "Nhận các tập tin", "gui_new_tab_website_button": "Thành lập host một trang web", "gui_new_tab_chat_button": "Trò chuyện ẩn danh", "gui_main_page_share_button": "Bắt đầu chia sẻ", "gui_main_page_receive_button": "Bắt đầu nhận", "gui_main_page_website_button": "Bắt đầu thành lập trang web", "gui_main_page_chat_button": "Bắt đầu chat trò chuyện", "gui_tab_name_share": "Chia sẻ", "gui_tab_name_receive": "Nhận", "gui_tab_name_website": "Trang web", "gui_tab_name_chat": "Chat trò chuyện", "gui_close_tab_warning_title": "Đóng tab chứ?", "gui_close_tab_warning_persistent_description": "Đóng tab liên tục và để mất địa chỉ onion đang sử dụng chứ?", "gui_close_tab_warning_share_description": "Đóng tab đang gửi tập tin chứ?", "gui_close_tab_warning_receive_description": "Đóng tab đang nhận tập tin?", "gui_close_tab_warning_website_description": "Đóng tab đang lưu trữ host một trang web chứ?", "gui_close_tab_warning_close": "Đồng ý", "gui_close_tab_warning_cancel": "Huỷ bỏ", "gui_quit_warning_title": "Thoát OnionShare chứ?", "gui_quit_warning_description": "Thoát và đóng tất cả các tab, mặc dù tính năng chia sẻ vẫn đang hoạt động ở một số tab chứ?", "gui_quit_warning_quit": "Thoát", "gui_quit_warning_cancel": "Hủy bỏ", "mode_settings_advanced_toggle_show": "Hiển thị cài đặt nâng cao", "mode_settings_advanced_toggle_hide": "Ẩn các cài đặt nâng cao", "mode_settings_title_label": "Tiêu đề tùy chỉnh", "mode_settings_persistent_checkbox": "Luôn mở tab này khi OnionShare được khởi động (địa chỉ onion sẽ giữ nguyên)", "mode_settings_public_checkbox": "Đây là dịch vụ OnionShare công cộng (tắt khóa key riêng tư)", "mode_settings_autostart_timer_checkbox": "Bắt đầu dịch vụ onion vào thời gian đã lên kế hoạch", "mode_settings_autostop_timer_checkbox": "Dừng dịch vụ onion vào thời gian đã lên kế hoạch", "mode_settings_share_autostop_sharing_checkbox": "Dừng chia sẻ sau khi các tập tin đã được gửi (bỏ chọn để cho phép tải xuống các tập tin riêng lẻ)", "mode_settings_receive_data_dir_label": "Lưu các tập tin vào", "mode_settings_receive_data_dir_browse_button": "Duyệt", "mode_settings_receive_disable_text_checkbox": "Tắt gửi văn bản", "mode_settings_receive_disable_files_checkbox": "Vô hiệu hóa việc tải lên các tập tin", "mode_settings_receive_webhook_url_checkbox": "Sử dụng webhook thông báo", "mode_settings_website_disable_csp_checkbox": "Không gửi tiêu đề Chính sách Bảo mật Nội dung mặc định (cho phép trang web của bạn sử dụng các tài nguyên của bên thứ ba)", "mode_settings_website_custom_csp_checkbox": "Gửi một tiêu đề Chính sách Bảo mật Nội dung tuỳ chỉnh", "gui_all_modes_transfer_finished_range": "Chuyển giao {} - {}", "gui_all_modes_transfer_finished": "Đã chuyển giao {}", "gui_all_modes_transfer_canceled_range": "Đã huỷ bỏ {} - {}", "gui_all_modes_transfer_canceled": "Đã huỷ bỏ {}", "settings_error_unknown": "Không thể kết nối tới bộ điều khiển Tor vì cài đặt của bạn không hợp lý.", "settings_error_automatic": "Đã không thể kết nối tới bộ điều khiển Tor. Trình duyệt Tor Browser (có sẵn từ torproject.org) có đang chạy dưới nền không?", "settings_error_socket_port": "Không thể kết nối tới bộ điều khiển Tor tại {}:{}.", "settings_error_socket_file": "Không thể kết nối tới bộ điều khiển Tor bằng cách sử dụng tập tin socket {}.", "settings_error_auth": "Đã kết nối tới {}:{}, nhưng không thể xác thực. Có lẽ đây không phải là bộ điều khiển Tor?", "settings_error_missing_password": "Đã kết nối tới bộ điều khiển Tor, nhưng nó yêu cầu mật khẩu để xác thực.", "settings_error_unreadable_cookie_file": "Đã kết nối tới bộ điều khiển Tor, nhưng mật khẩu có thể sai, hoặc người dùng của bạn không được cho phép đọc tập tin cookie.", "settings_error_bundled_tor_not_supported": "Sử dụng phiên bản Tor đi kèm với OnionShare không hoạt động ở chế độ nhà phát triển trên hệ điều hành Windows hoặc macOS.", "settings_error_bundled_tor_timeout": "Mất quá nhiều thời gian để kết nối tới Tor. Có thể bạn chưa kết nối tới Internet, hoặc có một đồng hồ hệ thống không chính xác?", "settings_error_bundled_tor_broken": "OnionShare đã không thể kết nối tới Tor:\n{}", "gui_rendezvous_cleanup": "Đang đợi các mạch nối Tor đóng lại để chắc chắn rằng các tập tin của bạn đã được chuyển giao.\n\nĐiều này có thể mất một vài phút.", "gui_rendezvous_cleanup_quit_early": "Thoát sớm", "error_port_not_available": "Cổng OnionShare không khả dụng", "history_receive_read_message_button": "Đọc tin nhắn", "error_tor_protocol_error": "Có một lỗi đã xảy ra với Tor: {}", "moat_contact_label": "Đang liên hệ BridgeDB…", "moat_captcha_label": "Giải CAPTCHA để yêu cầu một cầu Bridge.", "moat_captcha_placeholder": "Nhập các ký tự từ hình ảnh", "moat_captcha_submit": "Đệ trình", "moat_captcha_reload": "Tải lại", "moat_bridgedb_error": "Đã không thể liên hệ BridgeDB.", "moat_captcha_error": "Đáp án không chính xác. Xin thử lại.", "moat_solution_empty_error": "Nhập các ký tự từ hình ảnh", "mode_tor_not_connected_label": "OnionShare không được kết nối tới mạng lưới Tor Network", "waitress_web_server_error": "Đã xảy ra một sự cố khi đang khởi động máy chủ web server", "gui_close_tab_warning_chat_description": "Đóng tab đang host một máy chủ trò chuyện chat server đi chứ?", "gui_chat_mode_explainer": "Chế độ Chat trò chuyện cho phép bạn chat tương tác với các bên khác, trong trình duyệt Tor Browser.

    Lịch sử Chat không được lưu trữ lại trong OnionShare. Lịch sử Chat sẽ biến mất khi bạn đóng trình duyệt Tor Browser.", "error_generic": "Có lỗi không mong muốn xảy ra với OnionShare:\n{}", "mode_settings_persistent_autostart_on_launch_checkbox": "‘Tự động khởi động dịch vụ onion này khi OnionShare khởi động", "gui_settings_license_label": "OnionShare được cấp phép theo GPL v3.
    Có thể xem giấy phép của bên thứ ba tại đây:
    https://github.com/onionshare/onionshare/tree/main/licenses" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/wo.json000066400000000000000000000000031521174352300271230ustar00rootroot00000000000000{} onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/yo.json000066400000000000000000000032251521174352300271360ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} je oun ti a ko le ka.", "other_page_loaded": "Adiresi ti wole", "close_on_autostop_timer": "O danuduro nitori akoko idaduro aifowoyi ti pe", "closing_automatically": "Odanuduro nitori o ti fi ranse tan", "large_filesize": "Ikilo: Fi fi nkan repete ranse le gba aimoye wakati", "gui_drag_and_drop": "Wo awon iwe pelebe ati apamowo re sibi lati bere sini fi ranse", "gui_add": "Fikun", "gui_choose_items": "Yan", "gui_share_start_server": "Bere si ni pin", "gui_share_stop_server": "Dawo pinpin duro", "gui_share_stop_server_autostop_timer": "Dawo pinpin duro ({})", "gui_receive_start_server": "Bere ipele gbigba", "gui_receive_stop_server": "Duro ipele gbigba", "gui_start_server_autostart_timer_tooltip": "Akoko ti nbere laifowoyi duro ni {}", "gui_stop_server_autostop_timer_tooltip": "Akoko ti nduro laifowoyi dopin ni {}", "gui_chat_stop_server": "Da olupin iregbe duro", "gui_chat_start_server": "Bere olupin iregbe", "gui_file_selection_remove_all": "Yo gbogbo re kuro", "gui_remove": "Yokuro", "gui_add_folder": "S'afikun folda", "gui_add_files": "S'afikun faili", "incorrect_password": "Ashiko oro igbaniwole", "gui_settings_language_label": "Èdè", "gui_tab_name_chat": "Chat", "gui_all_modes_history": "Ìtàn", "gui_settings_password_label": "Password", "gui_quit_warning_cancel": "Cancel", "gui_tor_connection_ask_open_settings": "Yes", "moat_captcha_submit": "Submit", "gui_close_tab_warning_cancel": "Cancel", "gui_settings_authenticate_password_option": "Password", "gui_settings_button_cancel": "Cancel" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/zh_Hans.json000066400000000000000000000474321521174352300301110ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} 不是可读文件。", "other_page_loaded": "地址已加载", "close_on_autostop_timer": "因自动停止计时器达到计时上限而停止", "closing_automatically": "因传输完成而停止", "large_filesize": "警告:发送较大的共享文件可能需数小时", "systray_menu_exit": "退出", "gui_drag_and_drop": "拖放文件和文件夹以开始共享", "gui_add": "添加", "gui_choose_items": "选取", "gui_share_start_server": "开始共享", "gui_share_stop_server": "停止共享", "gui_share_stop_server_autostop_timer": "停止共享({})", "gui_receive_start_server": "开启接收模式", "gui_receive_stop_server": "停止接收模式", "gui_receive_stop_server_autostop_timer": "停止接收模式(还剩 {} )", "gui_copy_url": "复制地址", "gui_canceled": "已取消", "gui_copied_url_title": "已复制 OnionShare 地址", "gui_copied_url": "OnionShare 地址已复制到剪贴板", "gui_please_wait": "正在开启…点击以取消。", "gui_quit_warning_quit": "退出", "zip_progress_bar_format": "压缩中:%p%", "gui_settings_window_title": "设置", "gui_settings_autoupdate_label": "检查新版本", "gui_settings_autoupdate_option": "新版本可用时通知我", "gui_settings_autoupdate_timestamp": "上次检查时间:{}", "gui_settings_autoupdate_timestamp_never": "从不", "gui_settings_autoupdate_check_button": "检查新版本", "gui_settings_connection_type_label": "OnionShare 如何连接至 Tor?", "gui_settings_connection_type_bundled_option": "使用 OnionShare 内置的 Tor 版本", "gui_settings_connection_type_automatic_option": "尝试使用 Tor 浏览器的自动设置", "gui_settings_connection_type_control_port_option": "使用控制端口连接", "gui_settings_connection_type_socket_file_option": "使用 socket 文件连接", "gui_settings_connection_type_test_button": "测试 Tor 连接", "gui_settings_control_port_label": "控制端口", "gui_settings_socket_file_label": "Socket 文件", "gui_settings_socks_label": "SOCKS 端口", "gui_settings_authenticate_no_auth_option": "无验证,或者 cookie 验证", "gui_settings_authenticate_password_option": "密码", "gui_settings_password_label": "密码", "gui_settings_tor_bridges": "使用 Tor 网桥连接?", "gui_settings_meek_lite_expensive_warning": "警告:meek-azure 网桥会对 Tor 的运行产生极大负担。

    仅在无法直接连接以及通过 obfs4 或其他网桥连接 Tor 时使用。", "gui_settings_tor_bridges_invalid": "你添加的网桥都无法工作。请再次检查或添加其它网桥。", "gui_settings_button_save": "保存", "gui_settings_button_cancel": "取消", "gui_settings_button_help": "帮助", "settings_error_unknown": "无法连接至 Tor 控制器,因为你的设置无效。", "settings_error_automatic": "无法连接至 Tor 控制器。Tor 浏览器(可从 torproject.org 获取)是否正在后台运行?", "settings_error_socket_port": "无法连接至位于 {}:{} 的 Tor 控制器。", "settings_error_socket_file": "无法通过 socket 文件 {} 连接至 Tor 控制器。", "settings_error_auth": "已连接至 {}:{},但无法验证。这也许不是一个 Tor 控制器?", "settings_error_missing_password": "已连接至 Tor 控制器,但需要密码进行验证。", "settings_error_unreadable_cookie_file": "已连接至 Tor 控制器,但密码可能错误,或你的用户没有读取 cookie 文件的权限。", "settings_error_bundled_tor_not_supported": "OnionShare 自带的 Tor 版本无法在 Windows 或 macOS 以开发者模式运行。", "settings_error_bundled_tor_timeout": "连接至 Tor 的时间过长。也许你未连接至互联网,或是系统时间不准确?", "settings_error_bundled_tor_broken": "OnionShare 无法连接至 Tor\n{}", "settings_test_success": "已连接至 Tor 控制器。\n\nTor版本:{}\n支持临时洋葱服务:{}。\n支持客户端验证:{}。\n支持下一代 .onion 地址:{}。", "error_tor_protocol_error": "Tor 发生错误:{}", "connecting_to_tor": "正在连接至 Tor 网络", "update_available": "有新版本的 OnionShare 可用:点击这里以获取。

    正在使用的版本为 {},最新版本为 {}。", "update_error_check_error": "无法检查更新:可能没有连接到 Tor,或者OnionShare 关闭?", "update_error_invalid_latest_version": "无法检查更新:OnionShare 网站认为最新版本无法识别'{}'…", "update_not_available": "正在运行最新版本的 OnionShare。", "gui_tor_connection_ask": "打开设置以检查 Tor 连接?", "gui_tor_connection_ask_open_settings": "是", "gui_tor_connection_ask_quit": "退出", "gui_tor_connection_error_settings": "请尝试在设置中改变 OnionShare 连接 Tor 的方式。", "gui_tor_connection_canceled": "无法连接 Tor。\n\n请确保已连接互联网,然后重启 OnionShare 并设置 Tor 连接。", "gui_tor_connection_lost": "已断开与 Tor 的连接。", "gui_server_started_after_autostop_timer": "在服务器启动之前,自动停止定时器的计时已到。请建立一个新的共享。", "gui_server_autostop_timer_expired": "自动停止定时器计时已到。请对其调整以开始共享。", "gui_share_url_description": "任何人只要有这个 OnionShare 地址和私钥,都可以用 Tor Browser 下载你的文件:", "gui_receive_url_description": "任何人只要有 OnionShare 地址和私钥,都可以用 Tor 浏览器上传文件到你的计算机:", "gui_url_label_persistent": "此共享不会自动停止。

    每个后续共享都会重复使用此地址。(要使用一次性地址,请在设置中关闭“启动 OnionShare 时始终打开此标签页”。)", "gui_url_label_stay_open": "这个共享不会自动停止。", "gui_url_label_onetime": "这个共享将在初次完成后停止。", "gui_url_label_onetime_and_persistent": "此共享不会自动停止。

    每个后续共享都将重复使用此地址。(要使用一次性地址,请在设置中关闭“启动 OnionShare 时始终打开此标签页”。)", "gui_status_indicator_share_stopped": "已停止", "gui_status_indicator_share_working": "正在开始…", "gui_status_indicator_share_started": "共享中", "gui_status_indicator_receive_stopped": "已停止", "gui_status_indicator_receive_working": "正在开始…", "gui_status_indicator_receive_started": "正在接收", "gui_file_info": "{} 个文件,{}", "gui_file_info_single": "{} 个文件,{}", "history_in_progress_tooltip": "{} 个正在进行", "history_completed_tooltip": "{} 个已完成", "gui_receive_mode_warning": "接收模式允许他人向你的电脑上传文件。

    打开一些文件可能导致你的电脑被控制。仅打开可信任的文件,或知道自己在做什么时打开文件。", "systray_page_loaded_title": "页面已加载", "gui_settings_language_label": "语言", "gui_settings_language_changed_notice": "重启 OnionShare 来更改至新语言。", "gui_add_files": "添加文件", "gui_add_folder": "添加文件夹", "error_cannot_create_data_dir": "无法创建 OnionShare 数据文件夹:{}", "systray_page_loaded_message": "OnionShare 地址已加载", "systray_share_started_title": "共享已开始", "systray_share_started_message": "正在开始向某人发送文件", "systray_share_completed_title": "共享已完成", "systray_share_completed_message": "文件发送已完成", "systray_share_canceled_title": "共享已取消", "systray_share_canceled_message": "某人已取消接收你的文件", "systray_receive_started_title": "已开始接收", "systray_receive_started_message": "某人正在向你发送文件", "gui_all_modes_history": "历史", "gui_all_modes_clear_history": "清除全部", "gui_all_modes_transfer_started": "开始于 {}", "gui_all_modes_transfer_finished_range": "已传输 {} - {}", "gui_all_modes_transfer_finished": "已传输 {}", "gui_all_modes_progress_complete": "%p%,已耗时 {0:s}。", "gui_all_modes_progress_starting": "{0:s},%p%(计算中)", "gui_all_modes_progress_eta": "{0:s},预计完成时间:{1:s},%p%", "gui_share_mode_no_files": "尚未发送文件", "gui_share_mode_autostop_timer_waiting": "正在完成发送…", "gui_receive_mode_no_files": "尚未接收文件", "gui_receive_mode_autostop_timer_waiting": "正在完成接收…", "gui_all_modes_transfer_canceled_range": "已取消 {} - {}", "gui_all_modes_transfer_canceled": "已取消 {}", "gui_stop_server_autostop_timer_tooltip": "自动停止的定时器在 {} 停止", "gui_start_server_autostart_timer_tooltip": "自动开始定时器在 {} 停止", "gui_waiting_to_start": "已计划在 {} 后开始。点击取消。", "gui_server_autostart_timer_expired": "已超过计划的时间。请对其调整以开始共享。", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "自动停止时间不可早于或相同于自动开始时间。请对其调整以开始共享。", "gui_status_indicator_share_scheduled": "已计划…", "gui_status_indicator_receive_scheduled": "已计划…", "days_first_letter": "天", "hours_first_letter": "小时", "minutes_first_letter": "分", "seconds_first_letter": "秒", "gui_website_url_description": "任何人只要有 OnionShare 地址和私钥,都可以用 Tor 浏览器访问你的网站:", "gui_website_mode_no_files": "尚未分享网站", "incorrect_password": "密码错误", "history_requests_tooltip": "{} 个网络请求", "mode_settings_website_disable_csp_checkbox": "不发送默认的内容安全政策 (Content Security Policy) 头部(允许你的网站使用第三方资源)", "mode_settings_receive_data_dir_browse_button": "浏览", "mode_settings_receive_data_dir_label": "保存文件到", "mode_settings_share_autostop_sharing_checkbox": "文件传送完后停止共享(取消选中可允许下载单个文件)", "mode_settings_autostop_timer_checkbox": "定时停止洋葱服务", "mode_settings_autostart_timer_checkbox": "定时启动洋葱服务", "mode_settings_public_checkbox": "这是一个公共 OnionShare 服务(禁用私钥)", "mode_settings_persistent_checkbox": "启动 OnionShare 时始终打开此标签页(洋葱地址将保持不变)", "mode_settings_advanced_toggle_hide": "隐藏高级选项", "mode_settings_advanced_toggle_show": "显示高级选项", "gui_quit_warning_cancel": "取消", "gui_quit_warning_description": "一些标签页还在共享,是否退出并关闭所有标签页?", "gui_quit_warning_title": "退出 OnionShare?", "gui_close_tab_warning_cancel": "取消", "gui_close_tab_warning_close": "确定", "gui_close_tab_warning_website_description": "关闭正托管网站的标签页?", "gui_close_tab_warning_receive_description": "关闭正在接收文件的标签页?", "gui_close_tab_warning_share_description": "关闭正在发送文件的标签页?", "gui_close_tab_warning_persistent_description": "是否关闭持久标签页并丢失它正在使用的洋葱地址?", "gui_close_tab_warning_title": "关闭标签页?", "gui_new_tab_website_button": "托管网站", "gui_new_tab_receive_button": "接收文件", "gui_new_tab_share_button": "共享文件", "gui_new_tab_tooltip": "打开新标签页", "gui_new_tab": "新建标签页", "gui_show_qr_code": "显示二维码", "gui_receive_flatpak_data_dir": "因为使用 Flatpack 安装 OnionShare,必须将文件保存到 ~/OnionShare 中的文件夹。", "gui_chat_stop_server": "停止聊天服务器", "gui_chat_start_server": "启动聊天服务器", "gui_file_selection_remove_all": "移除全部", "gui_remove": "移除", "gui_qr_code_dialog_title": "Onionshare 二维码", "error_port_not_available": "OnionShare 端口不可用", "gui_tab_name_chat": "聊天", "gui_tab_name_website": "网站", "gui_tab_name_receive": "接收", "gui_tab_name_share": "分享", "gui_main_page_chat_button": "开始聊天", "gui_main_page_website_button": "开始托管", "gui_main_page_receive_button": "开始接收", "gui_main_page_share_button": "开始分享", "gui_new_tab_chat_button": "匿名聊天", "gui_open_folder_error": "无法用 xdg-open 打开文件夹。文件在这里: {}", "gui_chat_url_description": "任何人只要有 OnionShare 地址和私钥,都可以用 Tor 浏览器加入该聊天室", "gui_rendezvous_cleanup_quit_early": "提前退出", "gui_rendezvous_cleanup": "等待 Tor 线路关闭,以确保文件传输成功。\n\n这可能需要几分钟。", "gui_color_mode_changed_notice": "重启 OnionShare 以查看新颜色。", "history_receive_read_message_button": "读取消息", "mode_settings_receive_webhook_url_checkbox": "使用通知 webhook", "mode_settings_receive_disable_files_checkbox": "禁用上传文件", "mode_settings_receive_disable_text_checkbox": "禁用提交文本", "mode_settings_title_label": "自定义标题", "gui_status_indicator_chat_started": "正在聊天", "gui_status_indicator_chat_scheduled": "已计划…", "gui_status_indicator_chat_working": "启动中…", "gui_status_indicator_chat_stopped": "已停止", "gui_please_wait_no_button": "启动中…", "gui_settings_theme_dark": "深色", "gui_settings_theme_light": "浅色", "gui_settings_theme_auto": "自动", "gui_settings_theme_label": "主题", "gui_client_auth_instructions": "接下来,发送私钥以允许访问你的 OnionShare 服务:", "gui_url_instructions_public_mode": "发送下面的 OnionShare 地址:", "gui_url_instructions": "首先,发送下面的 OnionShare 地址:", "gui_chat_url_public_description": "任何人只要有 OnionShare 地址,都可以用 Tor 浏览器加入该聊天室", "gui_receive_url_public_description": "任何人只要有 OnionShare 地址,都可以用 Tor 浏览器上传文件到你的计算机:", "gui_website_url_public_description": "任何人只要有 OnionShare 地址,都可以用 Tor 浏览器访问你的网站:", "gui_share_url_public_description": "任何人只要有 OnionShare 地址,都可以用 Tor 浏览器下载你的文件:", "gui_server_doesnt_support_stealth": "抱歉,此版本的 Tor 不支持隐身(客户端身份验证)。 请尝试使用较新版本的 Tor,如果不需要私密分享,请使用“公共”模式。", "gui_hide": "隐藏", "gui_reveal": "显示", "gui_qr_label_auth_string_title": "私钥", "gui_qr_label_url_title": "OnionShare 地址", "gui_copied_client_auth": "已复制私钥到剪贴板", "gui_copied_client_auth_title": "已复制私钥", "gui_copy_client_auth": "复制私钥", "gui_settings_bridge_use_checkbox": "使用网桥", "gui_settings_bridge_radio_builtin": "选择内置网桥", "gui_settings_bridge_none_radio_option": "不使用网桥", "gui_settings_bridge_moat_button": "请求新网桥", "gui_settings_bridge_custom_placeholder": "输入地址:端口(每行一个)", "gui_settings_help_label": "需要帮助?参见 docs.onionshare.org", "mode_settings_website_custom_csp_checkbox": "发送自定义内容安全政策头部", "moat_bridgedb_error": "无法联系 BridgeDB。", "moat_solution_empty_error": "输入图片中的字符", "mode_tor_not_connected_label": "OnionShare 没有连接到 Tor 网络", "gui_dragdrop_sandbox_flatpak": "为了使 Flatpak 沙箱更安全,不支持拖放操作。请使用“添加文件”和“添加文件夹”按钮来选择文件。", "gui_tor_settings_window_title": "Tor 设置", "gui_settings_controller_extras_label": "Tor 设置", "gui_settings_tor_bridges_label": "如果 Tor 访问被阻止,网桥将帮助流量进入 Tor 网络。 根据连接的位置,一个网桥可能比另一个网桥更好用。", "gui_settings_bridge_custom_radio_option": "提供从可信来源处获取的网桥", "gui_settings_bridge_moat_radio_option": "从 torproject.org 请求网桥", "moat_captcha_error": "解答不正确。请再试一次。", "gui_settings_moat_bridges_invalid": "你尚未从 torproject.org 请求网桥。", "gui_settings_stop_active_tabs_label": "在一些标签页中,还有服务正在运行。\n必须停止所有服务才能更改 Tor 设置。", "moat_contact_label": "正在联系 BridgeDB…", "gui_settings_version_label": "你正在使用 OnionShare {}", "moat_captcha_label": "解决 CAPTCHA 来请求网桥。", "moat_captcha_reload": "重新加载", "moat_captcha_placeholder": "输入图片中的字符", "moat_captcha_submit": "提交", "gui_autoconnect_description": "OnionShare 依赖于由全球数千名志愿者运营的 Tor 网络。", "gui_enable_autoconnect_checkbox": "自动连接到 Tor", "gui_autoconnect_failed_to_connect_to_tor": "无法连接到 Tor", "gui_autoconnect_trying_to_connect_to_tor": "正在尝试连接到 Tor…", "gui_autoconnect_connection_error_msg": "确保你已连接到 Internet。", "gui_autoconnect_bridge_description": "如果你的互联网有可能受到审查,可以使用网桥绕过审查。", "gui_autoconnect_bridge_detect_automatic": "根据我的 IP 地址自动确定我的国家以进行网桥设置", "gui_autoconnect_bridge_detect_manual": "手动选择我的国家进行网桥设置", "gui_autoconnect_bridge_setting_options": "网桥设置", "gui_autoconnect_start": "连接到 Tor", "gui_autoconnect_configure": "网络设置", "gui_autoconnect_no_bridge": "不使用网桥重试", "gui_autoconnect_try_again_without_a_bridge": "不使用网桥重试", "gui_autoconnect_circumventing_censorship_starting_circumvention": "正在规避审查…", "gui_autoconnect_circumventing_censorship_starting_meek": "正在建立用于域名前置的 meek 网桥…", "gui_autoconnect_circumventing_censorship_requesting_bridges": "正在从 Tor 审查规避 API 请求网桥…", "gui_autoconnect_circumventing_censorship_got_bridges": "已建立网桥。正在重新连接到 Tor…", "gui_autoconnect_could_not_connect_to_tor_api": "无法连接到 Tor API。 请确保你已连接到互联网,然后重试。", "gui_general_settings_window_title": "常规", "gui_autoconnect_circumventing_censorship": "正在解决连接问题…", "waitress_web_server_error": "启动 Web 服务器时出现问题", "gui_close_tab_warning_chat_description": "是否关闭托管聊天服务的标签页?", "gui_chat_mode_explainer": "聊天模式可让您在 Tor 浏览器中与其他人进行互动聊天。

    OnionShare 中不存储聊天记录。关闭 Tor 浏览器后,聊天记录将消失。", "mode_settings_persistent_autostart_on_launch_checkbox": "OnionShare 启动时自动启动此洋葱服务", "gui_settings_license_label": "OnionShare 采用 GPL v3 许可。可在此处查看第三方许可:
    https://github.com/onionshare/onionshare/tree/main/licenses", "error_generic": "OnionShare 出现意外错误:\n{}" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/locale/zh_Hant.json000066400000000000000000000460661521174352300301140ustar00rootroot00000000000000{ "not_a_readable_file": "{0:s} 不是一個可讀取的檔案。", "other_page_loaded": "已載入的地址", "close_on_autostop_timer": "因自動停止計時器的時間已到,已停止", "closing_automatically": "因傳輸完成,已停止", "large_filesize": "警告:傳輸巨大的檔案將有可能耗時數小時以上", "systray_menu_exit": "離開", "gui_drag_and_drop": "拖曳檔案及資料夾來開始分享", "gui_add": "新增", "gui_choose_items": "瀏覽", "gui_share_start_server": "開始分享", "gui_share_stop_server": "停止分享", "gui_share_stop_server_autostop_timer": "停止分享 (剩餘時間{})", "gui_receive_start_server": "啟動接收模式", "gui_receive_stop_server": "停止接收模式", "gui_receive_stop_server_autostop_timer": "停止接收模式 (剩餘{}秒)", "gui_copy_url": "複製地址", "gui_canceled": "已取消", "gui_copied_url_title": "已複製 OnionShare 地址", "gui_copied_url": "OnionShare 地址已複製到剪貼簿", "gui_please_wait": "啟動中...點擊以取消。", "gui_quit_warning_quit": "結束", "zip_progress_bar_format": "壓縮中: %p%", "gui_settings_window_title": "設定", "gui_settings_autoupdate_label": "檢查新版本", "gui_settings_autoupdate_option": "當有新版本的時候提醒我", "gui_settings_autoupdate_timestamp": "上一次檢查時間: {}", "gui_settings_autoupdate_timestamp_never": "從未", "gui_settings_autoupdate_check_button": "檢查新版本", "gui_settings_connection_type_label": "OnionShare要如何連接到Tor?", "gui_settings_connection_type_bundled_option": "使用OnionShare內建的Tor版本", "gui_settings_connection_type_automatic_option": "嘗試auto-configuration with Tor Browser", "gui_settings_connection_type_control_port_option": "使用control port", "gui_settings_connection_type_socket_file_option": "使用Socket file", "gui_settings_connection_type_test_button": "測試連接到Tor", "gui_settings_control_port_label": "Control端口", "gui_settings_socket_file_label": "Socket file", "gui_settings_socks_label": "SOCKS端口", "gui_settings_authenticate_no_auth_option": "沒有驗證,或使用cookie驗證", "gui_settings_authenticate_password_option": "密碼", "gui_settings_password_label": "密碼", "gui_settings_tor_bridges": "連接 Tor 橋接器?", "gui_settings_meek_lite_expensive_warning": "警告: The meek_lite bridges are very costly for the Tor Project to run.

    Only use them if unable to connect to Tor directly, via obfs4 transports, or other normal bridges.", "gui_settings_tor_bridges_invalid": "您新增的橋接器無效。請再次檢查或新增其他的橋接器。", "gui_settings_button_save": "儲存", "gui_settings_button_cancel": "取消", "gui_settings_button_help": "說明", "settings_error_unknown": "無法連接到Tor controller因為您的設定無效。", "settings_error_automatic": "無法連機到Tor controller。Tor Browser(可以從torproject.org取得)是否正在背景運行?", "settings_error_socket_port": "無法在{}:{}連接到Tor controller。", "settings_error_socket_file": "無法使用Socket file {}連接到Tor controller。", "settings_error_auth": "已連接到 {}:{} 但無法驗證。或許這個不是一個Tor controller?", "settings_error_missing_password": "已連接到Tor controller,但是它需要密碼進行驗證。", "settings_error_unreadable_cookie_file": "已連接到Tor controller,但是密碼錯誤,或是您沒有讀取cookie檔案的權限。", "settings_error_bundled_tor_not_supported": "OnionShare附帶的Tor版本並不適用於Windows或macOS上的開發人員模式。", "settings_error_bundled_tor_timeout": "Tor連接超時。您可能沒有連接網路,或是系統時間設定錯誤?", "settings_error_bundled_tor_broken": "OnionShare 無法在背景連接到Tor:\n{}", "settings_test_success": "已連接到Tor controller。\n\nTor版本: {}\n支援短期onion服務: {}.\n支援客戶端認證: {}.\n支援新一代.onion地址: {}.", "error_tor_protocol_error": "Tor發生錯誤: {}", "connecting_to_tor": "正在連接Tor網路", "update_available": "新版本的OnionShare已推出。 點此獲取

    您正在使用版本 {} 而最新版本是 {}。", "update_error_check_error": "無法檢查更新:可能是您沒有連接到Tor,或者OnionShare癱瘓了?", "update_error_invalid_latest_version": "無法檢查更新:OnionShare 網站說最新版本無法識別'{}'…", "update_not_available": "您正在使用最新版本的OnionShare。", "gui_tor_connection_ask": "開啟設定來檢查Tor連接?", "gui_tor_connection_ask_open_settings": "是", "gui_tor_connection_ask_quit": "否", "gui_tor_connection_error_settings": "試試在設定中改變OnionShare連接到Tor網路的方式。", "gui_tor_connection_canceled": "無法連接到Tor。\n\n請確認您已連接上網路,然後再重新開啟OnionShare並設定Tor連線。", "gui_tor_connection_lost": "已斷開Tor連接。", "gui_server_started_after_autostop_timer": "在服務器啓動之前,自動停止的定時器的計時已到。請建立一個新的共享。", "gui_server_autostop_timer_expired": "自動停止計時器時間已到。請調整它來開始分享。", "gui_share_url_description": "任何人只要擁有這個地址就可以下載你的檔案經由Tor Browser: ", "gui_receive_url_description": "任何人只要擁有這個地址就可以上傳檔案到你的電腦經由Tor Browser: ", "gui_url_label_persistent": "此次分享不會自動停止。

    隨後的所有分享序列將會繼續使用相同的地址。(如要使用一次性地址,請在設定裡關掉\"使用永久地址\"的選項。)", "gui_url_label_stay_open": "此次分享不會自動停止。", "gui_url_label_onetime": "此次分享將在第一個任務完成後停止。", "gui_url_label_onetime_and_persistent": "這次分享不會自動停止。

    隨後的所有分享序列將會繼續使用相同的地址。(如要使用一次性地址,請在設定裡關掉\"使用永久地址\"的選項。)", "gui_status_indicator_share_stopped": "已停止", "gui_status_indicator_share_working": "啟動中…", "gui_status_indicator_share_started": "分享中", "gui_status_indicator_receive_stopped": "已停止", "gui_status_indicator_receive_working": "啟動中…", "gui_status_indicator_receive_started": "接收中", "gui_file_info": "{}個檔案, {}", "gui_file_info_single": "{}個檔案, {}", "history_in_progress_tooltip": "{}個在佇列中", "history_completed_tooltip": "{}個已完成", "gui_receive_mode_warning": "警告:接收模式將使其他人上傳檔案到您的電腦。

    有些檔案可能將會在您開啟時控制您的電腦。請只打開您信任的人所傳送的檔案,或是您清楚了解自己在做什麼。", "systray_page_loaded_title": "頁面已載入", "gui_settings_language_label": "語言", "gui_settings_language_changed_notice": "重啟 OnionShare 以使用新的語言。", "gui_add_files": "新增檔案", "gui_add_folder": "新增資料夾", "error_cannot_create_data_dir": "無法建立OnionShare的資料夾: {}", "systray_page_loaded_message": "OnionShare地址已載入", "systray_share_started_title": "分享已開始", "systray_share_started_message": "開始向其他人分享檔案", "systray_share_completed_title": "已完成分享", "systray_share_completed_message": "檔案已傳送", "systray_share_canceled_title": "分享已取消", "systray_share_canceled_message": "某位使用者取消接收您的檔案", "systray_receive_started_title": "已開始接收", "systray_receive_started_message": "某位使用者正在傳送檔案給您", "gui_all_modes_history": "歷史紀錄", "gui_all_modes_clear_history": "清除全部", "gui_all_modes_transfer_started": "已開始 {}", "gui_all_modes_transfer_finished_range": "已傳輸完成 {} - {}", "gui_all_modes_transfer_finished": "已傳輸完成 {}", "gui_all_modes_transfer_canceled_range": "已取消 {} - {}", "gui_all_modes_transfer_canceled": "已取消 {}", "gui_all_modes_progress_complete": "%p%, 已用時間{0:s} 。", "gui_all_modes_progress_starting": "{0:s}, %p% (計算中)", "gui_all_modes_progress_eta": "{0:s}, 預計剩餘: {1:s}, %p%", "gui_share_mode_no_files": "目前無已傳送的檔案", "gui_receive_mode_no_files": "目前無已接收的檔案", "gui_stop_server_autostop_timer_tooltip": "自動停止的定時器在 {} 停止", "gui_start_server_autostart_timer_tooltip": "自動開始計時器在 {} 停止", "gui_waiting_to_start": "預定在 {} 開始。點擊以取消。", "gui_server_autostart_timer_expired": "排定的時間已經過了。請調整它以開始分享。", "gui_autostop_timer_cant_be_earlier_than_autostart_timer": "自動停止時間不能相同或早於自動開始時間。請調整它以開始分享。", "gui_status_indicator_share_scheduled": "預定…", "gui_status_indicator_receive_scheduled": "預定…", "gui_share_mode_autostop_timer_waiting": "完成傳送…", "gui_receive_mode_autostop_timer_waiting": "完成接收…", "days_first_letter": "天", "hours_first_letter": "時", "minutes_first_letter": "分", "seconds_first_letter": "秒", "incorrect_password": "密碼錯誤", "gui_website_url_description": "有OnionShare位址的任何人都可以使用Tor瀏覽器造訪你的網站: : ", "gui_website_mode_no_files": "尚未分享網站", "history_requests_tooltip": "{}個網頁請求", "mode_settings_receive_data_dir_browse_button": "瀏覽", "mode_settings_receive_data_dir_label": "儲存檔案至", "mode_settings_public_checkbox": "不要使用密碼", "mode_settings_advanced_toggle_hide": "隱藏進階設定", "gui_close_tab_warning_title": "關閉標籤頁?", "gui_quit_warning_cancel": "取消", "gui_quit_warning_title": "停止 OnionShare ?", "gui_close_tab_warning_cancel": "取消", "gui_close_tab_warning_close": "好的", "gui_new_tab_receive_button": "接收檔案", "gui_new_tab": "新分頁", "gui_new_tab_tooltip": "開啟新分頁", "gui_new_tab_share_button": "分享檔案", "mode_settings_advanced_toggle_show": "顯示進階設定", "gui_tab_name_chat": "聊天", "gui_tab_name_website": "網站", "gui_tab_name_receive": "接收", "gui_tab_name_share": "分享", "gui_main_page_chat_button": "開始聊天", "gui_main_page_receive_button": "開始接收", "gui_main_page_share_button": "開始分享", "gui_new_tab_website_button": "架設一個網站", "gui_qr_code_dialog_title": "OnionShare 二維碼", "gui_show_qr_code": "顯示二維碼", "gui_chat_stop_server": "停止聊天伺服器", "gui_chat_start_server": "開啟聊天伺服器", "gui_file_selection_remove_all": "全部移除", "gui_remove": "移除", "error_port_not_available": "OnionShare通訊埠不可用", "gui_rendezvous_cleanup_quit_early": "提前退出", "gui_rendezvous_cleanup": "等待 Tor 迴路關閉,確保檔案傳輪輸成功。\n\n這可能需要幾分鐘。", "mode_settings_website_disable_csp_checkbox": "取消內容安全政策(Content Security Policy)信頭(允許您的網站使用三方資源)", "mode_settings_share_autostop_sharing_checkbox": "檔案傳送完後停止共享(取消選中可允許下載單個檔案)", "mode_settings_autostop_timer_checkbox": "定時停止onion服務", "mode_settings_autostart_timer_checkbox": "定時起動onion服務", "mode_settings_persistent_checkbox": "OnionShare 啟動後讓此標籤頁一直維持開啟", "gui_quit_warning_description": "停止並關閉所有標籤頁,即便有些仍在進行分享?", "gui_close_tab_warning_website_description": "關閉正在代管網站的標籤頁嗎?", "gui_close_tab_warning_receive_description": "關閉正在接收檔案的標籤頁嗎?", "gui_close_tab_warning_share_description": "關閉正在發送檔案的標籤頁?", "gui_close_tab_warning_persistent_description": "關閉長存標籤頁與失掉正在使用的 onion 地址 ?", "gui_main_page_website_button": "開始代管網頁", "gui_new_tab_chat_button": "匿名聊天", "gui_color_mode_changed_notice": "請重啓 OnionShare 來看看新色彩。", "gui_open_folder_error": "無法用 xdg-open 打開文件夾。文件在這裏: {}", "gui_chat_url_description": "任何有這個OnionShare地址的人均可 加入這個聊天室,方法是使用Tor瀏覽器:", "gui_receive_flatpak_data_dir": "因爲你用Flatpack安裝的OnionShare,你需要把文件儲存到在~/OnionShare裏的一個文件夾裏。", "gui_copy_client_auth": "複製私鑰", "gui_please_wait_no_button": "啟動…", "gui_qr_label_url_title": "OnionShare 地址", "gui_qr_label_auth_string_title": "私鑰", "gui_reveal": "揭開", "gui_hide": "隱蔽", "gui_autoconnect_description": "OnionShare 有賴於志工運作的 Tor 網路。", "gui_enable_autoconnect_checkbox": "自動連接到 Tor", "gui_autoconnect_failed_to_connect_to_tor": "無法連接 Tor", "gui_dragdrop_sandbox_flatpak": "為了讓 Flatpak 沙盒更安全,不支援拖曳功能,請改用\" 新增檔案\"與\"新增資料夾\"按鈕來選取檔案。", "gui_copied_client_auth": "私鑰複製到剪貼簿", "gui_tor_settings_window_title": "Tor 設置", "gui_copied_client_auth_title": "已複製私鑰", "gui_settings_controller_extras_label": "Tor 設定", "gui_settings_bridge_use_checkbox": "使用橋接", "gui_settings_bridge_moat_radio_option": "請求來自 torproject.org 的橋接", "gui_url_instructions": "首先,發送下方的 OnionShare 地址:", "gui_settings_theme_light": "亮色", "moat_captcha_placeholder": "輸入圖片中的字符", "moat_captcha_submit": "提送", "gui_share_url_public_description": "任何人取得此 OnionShare 地址後,便可以透過 Tor 瀏覽器下載你的檔案:", "gui_website_url_public_description": "任何人取得此 OnionShare 地址後,就可以透過 Tor 瀏覽器訪問 網站: ", "gui_status_indicator_chat_started": "聊天", "mode_settings_title_label": "自定標題", "gui_autoconnect_trying_to_connect_to_tor": "連接上 Tor…", "gui_autoconnect_connection_error_msg": "確認已連接網際網路。", "gui_autoconnect_circumventing_censorship_got_bridges": "已建立橋接,重新連接 Tor…", "gui_autoconnect_circumventing_censorship_starting_meek": "為域前置建立 meek 橋接…", "gui_autoconnect_could_not_connect_to_tor_api": "無法連上 Tor API,請確認已連上網際網路後再試一次。", "gui_autoconnect_circumventing_censorship_requesting_bridges": "從 Tor 審查規避 API 請求橋接…", "gui_settings_bridge_none_radio_option": "不使用橋接", "gui_url_instructions_public_mode": "發送下方 OnionShare 地址:", "gui_settings_bridge_radio_builtin": "選擇內建的橋接", "gui_settings_bridge_moat_button": "請求新的橋接", "gui_settings_theme_label": "主題", "gui_settings_theme_auto": "自動", "gui_chat_url_public_description": "任何人取得此 OnionShare 地址後,就可以透過 Tor 瀏覽器加入聊天室 : ", "gui_settings_tor_bridges_label": "如果 Tor 遭封鎖,橋接可以協助把您引入 Tor 網路,這要依據您的網路位置來決定較合適的橋接器。", "gui_server_doesnt_support_stealth": "抱歉此版本 Tor 不支援 stealth (客戶端驗證),請使用新版 Tor 再試試,或者在無須私密的情況下改用公開模式。", "gui_autoconnect_bridge_description": "若您的網際網路被審查,或許要使用橋接器方能連接。", "gui_autoconnect_bridge_detect_manual": "選擇所在國以進行手動橋接設置", "gui_autoconnect_bridge_setting_options": "橋接設置", "gui_autoconnect_start": "連接 Tor", "gui_autoconnect_configure": "網路設置", "gui_autoconnect_no_bridge": "不用橋接器再試一次", "gui_autoconnect_try_again_without_a_bridge": "不用橋接器再試一次", "gui_autoconnect_circumventing_censorship_starting_circumvention": "規避網路審查…", "gui_autoconnect_circumventing_censorship": "解決連接問題…", "gui_general_settings_window_title": "一般", "gui_autoconnect_bridge_detect_automatic": "為設置橋接請從 IP 地址判斷所在國家", "gui_settings_bridge_custom_placeholder": "輸入地址:端口(一列一個)", "gui_settings_moat_bridges_invalid": "您未曾向 torproject.org 請求橋接。", "gui_settings_bridge_custom_radio_option": "從您信任的來源提供橋接器", "gui_settings_help_label": "需要協助,可參考 docs.onionshare.org", "gui_settings_stop_active_tabs_label": "您的標籤頁中有一些執行中的服務。\n必須先中止所有服務才可變動 Tor 設定。", "gui_settings_version_label": "正在使用 OnionShare {}", "gui_receive_url_public_description": "任何人取得此 OnionShare 地址後,就可以透過 Tor 瀏覽器 上載 檔案到您的電腦: ", "gui_status_indicator_chat_working": "啟動…", "gui_status_indicator_chat_scheduled": "已排程…", "gui_status_indicator_chat_stopped": "已停止", "gui_client_auth_instructions": "接著發送私鑰以便存取 OnionShare 服務:", "gui_settings_theme_dark": "深色", "mode_settings_receive_disable_text_checkbox": "關閉提交文字", "mode_settings_receive_disable_files_checkbox": "關閉檔案上傳", "mode_settings_receive_webhook_url_checkbox": "使用 webhook 通知", "mode_settings_website_custom_csp_checkbox": "發送自定的內容安全政策標頭", "history_receive_read_message_button": "讀取訊息", "moat_captcha_reload": "重新載入", "moat_solution_empty_error": "輸入圖片裏的字符", "mode_tor_not_connected_label": "OnionShare 未能連接 Tor 網路", "moat_contact_label": "聯繫 BridgeDB…", "moat_bridgedb_error": "無法連上 BridgeDB。", "moat_captcha_error": "答案錯誤,請再試一次。", "moat_captcha_label": "回答機器人辨識碼以請求橋接器。", "waitress_web_server_error": "啟動網頁伺候器時出現問題", "gui_close_tab_warning_chat_description": "關閉使用聊天伺候器的分頁?", "gui_chat_mode_explainer": "聊天模式可以在 Tor 瀏覽器中與他人互動

    OnionShare 不會儲存對話記錄,一旦關閉 Tor 瀏覽器它就會消失。" } onionshare-onionshare-26fcdc5/desktop/onionshare/resources/onionshare-128.png000066400000000000000000000307641521174352300275500ustar00rootroot00000000000000PNG  IHDR>azTXtRaw profile type exifxڭW9{E߱ -,6߁sͦ :+5hb51[ΖbwTWw_x> K|~n_aГ=oA>wQ{/ȭCyw(1bɓxbK3(Ax޿7 / nz~ wAxg~y!o~ ~/#lt>|V=g?1Swlq.&1ܯe~ iT$N;9Oq-qN7b^>j(w|!c+Tr66,9w{} 6r(䆞"Y1&J RL)TR5C9KJ,RJ-jZj[S˭Zݛ΃:\dFiQFmI8̳:˯J Xuշ3qwuv‰'|ʩ7?7kfJוϬ)Np32#Erf+sʙmHA&,¸O}[*o&տʛ#s_dmӅ tߵ_Hub׳Q_k;uqT] Ay:Wsz>9iwRKu9 (ݩݾfgۓakDVRPI͎1KˤvMVn}+JID) Z.;3O9ԩSLY~ G|d/Yੰ弭y4Zی4Gꆪ\O,:1*NZM#&NUZHqP>*Bnd=g2%!}Dk4%⮫o|\={rTP;dr\ϋWݔ2˦t;3@E{g։`OIs\Kw?0puh-|ydzѧ͝"h1T1H3wh0-0S .mg0yrcad v袬95_.6H8BJfS}{M5GjeyF"da>C.cBQ.| !%,ieAvL Vf}t5J8:+ c$;gTo tޯ}mV#BT#E1q u;*VJXW~apȐ?%^O[M90#9=sc#a\z\ClNbUڙі ZPMev J@_U" m 2FC'MBG bT 'dX 9dD4 COO:JVm=6Ԓ+$u$h@4ޤMAW0v&K3P9>K#Tx(<M@ osO '{W"絇~R!zh;&KeN$HM&MCM%zztx_ׂ KFe&JZv崟! l(&mtpjsZjIdg|/pB`<3|E~M :nFePn&jp˿stv$ ?8Jb?H${~8 +/dW3ܠtנ 0#F5?'R+%EWHHuIXiHNaw͓dQDʯ7Р :!2(n'cݔJz@+o+̷7[}l~Ba,0"PV3j &0 6  D5c\'dVAB`c71Ɩ3b, O}v)4.kR@oU)]@f! SP,cgиiα!#A J2dnmyu؞^p:\-9%hՙf[a'S!~%㐥 wc Zk~ۅ oWmh>[^l/ؖOmiE_-Ϳ?/PZY5BBLܫC T&l_VgӮ Nr㴝yzvӾ-IUтevy2-䰀!pܠ>gp@z}'Y[s%b@$ +LWSȚ- yŘF\\"bHtZ[dx P_WYDRV&eEHR)Z+\p?gSpF̺E5hq{9KԽ#5O\ v(E zFV`+̟t,֢(1lzEREQ[9sE; uovmd>đ{u_3O(.*?c"-ƦcyLjTT9YNbE,rEa/AGsq-usj,'m8&D5[jBB]iFBA5B+OMwwlbǻR3M LcxvW$`׿Imǵk2t ,@Zmo LE-:׍Ҋ4Ah퀟[wwo#VQk8c6YȌsYA^ $h]ށ&y٩f<{ҳFy}y{< *Lzdmhf5+|Mf'>K5l9ȭADG(z7jT~wu)xpΤd!^P ^!D;HgtB]t/2AL:UЎtUWC~l]l>IDP:HA`B s7bD"=t2hG"Uv+lۖXvbp'm.Lz V\3,@ҡ#}99VYЁ!]te㝒46jhZf[}p:& [`/ >IQφ휏|=&\;$! Fs \Q^8@׾қHG'[ {zndx5tEÓBva"b FP?LEO1%!$VZek{<`QD; Hwɻ)Zw`]9VгRr$-M[nzcGM 0~k9oPÔ#y2g:'73 mZkQf$߀q)#: Fj^kpr rIco@2vM/wB MC|bh3JLP2:EN@~@УsN!~zܯt Owg#:pv&t+z5w=Qn߆V4({H@p:#;[ҿq4CD .OI*8[½f$GuDS'M:B3r:rw|jFO-ZnZl|6cMUjs0G5Y,Dⷙ9LLne9icA'E:75~,}|?;=uPΙWauOk;`|kS׎u-ib'HYu$8tބ<N[aoΆhK:#v40D4 F|,>3$ǩ=8^NvO-c""u^ҙ#u$\J!p ft A^Ȅ-].P\I(5Ilh2LCh \.+c?`!K\aNJHG w=* Ϡ@|χvPV'!Z #Z ΖV8+\=< v[)*jɶO$f\ïbNΦz.,;!:ccԖ)9oN̦ĵK7Pk9t D٠-KiڿU#ωjj#_f(fQ]ReiCCPICC profile(}KPOSR:H鐡:QX V`IC(DDWWAAEJ/ H{yiV(鶙I%܊0z ,cZh>\jb@@$ci'6mq?+*I$~'BLjb+MJFM9g T@rNm\-J@L3^>ՋV`hJs@ƈ ,q~欪*ESNEȝπ:E-7]ޤr"s]sL'E'W𹫟<d3pxRє-.+lz&vM9ѣ HW" fEESd<3LעxTєd<G7X[co?Mm z`T80[єV7$zH _st?> X\Ѭy )Xjs3o=.dܯ^=͈͋e̝cHJI".>hDDFJHhAAZ\4;q:464]p:TGwpEpWєJlpM3IOBJ<N]Mgr{sNSM9sr2Hl$OK&l2ӈ zfwTPyk(YISM)bLVv)Ɉ7JiQ)w[p5<%Ifx}V>=YDɕ]Yu4Z~[L4& c/46yc=SŒKyk^ipAжϵrw假 ܻԲoV+t J6i#Jē${f6~y'L2gPtGÊfR(թh;]chf/ͬyV'9W._aӚMlxbUMS4 N>&ޛ'^yFӝQa~fnwRP'ofG~{$K!)CDy"%%T2u dI6uթX"&}!4XEӛn6iKuMl^o,x|PzBBBw8Zrb!H6TKM@[ vY|f/$S!"ii  D&Yuͦ@IϚߟ|;e@jz"Nuanș|8,TZcZ9˴([$Oթd`9'}BI F%0 NuM lf?L@ ǥs$U'L"lS-d,V 6 oM]Td1.6kx{qݾ7pSM,~eY2h%S`ztA5VƈWNS)#GV\1 wO>f͟E$S@KP]y,`"*x׏e]Nv/[a5Tu5us E+:ǹChhD"#ψgаA$M$aH CӷOaղUl[ͨM),; p:8|%sҹcd :{qյ,gehu[%Qشܥ+D[r3+>~FT^]dҽOqAk乜(]b^.&ݥSv!VnXH7 mʣa(\:բ ` f=ih0Uǎc/_tVAcy8C҇of#OG1< թn2pج^ؙ%Wu,`9 =]=6Fʈ]NǖU[z$&P lT{ZASSbNhG ue4o #h mޓ TOYxrKU455o^f {E+>P̧W>%A>{pvac EA~ڼ'ȿ3wz2'dZ8&p>bCw Ug YotF)>P@1ᤦZڎ  nЈض1\'z|dc:ǎt3LL&IZ'.i,mcO4|5cµm>b?, d2jfQ-.u?O+> ?IGMEZI"| U'o1YAٌa>}͈5j&U]Zw6r$eA`̝c$*.=oZ{X$%6!||A{ 0\GkO"(/)̶ QJq"r>OLl5-V]K/GDDFv""0!!DpȺ¡ҢDU|-bV%|ACujW1!v@6o6--1,\.$֌ ;aUZwXGPd|N\e\"`}Ӻ >=.pE E/8e4l|U Yh &5t|iLY6! |E F X;qH"oTowUU (o4s"|s"`谺T2s Oi#}]Jcmb@P,nVκ@L4-"0H>@H)j]ٲNdl-lL AoKE^qT,8i$Ϝ0[&PaKՇF,]VI_IU4bTtQ')30vX1}D_.Md:>/#N F?|t.aI@7Hhz7\ёm"x y 'M+|ؔJ4^ ~ xmy(H`8GAe$jimycPU$T~ |qFNI^nuA#55ֽ88zyjdʀF{tOmmfix߶\S-lKZT!8ȼ=c%V"`)K70 ٤C;_%}u2,7$I'ȴȪf`Tk @u5Mn7W'v $>ѩAu6ȎviESCUK6}`.`X"[j3͖UlT,٤bRMb\3Ǯ \-.֮Z˺3USȇ;\Wjd]'m%;xW*[1ˊwja'٤wL-\ I5ȨA~ue5/~6}w8SݹlGlzxbFݭ/e-^7tp)':NoTZ-٤r`o޿E3,u!݊ˍyे^BM,P4黴WǒMIƮ$H&6.[gUMY֕/vpgxL ԗԳB4%+e5+8J,K Mj"! mdńsChl(ǔ{#.jٶ5OYCdES^p3Kr }z.N4=T,8.8ؿ{?k]KcY͝&j4r#] Qa"3I$${ҢRc˳[LDʀIFa9l=U$MKw6."TvAٮ2Oj hJL6OA{f|$净W1A@Pє[وGͲ]lFxV7ѨN:Ŗ w@,u6lES*<Ѡlj5`H/xTє=hGYg p⛁\ƽe<EԻ{(y"ES xvy;|xA~hJ;3<ݍp9W}C>5Sp ;ETAosq[iTt_OOl⾖] &*5_N@gKAg*I3>Ջ`=yEܫlmd/t ؉;6orњ3/@p+p30;4η_єs<H6'*G= Hŝ ܶq ^>h]D]M88)Bin};V.DIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/onionshare-16.png000066400000000000000000000046051521174352300274570ustar00rootroot00000000000000PNG  IHDRa;zTXtRaw profile type exifxW[r,' gYHrxVeY~nؾB:#6 D!`O1vt֯ygmÕr c| LGӖ; RGv_r~ゥQ5TīUBE /;O3aLp >} л _#1C)9e81鄓_!~p7"z?\A-ewd @ 伖4O4=[B6 ʛU!8n* z*EVJTygs5R7Ӎ-i.ssP%cKlo9Xͼ|B qxCdPal6QĽ/z~o!g| 868U"uq (95$(EF%@S"+Y G}Dea"D%I$a^EFM#G%1sĨBSJ9pa+C?CRpEJ(ZbI%WOUjZcM57j|BbK-wg:D]zcO=ᇌ0tđFY;~j`h15f Rzp w`\'Hh輧&¦Hܘ&cwG2s?HosfR_0g@gޞ9Wc{ΘZ|PPOhK՛Wfo3TǬmS'ޟ懊yڅ[ Kanާ8/df C.TÖ̕^xY3  {nkzr*s7+;`oUmXkvmۛ"MW);ݺe bi'CKʉʣrq7F{u.5ml֐k\۶\fFwv83CYKy=^s^2/}-q{Q1W.W5+.kBqEM_vM]Ro7,?) :ͷ8O߀\\$F=&\YG!^ffm3ǜK!^&G}\d~{H fшy8H;! #ůnm05!e$ u3OUuhA=8pC~ y]o/zj,.~tJ B`XG*ۨYH{~5wjPs~Cюg{|S즱]q`6.:i_zp>ɮ3/Dg3 \7;[9(lziCCPICC profile(}KPOSR:H鐡:QX V`IC(DDWWAAEJ/ H{yiV(鶙I%܊0z ,cZh>\jb@@$ci'6mq?+*I$~'BLjb+MJF ݝv] 6n-@R/呼$7?Ȏfe~SHEd/QX*D2cNv+ўQNNNbc7)R0u۱,V !f3$kulf`j Vj٬ZM^z7d tw#vw0,B1tybphF(+v1RPY# (M_[@YW4"7;&-&[e6._#ѕ@tl& C_6}8~{L;.IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/onionshare-256.png000066400000000000000000000451321521174352300275450ustar00rootroot00000000000000PNG  IHDR\rf zTXtRaw profile type exifxڭir9cr0F;HRl.GR٤)2r[lvv6޿_^7O=ק:xÍ `Н=OA^wuzCn||缇U|~!<*<;xO7s5ez?9@ 9XwCcD/t鼃|V=g?1SwUQut/!cŸr?v;I~kc\tuwܾ!F}I&Z 7?/dlJ&^cqoʝq1G1s[lkoEBy->~Jl 醹2ns܏ 7ρ%rN 2` eg9XIPg>D?ȀK/cٛ׽Lq>2D"RȡzdŘ+5SH1SIդz9̕,%XRɥZZ5XS͵Z[ͷ[iֻ7uyGqGu'3L32l/Š+-bVlPbǝvev? 't)vG^Y^Y7Sz_Rޗp1/3[]^Sl4E 2)7f9e|:#w?2fROy˜Qdΐ_-ܼ{P1vkG+f26ų)M4mXB~`zSbM``9̔RcYzuBHXiځ uRDԷN m\9=7 x&I `K<)O"Wk@@LB$Vahg qFiԕJY~6aꭞ64] g$g8W{C#6kpnDvex}'?ۈ1Q o6Rװ:("ؽD_}iz;${nu۽ T+QyJ J}4ˢPi{$}ϓ]n[^{F(ؑ;KBHf6t }O3ELNl~t5U=>{nv#L'@5h%R[\@UK'FY }v̛iqv;>J?h H/heti{]$SY!(wf8 jtx!+tvr`~.Eb߹mC6m?VBe34-yjO\Ƶ0'' "b/+ K.(-Ut WV.n &/.ցݣjL؎3kJ'޴q.ښy|]Kcw-fL|BFunw`%uER@Ӎ^wb"~#(XDR?Mf=` Vڄcm!ptLR`6Ni7Y\\-72%@oE 쓴#z _1A* L0x(⠠J$y5snvΔLLd/_s@6y/E@&YGP0O_bY >Ia2mYV趻F\b"24@2Lւ :fq54gLpUOKCވ0eb:!BlcZ^D 7ય}/I  8Nj!͘2JG5e:@X40"JPDŽ)C4GUbAM#A`C`;`sk !,7fKSm?Il@ u\/?C%)#3 BcmӕSC2`04 _e63@'* 8JH:|M74Hz"+99Tx9VPL{jZIPZ XZQP9cZmPh+ 1/8OO~#E)oZD,c2Q =)ZSK3zN^`A1X_ XkBZpRG2x #$)!Ȩ5R(0Y A%6izRxEi0fAx ˂ i*&Wc8XܧFOnwg4"őT 1#?ayY³r;mUw@k!a.n׃@KU{09ލ̈$j`D(@C&a I{oy1L Ѝ{'f"vū\ڣZf81n 8.CK8~0S3 axۢ12Ru4" !l,9b0X1Ոf(ߊ"}( s%wR$D@ 6`_;0 ^8 aL釦4I]%elҢ@&gy{HaẌZ9o#ðu+ewP|Wq-njp9@,AO-Jq [. HDNM>2ť0[X~в&Dcꪀ3Ғ-bbZ Ҵxmc\Мyl$~ ! !׺%q^z>w >N۸}dA>Mŗ* =U(U&ni3/ Ve(j7!^%҂RO >F A7i_V v7f+NIP:B=hО %`!O&}EVl# 8@Z!نx "zƇc $v[H{m}x7[*h΀yIK-PjɳhQ|E?/Ev&ƱvJ`'ct醆=q Wo?hϒ\MO2VrOc Jwl**5ν= 󣬃]LW+S,reN(=(LX0@l m8=䌋`hZ&Klgʴ'ot3~:2:H 74ȲF뢕O1=T!ɐ7}x|6e:uoe&֊(%h`Uv9Hv VOxhؖGG5I/<jª~>3/ 4Ov9C:,"H;2cm"@؇As 2,M@}Mx[d Pl6AKi_QE;Y3GH oS9+ƣW9E#FBb׳pfY-e13@X<~uЬ:}}Ȃ&NI3tmudFXp]\:6t[|NO$KڄQf枪5[W= ,-\~ׇ%}'k893ڄa/|/H'Q >XFD_F[.ٻmuh;DCHh4+0t嫓tڞd=0EKFܳ qu d"!|Y^@Bآ:`v1>t"Orhgv ,Jg K F_@t6lp{HѤ[;9[XaM:RS!eA8DmȽ9 21Dj[9$Jw/]ҳ%$qa ~ ׉5H{l6bsl֕1ܳ#= 7-eL[g]/[I;Zrf}ڶ*gtr(dk0;XЀnjhyM{{hq)m9  eɑܽSܩhM*?Ph E=z@Ev:l :Xӎt8:3eX uzR_EKtGu4=VЁG|uo1Ż&uQ zs6ЩfUaT*ҙ:;2N!X)7d.]?-cx="kDfrhL*ݤ yAwbu&ihL v)мk@8waj*h[@3(X=ߧI_<ڠ> UTu*a3~3 @| ,߬< - w2}gK3iŬp}\l}`nӇQ u&k5V¾ؑ´ :AujZHi7`VjJ\FV9,]` [B?i {[ײ^00:6ǰN*U}MɏIlj5iCCPICC profile(}KPOSR:H鐡:QX V`IC(DDWWAAEJ/ H{yiV(鶙I%܊0z ,cZh>\jb@@$ci'6mq?+*I$~'BLjb+MJFZ>ť,bx xHq)W^)j7OBߣy\ 0S "0^y9Aq)I!NZO7W ť 0S81/hK1<<$VR,h2يK9lYL(94B+/h+Ft)g0UЎ,C6y` p:2)W*.%[ /xlw:W K4[< f6CC '͑- t@0ˈמ.E}Sq)'h[ tťOGwַ]# #((GgAAll6lv6V?+kpC}uxܞytg)-,SNi6o%? Bq)k@,W_@޻;ѱt҅аЎe.(:UDޱ<?)xL KY. ׋.<&\b.ao1`zITLV?}_R_WOQ~y8|0[mUhT\^OR `-HD}1%%%U?s?뗬׌ϊKyR@2=C#zTF}9q׺9~8wgՔ,XG4_hkZTN۴= rcV=ʓf/KY ǟcnÔ+0p@@mM-Y&3ť,⿟:ME`t W-1C,a8' ز~ +\I7Uf,$.o3tXjFAPHPw aǗ;xwm4ݛ;oa'ki<N˵w]KDl4_C{qcQ\>oNs ,3MDl~BmH}]={3]{ E3bP/0ި(_p=#'OVM;y(Qh⸀ w@{1[q=S'(ّs5_ r <1_b-)p-WU.MJ Kxwɻ#c/0^q)7iY>ytН2=qpA^^2_oڨEP4vYG,l :$1YܹNb{ 錨nQ\vnv=h"Ȓ&YUi3\$R~W\/'cΖ{v`T_j0fCLţo>J~:|pNA z&i[0t8xϹJă?HxTP)c9^|zwl?Vj px{O7]݄5(@;&;t}-˯n^ 净\s1?t;L>_fq (ݒPhP,sr[/hI\C+UZ;HuJJntMO`8*őM5+0t}9}@=&\ʽ);ߦ ;F~L@ZB=7_B<r9 j<L*-!G u5&IRVa,ۀ.% <{wR~LW boZ4`864@|N$IW\ ֥[ @37ι#ðDX8꡺WHh f!.!۩B/!l:?T[]|b>S% ([Uoaج |4y19m(" )EgSu55Թ$ v""ЕDDAtL4Q8:;ÿ7kZp<@Oť,qϿOr;8b]XRPB\*ەmk5#@*OGXTP(.(qyť< `F bzrN}}};f &^6!Ç;V8U,y^Zjҫ8i4+ٳmkYþw^_1iN#qT"`5U5̛>Ez iRV~-l 7|'<9I6,@!lH)*b;:IDu"($Fxp6Y/!nuE3āz7 efJӬ` +\AcZ˹Kq{|r?ũµ@RJ[viƘl.hڣX}^3LkFֺ,>ZvzحV+#ظ|nugk  :뻾r_G4صe(lB +Nc{ٸ~#w#Gޖζ Q1Q޿GN!N[}t8{ (o1 ?__*4.f! 4Xºm]d=dVϴd|30hv9eZav/>>Cе{Wg[6o"K%խni< t7lu:{=Y->>/ڏ`ZMYNJHx[WnC8[]lp:=7wɮLL%-fգ5<=n,`۫Tz}u`l_QݪY t_Os,unxN/kMoC طm,G6v0erd-zF_4b2vO [:@Coဠelyy .4+%|`Bp9 ,~ab/$~V.o|]ųw=KYi)ʒ82Qa; j>i= M _zCR?1IӊB*~aa3ؽeϤ[&y; ? s F +/<UՆ/Cƈs@0R5|9⺹$]o&]ӛ{EdL$bucVg'gċrW{-2Z=C ]2WYzSXOs3iE>)~ xe0dCZ$K 6h2Ca U˻ޥeSE+'/L(zJ ,&=>^? N_8' >^?q?H 0vw:uHH=  l0l]ºx?0#dsȘ'-v %$&ī1hh=,@0rT=jSB7 -/LT=Qf.~aCǙ=":!D[!~aF_*w2^?$4t&`dJ9(0ǃu S;ׯ@f /Lk@13 o 02E /BDuaABLAv!ۼB&` 13`k j=JN/$pwYe45;޼)"ځuxns-' ޛA7SDAǵ-?}[:o^_Wo E&`dj:O4c>yC/ >Fcο X? @,!W5M9{&co+T#&s(J:XsNt=Mg[ c9K:YE־,SuȮ,|}!; :wddCANmdz)$y3ROqSƙv%d}gGxѷ{_/Q62H .>W_#!ݮUy @u.{3ڼ]y\4"BBC ̈dnϤ:Z(͢Dz7`R @˝ގ8ʏ4e GP*[wݎ1A\AiG9|0Vm_דFO܀ h5 /Qs +p ܔS}BUSPt҂R)9ZBmE-*7Zݏ@z30nDv$*6QDFE0\ݯT\JA@ ,K [C.".8 ہKݜ?lʚgT—ybOLNmCEtN[=%t2Xu1 >Xry+%jϼ"Ԝk2Tҷ}#YGDLm4N  yjjD 8'3oMP]CݪU=&*`^J\~-Lcبa 70VUn$I\|>B1 |uNPjC@'A. MO߽e7g'8$Xp/f(VFOYfoYER&pXӴ[s9 bj zCh|2;2*3Z3ՏYE tSMd"6)ML+.[Pȩd| v'.z?Ջa~`YuGe<觧42dYH L{|E ~l/EVZ]-@NK@` UZUPjl#zc/>ΨIlw maؑCajm PZڳ|-]=[,ܵn8x-M^nlON=։'(Idm +IDAT'_bsūiF &ťlhh^] ┎٨'T"3 c?#R>Y'i\Qj~;k]ڲK޲/}3R/;$UݪGv#o};؍07O%qT"}?ߔt׺9s;zjJɯ{h2+>D@xnİ1Ègw^6L1+–sA .'K$iR 7i'jdnA&m(#0 xά2t8/ CGA~\S<9 ~)W(.JbqRTMF)hgސ$io G,1$CRP>>W\J%|i  ĦP̻;##f~8\F#`8 ci\ƻwhh;3\ZaaI` qBᝡqW!"}~&]18C( :]L"H Fe4j (J¦O> Ӣ0m<,#IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/onionshare-32.png000066400000000000000000000077231521174352300274610ustar00rootroot00000000000000PNG  IHDR szz zTXtRaw profile type exifxڭi8sqp%yrMh+lH$> )'P\"_{?zqsT|ö&_O\:zYG;puT:vM_ TﺧΓ77Bxt$1)7goeR{&my8^|K]/W 3rA^#5]mnh߯EWN(Gqqt[#`vٹvts}/^q z i{qY:aÿs+LC_Z]n| ́f.'N8)dMWXG^lGr.YK3Uf|p L3ecNFB| l) AO UD$JlH>(1Uj)$I1SI Yr)\r-x4PJ,RJTUi_\-4i[iCSϽ:# ȣ: SfiYf]pmʫ@B7Pjn#5.ʉ(f @hن9($E1*b@u'rGߐ3 ݿ}@mh3 5'x>s5.W-jgՖJeIX{G"Sؽ\7Z>N}Gsm =A[X]-Q e:!yyEv+}@-DQ8:xZψts-ۡOÂ5)H0K褈zlbGֆZ&NIbz !F' T,H`k$Gz+QxIDL Y`II~O:Jd&<HNVB:/Q5 Yb,a@lc\Eɐyq!ɰg++;߲4&;bp}pFQ+| ̞>]9['DTl[4jQ]d<]2D=lr"JL]A=nv'5mI~/KD][_ftB3.EŪ\NByY.Ɣ2_RTK\Vx+a99[^jEjBu1:y\SI8ZiPdU$(;J -}#K\(;OiPdx)mNb~T)*#nՙ\ 7롶I"8y:d˗#s)|ɷξ4BJ4mƦS 4ӴH0' h v,$/Ie7}c7ɛZi}lTqHڊ٤ WmKUV37S~FcPsp,uhhS[D6!)) OJVSRQ%aia^W.S@]Nd{m-[M9MB76F{(ncM`nr%mYG0JxeC^7B\z]/6ZtpV1ɎG#|/!{1 93;4:0xl'$Ft *jVxCm28gQEU 'q*`Un'֖jqmx]l'K =ysn Ϭ[U!~^-BӾjzC Qz0r6;*3 eج^2ǩ].VuNFiCCPICC profile(}KPOSR:H鐡:QX V`IC(DDWWAAEJ/ H{yiV(鶙I%܊0z ,cZh>\jb@@$ci'6mq?+*I$~'BLjb+MJF *A e Zdw˵`6dCfMb:&ywi@f|#@pLbY4||8Y_>6ͭ: oaE hn (H\h`kVJR #"ƤHh1@n~;~'%׽=-{(p,lZ5]JޒO<'M\"ش G=rIT/GL: +%?]"lf8FXj`djSqEɟ[XaXS+Nvh^_Z:L;Tl@ yPo6TuR,d+I6w}\/ffQ&Ou{[1)JΡ»@8?ǎS;^/S_WZ{^5i ])H+3z}zqd- {Ž#~~Xo/tHxHbKGD pHYs B(xtIME+ª IDATxw|ugfw3i LBAT$D׳{ٽNO ME" -@!lD!}KI3>| "6-v%P;Hs"7ӿ?\X?u nl#t6{C#g5~8 AqhaBL6NU i*ԮzH3NGsPG)JU% | jײzhSCPuֺ}KŽoM4))"r"@c~D0v((BYf9 WMtAbz:U/  [܄QUU`GWZ"2 x DMr30y0T` ꊂ c!b B~T~i>@d@!TRs LC`<&l;DO j42b So8#}#ShpuFB,D BsTL{jy0_ HE 5X,@(UqlCX|iJ)LC?8,(sj1b 8UT/p ^c*CN| 4כ2b rȼA\k[8ٔ).u kp>K V }8le@oU JL4SFA,O q &VuY|1P1E:CmnDNP]Aϵ-e@=%&BtZ6_ ^kq i&6+OXgK]X?#L!2x@/&B6w?|) pSnP yV:A,yƼhp !j ^k[89p7?O  GǪz;D1")ނWVs rTQP; ux"^1ך-X}GaWo@R yUT_/-ZUW4&B< +N}?^eDAc+L< u$PlJ! X~d~*LfD%n6[ 3 "*-Y7jAD>9Tjk yrG΂2 "5[3 r0@Ŀۍ U88X {!LUU/+3 '7_j!? 3MW1 P;MF+p6s(X5? f4(C:¿ rXODA" *~)P %U6ADA꿢NsN͜FF@LQ4ЏzA.kQO~k9H#d4(|o70@$ " p,ɵMqO@iƧTA7'PKDDYkA`߿yE>DD+`2[w"@/1M&r" GS(zg  "jQKdInTl Y<ASb]N[ndDDm򮤗:zQȼA>0iuɼy| @ DAW :ĥ!G":wFbZ"`5 3 DI`0" :A(Ї. `opd~ljjaiGFŞ T=Q]Z {m T䙭 FLFSOd0 jPc(RǀH흊N@tl4bca5BVUUUաu5uhhl@ue5vm܅]vM *&팂?i,ЉiЩ1 QHLJD\8Bp~[:p58 U Wb;P/a,~%ߘ?Fj4Xɹw^?䞑tIN kQVRÕuVl^PUб,-%/_c`ЄAHJJBJc =W[w^c÷ˢ_`9ha0Rц-`G?1̋Y=!gAJF vۿ{?V-Y5|#m-,wxIai1h F2rƆFlX_5/ ̝|X @[U> 2 ߃˙p؋O#RU&gǏxYt uft+~Mԉ8qE!%}wً19|sf0 3%@X~J0i;i,&2*,_>%,|k:8w\̥8t6bcK?3F⧛Iqsc,LUPW!_gOS-XDCU?g̵IԕzCK0 |D/:,>)G Ŀ쀀Q:Aʋ̋a ~R`zȄWNF| J|7Yp9FB?.e7k-& vl}6ndAA@|W1 @ԉsj8iuze}O>G>WM1`Rp21t 8t 2UUؔy\tV|fLȗ fUDr׎w]n=1 fJ`ƿg`+Xi74h[xPr 9ffc#rqG=C2JxhCt$ ȯ"wX_IǚkB j7Ŧajsz鯟FlAǺwèFa֭.f O]M)d0eA\]!7;sp߫!s< #FO +عj'_$RlJ D,ѽA ߀+!VD 0AJIF4h}{o  /}{vGg?11|u/QYV`(, bbS }$PUAyttK0x@s:Z=W$/2/}^:x|Q11*oUÁ_07D 06'$mm,^-e`$=p툌dDA(4<`Ŏ|E78x\ek` ( z =x +d W䭊M '1dUP 4wl|Q߁/qѡxf33 ҰI0a^C%ybS6LFS$pꘘ<5)t0w^<(jjFUBE/\_hxÿ98x93xx3P?`2.Iꛄ~Otop":Qdt$?W倅tL,)V\Nyyq*R/FBQe 8fO ¨m~ > c:x߅7Owc< cAWd4vJ'>zbZXD3 7oFuI5i$/Vl>V3u;u?;0]%`ȸ!ظv#jKyw@; fIYۊ]ʼnp/w'eH q"ꐸqxb:+h>{nD/$&%2 "rC FEQh9fy/WNA՗9'*9 ODD<=iD eh:W.,& χ۹Fpqj^? qiIwM'"J陂'OB?O1o{Hl]]#!yL|xde-&J (6e @))I* qh 6uIĬD*\D){ X%I 1p"r7Ayo2IKP⑐ on7" zdw|0Z=K*( K rJ\8Bmغt+h!B)E% _xM@D)=;?5 eI~_)n}ۇt}?q^,DD!IHNϗ3gu_,M *9}oƤ+&1RUkQu 8t5U58 ʪP]^ڃhkDCMl 6\.8u"!zHzB  G\r!k#*: aA|xDD2xr~/`+UyG59 9e%K+q`TVWbǦ(^]vH͑v}<lGx JN"#}@wEzt!{2⣸}G gb '$ũ>Ѵ(n'͛pU37r9]ط}Jpy!6,؀ ;gw$d@@zޝOA܏fya<qe;P?/kZ#{ǰÐ)qjW8>fW+oOc ` hQ(*,w}_ʂ}Pwnr"wQN@'X*)mچ|AV0n:G7po/XhdKEѺ"|'xױV=3KkA@Dt$pU@$f')6CL"DVJ@ klhĆ_bJCRq`Ac d?:p9y[IVd\Ь֠VE!_&uu=y,~w1rkrJ|3ćsRg2 1a {Z8|(6eV%N556̭AZkX`>y4T5p{@Hx.}R6bbF>p7&8^*:4 ]Dp;̴gzjYP IDATع=iwo~!S(S!I &ȅáաBq(ùJ);|RdI~ @on߸14( ,:, O^$V~ߛ79a|ٷKCJ:i]Å\8ؔ^*7;=b>WM ^Ei>l6>ba׫)*4<x6-0:iw ɹ%w7Vu%?>޽]T'j`KP^S^`(A()% >X0t[ҮȒL% V\N~0.x ΝO+!&-ii<-UҮ7"M& !Ep~૘y݉sb-ˈɃj[U?-eؔ6~Ԯ.Kuw?O tXB<;Y/0TW1ňt"WeFnŦkolOx @w_?`K,2CuR~z޿9rasRgg>T7ؔ=^LQ 9i&<61>7ϿGjTtM@}Qz(,)b[qNJ01oێ;_{?~#a :=/_ dIXQ])<[$_z2o\}:p ^%,~m1w WCvۉCz#<2(,ލ{ M` 7A1xt@RG/z;䎧~= ~D\wg *&1{T ؕF9TT8ß+-[x5,xXӈ?)S@PBi V3湀"Ŧ7Hcrs` OUU~o6޸ |ϸV.+f@xpeP 0& .Ŧ|/At!8 93^;6.ڈ] ËL.ㅰ7e\RdbWZVr|0[#Mt,xW 1p@ z !z* ჁIL)[B!`( %5V?rڳ~JbШA0H|iw3?(6e{ $ ؕv^X_Wk?Y˝NtS)v݉g&1;w`>YbS^s[0M<\gJ@[ K oNGR^T]:n(P@`3be ⨸L)b[aY0ؕV^`i+NGmRT`wn =k(ONX"O Tljw'䕀S]p^X;Ε-(=\!c@?u`QNŦ|0)fRo` +-;awgOĝ:2?g-~."<[ J徼ձ١33UU1?3yGg44b|XIQa!.D)%*r|3Q3 ߮ <|p&w:r+eeS/:Z @~Ŧ|߱ HbZ6,؀}0#6.܈AiHwHY Sl]"Ax׽44+ǝs@te6>"R]#W?|˨,d~&o6DǮN~T Shlp2 ?S2P[-%aLdx:訲2AfLGP+gd@bS>i 4L an\ :n;yљ_de0ND @sg :=ÉwzHR$Je@>J}_8)<&ߪD8 :tFzϜ Ύ 6j>zŦlj T ϕ~tA 9/oj6d?],,Dmdi6J)RbГ &L UMg<@ZWCbr"1^e֣eP(vr@`ϕy97!Q''O(* `V,DsN,_A4`g { ǺevCL"[tR_AЩC u4~K"w X- דo,kb HX:p;R}K 0ڭ+C"FcZ@U^,D3󡙨e> @b@ M&n!Q' eg ϟ ‡7!ikpyZmi--1})KCh4_O,Dŋ_t1IL Z!g"&'Th"oڻf/611ѵ0 ]O(.ՓßX<9?0sNdPD@9KZj#9s 5 ?K/._AHB|C8Y8'9%3fg6TUe>е; @^@/J7bwn1bUo< @:?y^B##2Aq`qr<{P2?K?|.Z8%rJ@O,DQ;~ |[n@{*,Dh ѱ,@=K!@bDg B5@Q*WBpLS,Df] GGW=,Dh͢5 z -9%ȻVZW@tG) ?KK(e^)NtqJ=KßX(/c^%NӉ.+?ßXd- ˢԔ Bb `vZe0 Y0OE' 6[QWU t& qK% nھP# @!xYB Ċ*T.@n  M@E ßX|G:uz1~{ ?Vl(a^HIz1";O,%CV3/2Y#8%/&hz"pb 򭚪`|O,e#VERDa@[Z C)+^'"x!|Z8%訪*ͯB9%+*,"ßXW!x^'򭆚z:b :9;C"QYS@ti='S1oO,D\` &A ̩A%^ +nx] (,oO82w$C yPq 9YX[X%` Pb WX@,Dhm֛£v^4} {o)kC "@WЍX|<@o W%Hcß5-!Kqv@7DSSF/b@S<Ua Xx `𦘘@,'+V-oxS| V@7L}]=N/DD.Y-O:C %5 UrO%V/%8}J8PUUZUUzQrd@,["T7QWU=׋93 C(? ^]Qͽˆe@> A1DrK+ޖ;"!Kq)RU=@W546p/d^@,#=SlZވՇy R2S %8cCvmŽDӆ3b ;xl8卹{n>0l0@,}}Zޠ Y>'Kq? hiDME n/ug@^> 18=]7!Kq{p <b /q7=@=I %8+sT޶bvEn %82:L7*#}e@ޱc~r7x՞*ѵWA,e%e}@LTA,Spa~Ƞ EA,YO(*Tͯly+ |$S,κ,A, 6;MC%8=؃ @n- Rmw CSgԇZBN(K@7ë{]#N%_ %8=c,rPi}(//w =]7\h}~w./e@B r]C# )Rb@ZAZaER~PtB4. XߝS5R X|miou%($O唌IF 9kk|H  yMiˆ5r?apol߼ @ZO]|l䱈 +q'IkVl_ kёm<} dw C&B3{2b O.l`zR?/<9??P$_*Y)^]q J֕0 $^A7Oljk®]mw^W>'-P( _V&7nfvRV3/`kS2b ` oAZ_,u[j==ko:7?~3 ֫N}ҿIKPʒ|6t'=.3sQqQ0~zA 9[m|. K L'g8t&w!?=XX8SŦ,=/t ?17`WQ{A^ 4Ok8۬Ybp ZOta܅LBRAfXTKPTl% YJI#+d"\زd l5fKUV[1 (W8S pڝزG קxA%ÿT:Z\X) :Cgpw *V61G`*b~*#7| 1,b}TidIN0JQ@ϑ=Ou ]±qFAnwڿ_XW. @0-ؔ%*YYjf TVVbe8b8GȉgSq-Cd` )6C{KtPR@LB w-?%zC PPcnx?Θf@LN[[*[[$  9  NC3 `j!WO߉А~-O&KZ<~Ό]ٚ$Krg\PRX7NޠǠу{n6|`3d#-IY]1UڄqHJMb~bQJExTiߌNJ+r-@)dI@, 83o Raa_>߼it/"[̾\ ;[-Kra( c.ca 3j`} Z4a{ 9 Ŧ,rkȒQr" 1b`Ɲ87F'3a:~3 :qvv[ bW$Ì[ =GDJ@~E0k6. kqmwGe->Q0:V}ؖ,Kr)epA@A_Ft .'wE0A{ѹxN))!^/XUF#19an0XlTa 'z 9ȦŶFŦ4ʒ<|*l83D1S`~1 0m1tIϧZA[~C䳥0ybţ0ThD(F3B-K0 vSomm~\ s+6M6dd py)F`Lסϰ>߯P1ɈGz㧍crQ) -ŶzY̏ھr;ξlFKE/ îG?|=rzkl1|&9Tp>3?JuA|K`0 @LlZ Ke(H/q[7{ADT|]xA)mޡUzzz7x7U _; #>9m$ʫq` (H_}Q^)m]|m[,d26'bz 6"QQ=i4v/Gmk`;3 >%.dp޵A Ӓ(c/ w s:A/O&XNpԓMի ǐ[Ի0Me{ɽ"~p{KrW%C=ă?/?ƈU>em~ݫ`}Mpa늭8 s X%&%bqگ+ 1وۧߎv ?K DuŽ_wpX >ooE|$7UHW3Q'"MNyלĜD,xAXl{:֗p%/X0%ݯؔzƴiƦ=r;A/1p:FXkxhFg.88cA\"}t:R6,g{?@VTY邡c׌G]p'kqK@"@{l0g/;0M,掏LD77dAM Mذrx ^Cڰ4\|HؕJYmrA04Ho#%=/~APO<]q֋{X͸ A,@ւW:Arn2ɉ^Xo $@me-_J7=J0`ve XBs; 9_VQ"LQ^{O + ߻EQ ZE5C\8L}"11XFk9IDATuj|z(ͫD~ 2R(T%[OLso8B=Yۀܡfo-;VUmNחWo$#TQZ]Żf  ǰi0tP!/e 4@]`)Wy`9QD'pэ1j5˅l_6ތs֢|k_]r`=7=;tz4ԝx:@~4[c].0D:olxRU@TTaז](ZV%z눈@=5< =D\luEtB47Ws.7[̟e>5ġsЉD#}?L GJTz kKUeU_`~U(@0tALR ơKzDD!\ GTL$ *UyGQnD&):G<2"0>,HS2[̏\0y盰Xu؄K'woe<[W(6*Kr>$k!7QeR|b?YRf'm6 Nq RBKyۊȒ|6t-dg]p!zAD'+ii9O|`ݠ+Kr KNf_ ’kP/ADn[ ` mŊ'>ǞiײOUD>00ZBy{l`v$mbÎ;06f_yJDY 5A@fo Aآ* =7 "5oq}3 bW$ s[l1`$$%0 "rJK@zru O~StTs[ zZ HUp⿞$M66,arZaEcH#9aWxM@@y\o. d2ܮ-۾b;R"5#a{5*.WlJcPb{qc*nS[pFMcaWXjH?QVXVrt6'vݍ珆Nc D~VUˊmōd^0MGdIp&*>W/ ""B`>W1C @v>KǐލaGVXJ7^&,gq[ޚ5yHD9JD)|O̙ Ԝv'mɣa z;V.FCz3 "wV"m3١>"M6/ތDJgDѕTۻ3dd(."R@h2Hlv]]Km ,j]ejKrE+`( $IHf2Iwm&\~C/or~=pN6C-M8=M 0DD% CD8ovgGuFYz\5{0DMK@$+Bɚ:;ܖ]]D8y]i07.T"fJ Wm9%zv[%S)Cr!"qWv ^ab;dLJW,ckڲZ8 !"qSQVO N0Z΅GvPD;`8xE+4fZ1ʎױe&\=.9]cU<}zLaޜb8$;n|1:GaM󨮨V"jǪ|l$g`{}"1ϵ hWxWmn]+Ԗ֏0e;+9E5a(UjTNC0<i ғlۼM%@DN 883؎\\Bo81z`7RuJa_@Dܮ;^0v;doTg ?y|C5LSc__͠ 89 D$Mm^'r*0v9r$ .@A!‚,sICVh$0º3؝L CC>o;p++ n<V z!sH80sge #b!{W2;YS|_.0Qc0~B!Vӧ_"|9SPsFaߣv~!YޝXf*w⨩կs `IKX%,[ ֓m`1n FInR]]ѡYG1n7,OIzW5-6+CIB; pkL ٺy+&" ItGxmooSmbxMw*$ZV \q'ާ;IPo`^PJ]>5MUfK8g9@D:߯g>埖+7٫R~spA~"X\ikR\w>N8_}l^X ^,љri_߳{q*XܮܾOGg7*Oa̶ Oi~voL\dYfŬ)vUse^FCF Y5|PM7y'g=:22n(i*I+fBo f#pw֯w?y7:^ |c VmOs;H)pea/qanƘyǘxDn=Dl Y6*2ޞ.8.^>PDHD.$|-MI_,]WyXSLt0vl;>tZkwMv)IѦ(Vn{}_ly}贽Ըx+|z`/0$YBJ~W03cs:~~G ǪWŊVp1MhH9/=,{+Hbx2^`0D##+ fpzvW"IE}I$=Ƙ/Bi}q~04'Í nrtMHjX^UkHpX1݃PhQ[x1ḟfHBW+y}4::'Zq}(TYQL$w@'37̿N=tU(^y ׇH:uMSZQ%hrq>S>kugiex)~hST$&`EE%fe@$m_a-S>v8KCZڎJ+?P IcfَP{K/D0a3~4.Nٺ#s*t-oo>\fێ*]~<$Kvl7 'e_6uHW۱S *-$ӘPxG!#Ǎ$S/nɦOXR6vI^?!Špf% J"yu9 {/yf+pInm~P1k&!%&g>#ǎG $UWo>Š0pHoYoMe#MAMU ;dۍcJf%`.ps̋t$J^J ּ_XTcV @Djr\>I3&ˣ}J:z(AVKcbOasldv+?W\+:r(G $ˣ Q!Od_[{۱ @'ъiÓasI% 0y},uX,ơ݇(=Xƥٰh!m“F ]-Б%&E Si>6o߾w i~4὇)/+g{}'T0 د( ."Ho9=s ;e,}_^?vAkVrxahGl{oNR0h;(TB`eJC>wT_F]1a =8tM|Fj:Jeu%}LyIcR* 0"c^JCo//& be0tݻugt=e)01CUyG+9ءc\%Ԕk=Bǁkm*ɟa4ty=ݗ/ͫj - k;cB UJ^ |!&۱B J@ E!"gXuMqmNJ}hJٵv`"Ai ._ Kcg4eLKiH3nl2Ѿt ;iMP HN)E% o ,fصE3iMb!")n\pEB@ ^\VwIa@]ZQh@z6s@v(  r Y4D$ɕXuCqmEX` %$5^'Hkf3-g\!"I5E g?AI|aٻEb[I <90kK.ºTMDP x)t˒%C3ـd, D$qPJEiـp@'ou0FH{CKffi4CiH;7fgv y S""Nl kfgfz* i#Um~UQh@g6`/"b˲ l^(4 ;p %!"go+ HƩH+Ā1VšI2 +ʠ>6N@$ 82˰2JEDu\-*Hg037ێOQH{'"0|+Ez-4  vwBW$ ]g&:0E3N"-'EC: HG)v3@!ͷ ̀S=+$9S33]_p ~ KXkYrj6dR-fa]EʃRڎWD@$UL˙Si~n`,R2i)lyj>(>U|QIs _.2LJۀ5X7M*"*"´i9QWt"0\)HVuC,4ŚֿzO|LrZ [fFh DF`|8Ύլ)w{p3Gs\nW;--_[1;ETDa9!H`XLp&Akvw;-ˉ"*" npE1+6``003yDǖktd15/ z r -X >@oЃ{U1TZ`p(v |);Lo,zݰ膡;3_9@g ;-zZʄ;!rŽz>B84O}pX-7\ֱSOU.;L" AqY0IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/onionshare-64.png000066400000000000000000000204461521174352300274630ustar00rootroot00000000000000PNG  IHDR@@iqzTXtRaw profile type exifxڭi帮sq&ߟ:STݪ/2BGHp26DŽK)= 5T8(Wo Wy?s{o?n<_ϛ~;g@';ϓ伻;S R-vw?gV|"4O):&w?3ͤ]9v>>l_92[726/l?=E 6,{K/g.ܟ?|~*?iOgj;mۮ9`-tn8]uOA?vǦ/le=ϭy<-:`[ݗ=d"/[1/'\3 yN -~^??G`\&3؞~?~\!dMgG&c=x&d粵ر̝L3gsOZ]r: 7Y!DCC-b)XL%B)Dr-r)\rͭJ,RJ-XS͵Z[sXg뾇{깗^{gGyQGnf,ζY +*;λۗ^/f_)]Yg+:s,h'=ņ9쩎IFL+°~L,o?yu3O}㵩<7nʦ'~f\iJj>gk -.W 83dW;HM~}NJ5L{Uwz4 q=ueծᖯ87Ns}p>&sØX/J7~i+:{aXfwoLi>iʀXf%,\K[i^4u,4Touz‡e;Re<>3Mޓ+kVuF _/ c-[v[B!=xR9rLܙZ/[~+XwN;5*!9boII<&gXygfp׍ך-]9#MEj\l=q_FLLsoԻ|Ӄc35"24ɩ?<>3i@zƮ-w +b% )yV=XE319Oa%:eargZVp,wLZeYJbfnch 9UY9z{.'fk}? 0L ,r< =/D_Bp9,qNȝYԸ\Y{;i yq/ganmRy]LW>*+ a>}!jJ0n8^jG1m(w+ &xcr :-zD* NoR; HKk_& ;( _.Z1LW]XC= !?̇(eZt`UPhIjX kɖY$R0 LY I _.|+(̽u=F&# _Tbp,Pv1j ./Τ"UC>" M,P(U!E)u[dk4Ͳ")0=cb #,dMbD2h"% nˈiHhy)78}g>^uAZfTZ̀~tGŅSBoX(70?p3uHa"ܢs( ⶈpؐH<ݨ F-7tNTF1Vޤv!*"-wqv GDt14PDJB @ΙAQ uɱ-eְ؉oԻH't!%$I:$|GYOsRbx91p6+tR WzL%$1E|f8K~$i搤8F$0Lō@>y $[~tX!L S}&Sx`!!$խC.j()$mIou9c?bCT O }40Zȝ[`Nر0?Td2JDOA)y@EL{vN6u96 pg?ku)߭e" @Ag˳JX|Q^@(I(=B.&q55;ds Eq%Ȑ USQթh%Շ>L# RW1y =n@FѹAz%]="~'1Z$6)?l$#auj:\^AA}P)bA6iuQfs4 q$'< \E$hE`]WE.>\_ I`d,& ?dͿ<%ϒI !\@ᵛ&_'Yo*$__eF֔K$y$'YO꧹1e-TÁ`ԹoS:C;/5L,kDM߅i-jjP%Nh)Xڎwl-plWe:țngQ5KSNvL͋eE-B 'j?qnS5+ XeQ1j%Я,M2"UBO͜HH?ުnZI-*/D ݨu`)K1! nx~R*CVZeC^v˯aˈ# *&~ ĿGoG%ڬ-N) )צXQ>b~ --U5ڦz\4QwP'QDH̏_ =M׈HT`% SS8rVbOѵ71&EDR:^8pȒPHn\&ȱejY&5&p!i钞mi@LC:4hjӶ6H7x\~=ţcSF΄נt8GRPC3W%>"+E O1{k/f;z 2Z;}Zx۪@V8s*ݚ+OOP{G_e 5͚'^#멑O~7C${U_  W5 @[pgnO'tS]P#*S<0C`BGm̓PM(ָ<շ()Eb@_neE4FiUXvTF$z˟qd}zfi:[V!Tgc:}9:k|;́P3%9g%+|ikL@ %B䯷Ȃ>dڣ)๩gFT#}⍙Om4K~&9*5TX1; zkس`]v&Ц-~ݖB@s!n-ئ:#}ғ=*.jw+˛';mOs7Qb|T1;-7@ܳ[ыIm-76|%9qV]l ZzK5VV` 囟ͭx+!, ('`p}`ӫC`݌M\4}GڝNnQ 쮷ٓ-2(gM;[/Q$KJHm8= xx N-/E9:<OaTbjk~{y493"jKX=zтZ͐\vT6ggJo6Q } Zw_L<}:+!J H/#t5Wu^ ٟBJ ,h"yv&G`Rd\:uG69$BU;PU'IajSQVWPj7"κS۝Wa(l=P/%0u,$%-\jb@@$ci'6mq?+*I$~'BLjb+MJF\OpH0AcYm<sv_ނP L b [3yH]JTLWVSs%nQڼJQ2^]*S4/>m:+ W:a2Ԟd!Yp4O_-_K? F3gFaf.SURI},P %)Z ,ʊVr*JE9/,v@= ~ȢEhiG<1$葳WJ@ er:uuF*94j1Ub?(g h4RPVR鈜+h=}^7kv͎Dw 4H 4_mvm ՅꈘAJO*{ :i+to;OK杢wЏ{kK+ssyH,=99dfg]haNH-b9KvRx%K8TwlƥxxC.^ԃaq¤$X&KVB}B22HHX ؼf3g;x&kORm5s|07ݩY$trh>S Sزj 7oxwwRYQŊ@Pk8ywj$[훕_OSW~zt.!E*a'A+x[]y_N41̟#DQu;߹%+<_  ?DkK6ijgB/.=IbRG@g{N`eGE{8.*b|A0יi3wh5[Zh:nv ԎWߌ$ey"*c7pqWlgّo{BYz8\jSS(?U(qTf 2*k_ V۪,h7z)+cƐS[<)MjI.jUEffg;d$iujXJE!G~r PkԀhek/2=g =P:>5Lk 0DEo gc#Db;)AEpGi%;/[cJڲ4jkٴg 3XEpš bǒ8#bo){.&3˒3aaܵZwxA6;m6:nvŤ9ENdn Z2 $kjiHʼ3Bf;7l{&DP?6*]DdLMa .!.``9Ӳ-Sh0c'3۩<\Ʌo/~+q'VTvu? v/KeƑfv|*OJ#qf"QQ;坼(E{[;MM\O@xЍ2û5EF4MoΎq#%wcxd>' Fx<<|/ḰptwoIENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/resources/onionshare.icns000066400000000000000000001025701521174352300274030ustar00rootroot00000000000000icnsxis32 NNPUQSOKKOSQUPNDPMBJWWJBMQDNNHPHN۞OIQCAMPKf^IQPLQHTPMQREdYnGIsDSG\AFPQ=uEMYLONRcgUUg\TNOMYM]Em=OMDF\GSD{QPVdERQMPTHQLPQI^fKPMACQIO۞NHPHNNDQMBJWWJBMPDN PUQSOKKOSQUPNN   m  t yy  .$  -9@w!D   +//    ]: !wJd,  $.  yy t  m   NNPUQSOKKOSQUPNDPMBJWWJBMQDNNHPHN۞OIQCAMPKf^IQPLQHTPMQREdYnGIsDSG\AFPQ=uEMYLONRcgUUg\TNOMYM]Em=OMDF\GSD{QPVdERQMPTHQLPQI^fKPMACQIO۞NHPHNNDQMBJWWJBMPDN PUQSOKKOSQUPNNs8mk66::ߟ::66il32NNOONN OQPNKKNPQONN OPHAFOXXOFAHPONNQIDhΠhDIQNPCbbCPNOBBPNPFBPNPI CQNPF<īcIONPCb9VDBBEcDPN Q@V;KOFfNKPNPCCFLOQPNKBNKOGeMKPNxTJBDM[KOGdXIPNPD~ѿKNKLONPDJKPNOMNSMONPJYZKONPIXWHPNPJMMJPNN PMD~ ~DMPNNOPDNԊNDPONNPNCIhhICNPNNQOHBCJRWWRJCBHOQNN OQPOMKKMOPQONNONNNN      0tt0   __   OO              ԕlNV|O , X ͋  ,  <]  / q  ,  /  Q/  . r . F .    3     '  %+( (+c% '  x   3   .   . r .  /;  /  -  y /  ]Q   ,  F k , O              OO   __   0tt0      NNNNONN OQPOMKKMOPQONNQOHBCJRWWRJCBHOQNNPNCIhhICNPNNOPDNԊNDPONN PMD~ ~DMPNNPJMMJPNPHWXIPNOKZYJPNOMSNMONPKJDPNOLKNK౓~~DPNPIXdGOKMBCDDCC[ڋNPKMeGOJPCNQPQQK@pCPNPKNfFMSMJRNORCeJONPKOfFPCNONRAgHON PKOfETNQDCQNPJNfEQNPFxCPNPJMeDQNPMUKPOONNOKSjFPNLJLGOJLIMNNOaJONLX`[QdYYbSMMSbYYdR[`XLNOJaONNMILJO?NJLNPFjRKONNOOPKCRONQDeMJPNPC[KONQEfNJPNQC@RNOREfOKPNOHgoCRNOOIJOFfOKPNOJeAQPONOQN>KOFfNKPNPCCFLOQPNKBNKOGeMKPNxTJBDM[KOGdXIPNPD~ѿKNKLONPDJKPNOMNSMONPJYZKONPIXWHPNPJMMJPNN PMD~ ~DMPNNOPDNԊNDPONNPNCIhhICNPNNQOHBCJRWWRJCBHOQNN OQPOMKKMOPQONNONNNNh8mk ]ֺ]fftt))OOiijjPP..vvee##\\\\##eevv..PPjjiiOO))ttff]ֺ]it32NNNNNNNNNNNNNNNNNNN]iyøyi]NN}}NN_ʼn_NNf˟fNNգՏNNPuuPNNtثtNNXXNNNNPPNNNNmmNNvvNNNNMMNNNMNNjvNNMNTmNNNNMNTPNNMNNNRNNMNRXNNMNOΑƖlVOVlNNTӎqXQLMMNMMLQXq՝tNNMNҊcCMNMCcPNNMNMXYMNTΈTNTʚuNNMNYZNՅ}FNF}NNMNMTUMNR̓INI֘NNMN]^NRՁMNMՏNNMNQRNOLNLfNNMNM\]MNTӦLNLˎNNMNSTNMNM֖_NNMNY[MNMNINNMNUZNMN}ŎNNMNMSUMNMNFʔNNMN^^NMNT}NNMNQRMNMNNMNM]^MNMNcNMNTTNMNCՓ]NMNMYZMNMNMqiNMNZZNMNXyNMSTMNMNQߓNM^_MNMNLƓNQRNMNMÓNM\^MNMNMӓNTUNMNlNMXYMNMNVNR݇SNMNMNR[\[RNR[b[RNMNMNSޅRNlNMNMYXMNMNMNRTNӒMNMNM^]MNÒLNMNRQNQNMNM_^MNXNMNMTSMNyqMNMNZZNMNiCNMNMZYMNMN]cNMNTTNMNNMNM^]MNMNTNMNMRQNMNN}FNMN^^NMNN}NMNMUSMNMNNŔINMNZYNMNNMNMSNM[YMNMNN_LNLӇNTSNMNN˖LNLTNM_^MNMNNfMNMONMRQMNMNN՗INIփRN^]NMNN}FNF}RNMUTMNMNNTNTʈՇNYYNMNNucCMNMCcTNMYXMNMNNP؜qXQLMMNMMLQXqՎґNMNNtƖlVOVlTNMNNONMNNXQNMNNRNMNNՇNMNNPTNMNNуNMNNmTNMNNvjNNMNNNMMNNNNvvNNmmNNNNPPNNNNXXNNtثtNNPuuPNNգՏNNf˟fNN_ʼn_NN}}NN]iyøyi]NNNNNNNNNNNNNNNNNNN   "2HjĭjH2" MM $^^$ .. fƣf CC BʫB  RR  ۷ۓ 88 DD SS  SS  5D 8  R  ӱpW66Wp Ž<  <ƝB )  )    C  ŅM M    ǘf  #$ Ɓ  Ə  ߃   .  !# †    ǖ$  ݉ ^  M   ݍ    #$ M    #ߓ$ )  Ɠ"  ܗ  <2  H  ܛ ӓj  #$     p  !$  Wē  6ܑ  ܥ  ч  * ҅ 6  ޥ ܒW  Ēp  #"      $# j  ޛ H<  2  ޗ ")   $#    M  $#  M  ލ    ^    މ $  ‡      %# .     Ɨ ǃ  $# fM M    Ň  C)  )   ʜ<  <Ǝ BӱpW66Wp   R Ň  8 D4 SS SS DD 88 ۷ۓ  RR  BʫB CC fƣf .. $^^$ MM "2HjĭjH2"   NNNNNNNNNNNNNNNNNNN]iyøyi]NN}}NN_ʼn_NNf˟fNNգՏNNPuuPNNtثtNNXXNNNNPPNNNNmmNNvvNNNNMMNNNMNNjvNNMNTmNNNNMNTPNNMNNNRNNMNRXNNMNOΑƖlVOVlNNTӎqXQLMMNMMLQXq՝tNNMNҊcCMNMCcPNNMNMXYMNTΈTNTʚuNNMNYZNՅ}FNF}NNMNMTUMNR̓INI֘NNMN]^NRՁMNMՏNNMNQRNOLNLfNNMNM\]MNTӦLNLˎNNMNSTNMNM֖_NNMNY[MNMNINNMNUZNMN}ŎNNMNMSUMNMNFʔNNMN^^NMNT}NNMNQRMNMNNMNM]^MNMNcNMNTTNMNCՓ]NMNMYZMNMNMqiNMNZZNMNXyNMSTMNMNQߓNM^_MNMNLƓNQRNMNMÓNM\^MNMNMӓNTUNMNlNMXYMNMNVNR݇SNMNMNR[\[RNR[b[RNMNMNSޅRNlNMNMYXMNMNMNRTNӒMNMNM^]MNÒLNMNRQNQNMNM_^MNXNMNMTSMNyqMNMNZZNMNiCNMNMZYMNMN]cNMNTTNMNNMNM^]MNMNTNMNMRQNMNN}FNMN^^NMNN}NMNMUSMNMNNŔINMNZYNMNNMNMSNM[YMNMNN_LNLӇNTSNMNN˖LNLTNM_^MNMNNfMNMONMRQMNMNN՗INIփRN^]NMNN}FNF}RNMUTMNMNNTNTʈՇNYYNMNNucCMNMCcTNMYXMNMNNP؜qXQLMMNMMLQXqՎґNMNNtƖlVOVlTNMNNONMNNXQNMNNRNMNNՇNMNNPTNMNNуNMNNmTNMNNvjNNMNNNMMNNNNvvNNmmNNNNPPNNNNXXNNtثtNNPuuPNNգՏNNf˟fNN_ʼn_NN}}NN]iyøyi]NNNNNNNNNNNNNNNNNNNt8mk@ 0BbͷbB0 CC:rr:BB!! ee~~ZZff  ffZZ~~ee !!BB::rrCC 00BBbbBB00 CCrr::BB!! ee~~ZZff  ffZZ~~ee !!BB:rr:CC 0BbͷbB0 onionshare-onionshare-26fcdc5/desktop/onionshare/resources/onionshare.ico000066400000000000000000000353561521174352300272300ustar00rootroot00000000000000 h6  00 %F(    N N/N NN NN NN NN NN NN N/N NN NN NN NN NL LL LN NN NN NN NN NN NN NN NSSvvSSN NN NN NN NN Nb(bb(bN NN NN N/N NSS]!]N NN NN N/N NN NvyGyM MM MX`&`^#^N NN NN NN No;oN NN NN NN NQQ¬^#^N NN NL LN NN NN NN NQQ¬_$__$_¬QQN NN NN NM ML LN NN N^#^¬QQN NN NN NN NyGyN NN NN NN N^#^`&`e,eN NN No;ovN NN NN N/N NN N]!]SSN NN N/N NN Nb(bb(bN NN NN NN NN NSSvvSSN NN NN NN NN NN NN NN NL LL LN NN NN NN NN NN N/N NN NN NN NN NN NN N/( @   N NN NSN NN NN NN NN NN NN NN NN NSN N00N N'N NN NN NN NN NN NN NN NN NN NN NN NN NN NN N'00N NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NK KIIIIK KN NN NN NN NN NN NN NN NN NN NN NN N5N NN NN NN NN NOOg/gʶʶg/gOON NN NN NN NN NN N5N NN NN NN NN NN NN Nb(bb(bN NN NN NN NN NN NN NN NN NN NN NN NkkN NN NN NN NN NN NN NN NN NN NN NxyN NN NN NN NN N00N N'N NN NN NN Nk_N NN NN NN NN NN N'N NN NN NN Nb(biM MN NN NN NN NN NN NN NN NN NN NOO˸wEwK KM ML LM Md`M Ma&a\M MN NN NN NN NN NN NSN NN NN Ng/gRRN NN NN NN NN NN NYYDzhM M[[iM MN NN NN NN NSN NN NN NN NQQN NN NN NN NN NN NN NN NL LN N`%`qM MN NN NN NN NN NN NN Nʶa)aN NN NN NN NN NN NN NN NN NN NZZhM MN NN NN NN NN NK KʶN NN NN NN NN NN NN NN NN NN N`%`rM MN NN NN NN NIIN NN NN NN NN NN NN NN NN N\ \jN NN Nj\\N NN NN NN NN NN NN NN NM MIIN NN NN NN NM Mr`%`N NN NN NN NN NN NN NN NN NK KK KN NN NN NN NN NM MhZZN NN NN NN NN NN NN NN NN NN NwEwʶN NN NN NN NN NN NN NM Mq`%`N NN NN NN NN NN NN NN NN NN NRR˸N NN NN NN NN NSN NN NN NM Mi[[M M`[M MN NN NN NN NN NN NQQg/gN NN NN NN NSN NN NN NN NN NM M\a&aM M`UUN NN NN NN Na)aOON NN NN NN NN NN NN NN NN NN NM MiĮʶb(bN NN NN NN NN N'N NN NN NN NN N`kN NN NN NN NN N'N NN NN NN NN NyxN NN NN NN NN N00N NN NN NN NN NN NkkN NN NN NN NN NN NN NN NN NN NN NN Nb(bb(bN NN NN NN NN NN NN NN N5N NN NN NN NN NOOg/gʶʶg/gOON NN NN NN NN NN N5N NN NN NN NN NN NN NN NN NN NN NK KIIIIK KN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN N'N NN NN NN NN NN NN NN NN NN NN NN NN NN NN N'N NN NSN NN NN NN NN NN NN NN NN NSN N??(0` $  N NN N-N NjN NN NN NN NN NN NN NN NN NN NN NjN N-N NN NN N"N NlN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NlN N"N NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NsN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NsN N  N N>N NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN N>N NN NFN NN NN NN NN NN NN NN NN NN NN NM MK KHHGGGGHHK KM MN NN NN NN NN NN NN NN NN NN NN NN NFN NN NrN NN NN NN NN NN NN NN NN NO OuCuxxuCuO ON NN NN NN NN NN NN NN NN NN NrN NN NrN NN NN NN NN NN NN NN N[[c˸˸c[[N NN NN NN NN NN NN NN NN NrN NN NFN NN NN NN NN NN NN NM M{K{{K{M MN NN NN NN NN NN NN NN NFN N>N NN NN NN NN NN NN N`%``%`N NN NN NN NN NN NN NN N>N NN NN NN NN NN NN NN Na'aa'aN NN NN NN NN NN NN NN NN NsN NN NN NN NN NN Na'ab)bN NN NN NN NN NN NN NsN NN NN NN NN NN NN N`%`YYN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NM MDzVVN NN NN NN NN NN NN NN NN NN NN N"N NN NN NN NN NN N{K{Dz^#^N NN NN NN NN NN NN NN NN NN NN N"N NlN NN NN NN NN N[[{J{IIK KN NL LIIN NyVVN NN Nk4kc)cN NN NN NN NN NN NN NN NlN NN NN NN NN NN NN NcQSSN NN NN NN NN NN NN NNN]"]ŰWWN NN Ns?sμZZN NN NN NN NN NN NN NN NN N-N NN NN NN NN NO O˸o:oN NN NN NN NN NN NN NN NN NN NN NK K|]"]N NN Nk5kɶYYN NN NN NN NN NN NN N-N NjN NN NN NN NN NuCuvCvN NN NN NN NN NN NN NN NN NN NN NN NN NL LL LN NN Nr?rμ`'`N NN NN NN NN NN NjN NN NN NN NN NN NxPPN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NtAtϽXXN NN NN NN NN NN NN NN NN NN NM MXXN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN Ni2iɵYYN NN NN NN NN NN NN NN NN NK KM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NtAtϽb(bN NN NN NN NN NN NN NN NHH}N NN NN NN NN NN NN NN NN NN NN NN NN NN NN Nr>rͻZZN NN NN NOON NM MM MFFjM MM MM MNNN NN NN NN NN NN NN NN NN NN Nm7mʷ[[N NN N[[ʷm7mN NN NN NN NN NN NN NN NN NN NNNM MM MM MFFM MM MN NOON NN NN NZZμr>rN NN NN NN NN NN NN NN NN NN NN NN NN NN NK KHHN NN NN NN NN NN NN NN Nb(bϽtAtN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NIIK KN NN NN NN NN NN NN NN NN NYYɵi2iN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN N{J{M MN NN NN NN NN NN NN NN NN NN NXXϽtAtN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NSSxN NN NN NN NN NN NN NjN NN NN NN NN N`&`νr?rN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NQuCuN NN NN NN NN NN NjN N-N NN NN NN NN NN NYYɶk5kN NN N]"]iYYN NN NN NN NN NN NN NN NN NN NN NN No:o˸O ON NN NN NN NN NN N-N NN NN NN NN NN NN NN NZZμs?sN NN NWW۬YYN NN NN NN NN NN NN NN NN NPPvCvcN NN NN NN NN NN NN NN NlN NN NN NN NN NN NN Nc)ck4kN NN NVVZK KN NN NN NN NN NM MXX[[N NN NN NN NN NN NlN N"N NN NN NN NN NN NN NN NN NN N^#^Dzufk}{K{N NN NN NN NN NN NN N"N NN NN NN NN NN NN NN NN NN NVVDzM MN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NYY`%`N NN NN NN NN NN NN NN NsN NN NN NN NN NN Nb)ba'aN NN NN NN NN NN NN NsN NN NN NN NN NN NN NN Na'aa'aN NN NN NN NN NN NN NN NN N>N NN NN NN NN NN NN N`%``%`N NN NN NN NN NN NN NN N>  N NFN NN NN NN NN NN NN NM M{K{{K{M MN NN NN NN NN NN NN NN NF  N NN NrN NN NN NN NN NN NN NN N[[c˸˸c[[N NN NN NN NN NN NN NN NN NrN NN NrN NN NN NN NN NN NN NN NN NO OuCuxxuCuO ON NN NN NN NN NN NN NN NN NN NrN NN NFN NN NN NN NN NN NN NN NN NN NN NM MK KHHGGGGHHK KM MN NN NN NN NN NN NN NN NN NN NN NN NFN N  N N>N NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN N>N NN NsN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NsN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN N"N NlN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NN NlN N"N NN NN N-N NjN NN NN NN NN NN NN NN NN NN NN NjN N-N N??onionshare-onionshare-26fcdc5/desktop/onionshare/resources/onionshare.png000066400000000000000000000600451521174352300272330ustar00rootroot00000000000000PNG  IHDRxiCCPICC profile(}KPƿ !C .VB`<4$).kAt5 : ")$"./|];Wej463$[o#.bH-cZh`>Z5]JޒO<'M\"ش G=rIT/GL: +%?]"lf8FXj`djSqEɟ[XaXS+Nvh^_Z:L;Tl@ yPo6TuR,d+I6w}\/ffQ&Ou{[1)JΡ»@8?ǎS;^/S_WZ{^5i ])H+3z}zqd- {Ž#~~Xo/tHxHbKGD pHYs B(xtIME+ª IDATxw|ugfw3i LBAT$D׳{ٽNO ME" -@!lD!}KI3>| "6-v%P;Hs"7ӿ?\X?u nl#t6{C#g5~8 AqhaBL6NU i*ԮzH3NGsPG)JU% | jײzhSCPuֺ}KŽoM4))"r"@c~D0v((BYf9 WMtAbz:U/  [܄QUU`GWZ"2 x DMr30y0T` ꊂ c!b B~T~i>@d@!TRs LC`<&l;DO j42b So8#}#ShpuFB,D BsTL{jy0_ HE 5X,@(UqlCX|iJ)LC?8,(sj1b 8UT/p ^c*CN| 4כ2b rȼA\k[8ٔ).u kp>K V }8le@oU JL4SFA,O q &VuY|1P1E:CmnDNP]Aϵ-e@=%&BtZ6_ ^kq i&6+OXgK]X?#L!2x@/&B6w?|) pSnP yV:A,yƼhp !j ^k[89p7?O  GǪz;D1")ނWVs rTQP; ux"^1ך-X}GaWo@R yUT_/-ZUW4&B< +N}?^eDAc+L< u$PlJ! X~d~*LfD%n6[ 3 "*-Y7jAD>9Tjk yrG΂2 "5[3 r0@Ŀۍ U88X {!LUU/+3 '7_j!? 3MW1 P;MF+p6s(X5? f4(C:¿ rXODA" *~)P %U6ADA꿢NsN͜FF@LQ4ЏzA.kQO~k9H#d4(|o70@$ " p,ɵMqO@iƧTA7'PKDDYkA`߿yE>DD+`2[w"@/1M&r" GS(zg  "jQKdInTl Y<ASb]N[ndDDm򮤗:zQȼA>0iuɼy| @ DAW :ĥ!G":wFbZ"`5 3 DI`0" :A(Ї. `opd~ljjaiGFŞ T=Q]Z {m T䙭 FLFSOd0 jPc(RǀH흊N@tl4bca5BVUUUաu5uhhl@ue5vm܅]vM *&팂?i,ЉiЩ1 QHLJD\8Bp~[:p58 U Wb;P/a,~%ߘ?Fj4Xɹw^?䞑tIN kQVRÕuVl^PUб,-%/_c`ЄAHJJBJc =W[w^c÷ˢ_`9ha0Rц-`G?1̋Y=!gAJF vۿ{?V-Y5|#m-,wxIai1h F2rƆFlX_5/ ̝|X @[U> 2 ߃˙p؋O#RU&gǏxYt uft+~Mԉ8qE!%}wً19|sf0 3%@X~J0i;i,&2*,_>%,|k:8w\̥8t6bcK?3F⧛Iqsc,LUPW!_gOS-XDCU?g̵IԕzCK0 |D/:,>)G Ŀ쀀Q:Aʋ̋a ~R`zȄWNF| J|7Yp9FB?.e7k-& vl}6ndAA@|W1 @ԉsj8iuze}O>G>WM1`Rp21t 8t 2UUؔy\tV|fLȗ fUDr׎w]n=1 fJ`ƿg`+Xi74h[xPr 9ffc#rqG=C2JxhCt$ ȯ"wX_IǚkB j7Ŧajsz鯟FlAǺwèFa֭.f O]M)d0eA\]!7;sp߫!s< #FO +عj'_$RlJ D,ѽA ߀+!VD 0AJIF4h}{o  /}{vGg?11|u/QYV`(, bbS }$PUAyttK0x@s:Z=W$/2/}^:x|Q11*oUÁ_07D 06'$mm,^-e`$=p툌dDA(4<`Ŏ|E78x\ek` ( z =x +d W䭊M '1dUP 4wl|Q߁/qѡxf33 ҰI0a^C%ybS6LFS$pꘘ<5)t0w^<(jjFUBE/\_hxÿ98x93xx3P?`2.Iꛄ~Otop":Qdt$?W倅tL,)V\Nyyq*R/FBQe 8fO ¨m~ > c:x߅7Owc< cAWd4vJ'>zbZXD3 7oFuI5i$/Vl>V3u;u?;0]%`ȸ!ظv#jKyw@; fIYۊ]ʼnp/w'eH q"ꐸqxb:+h>{nD/$&%2 "rC FEQh9fy/WNA՗9'*9 ODD<=iD eh:W.,& χ۹Fpqj^? qiIwM'"J陂'OB?O1o{Hl]]#!yL|xde-&J (6e @))I* qh 6uIĬD*\D){ X%I 1p"r7Ayo2IKP⑐ on7" zdw|0Z=K*( K rJ\8Bmغt+h!B)E% _xM@D)=;?5 eI~_)n}ۇt}?q^,DD!IHNϗ3gu_,M *9}oƤ+&1RUkQu 8t5U58 ʪP]^ڃhkDCMl 6\.8u"!zHzB  G\r!k#*: aA|xDD2xr~/`+UyG59 9e%K+q`TVWbǦ(^]vH͑v}<lGx JN"#}@wEzt!{2⣸}G gb '$ũ>Ѵ(n'͛pU37r9]ط}Jpy!6,؀ ;gw$d@@zޝOA܏fya<qe;P?/kZ#{ǰÐ)qjW8>fW+oOc ` hQ(*,w}_ʂ}Pwnr"wQN@'X*)mچ|AV0n:G7po/XhdKEѺ"|'xױV=3KkA@Dt$pU@$f')6CL"DVJ@ klhĆ_bJCRq`Ac d?:p9y[IVd\Ь֠VE!_&uu=y,~w1rkrJ|3ćsRg2 1a {Z8|(6eV%N556̭AZkX`>y4T5p{@Hx.}R6bbF>p7&8^*:4 ]Dp;̴gzjYP IDATع=iwo~!S(S!I &ȅáաBq(ùJ);|RdI~ @on߸14( ,:, O^$V~ߛ79a|ٷKCJ:i]Å\8ؔ^*7;=b>WM ^Ei>l6>ba׫)*4<x6-0:iw ɹ%w7Vu%?>޽]T'j`KP^S^`(A()% >X0t[ҮȒL% V\N~0.x ΝO+!&-ii<-UҮ7"M& !Ep~૘y݉sb-ˈɃj[U?-eؔ6~Ԯ.Kuw?O tXB<;Y/0TW1ňt"WeFnŦkolOx @w_?`K,2CuR~z޿9rasRgg>T7ؔ=^LQ 9i&<61>7ϿGjTtM@}Qz(,)b[qNJ01oێ;_{?~#a :=/_ dIXQ])<[$_z2o\}:p ^%,~m1w WCvۉCz#<2(,ލ{ M` 7A1xt@RG/z;䎧~= ~D\wg *&1{T ؕF9TT8ß+-[x5,xXӈ?)S@PBi V3湀"Ŧ7Hcrs` OUU~o6޸ |ϸV.+f@xpeP 0& .Ŧ|/At!8 93^;6.ڈ] ËL.ㅰ7e\RdbWZVr|0[#Mt,xW 1p@ z !z* ჁIL)[B!`( %5V?rڳ~JbШA0H|iw3?(6e{ $ ؕv^X_Wk?Y˝NtS)v݉g&1;w`>YbS^s[0M<\gJ@[ K oNGR^T]:n(P@`3be ⨸L)b[aY0ؕV^`i+NGmRT`wn =k(ONX"O Tljw'䕀S]p^X;Ε-(=\!c@?u`QNŦ|0)fRo` +-;awgOĝ:2?g-~."<[ J徼ձ١33UU1?3yGg44b|XIQa!.D)%*r|3Q3 ߮ <|p&w:r+eeS/:Z @~Ŧ|߱ HbZ6,؀}0#6.܈AiHwHY Sl]"Ax׽44+ǝs@te6>"R]#W?|˨,d~&o6DǮN~T Shlp2 ?S2P[-%aLdx:訲2AfLGP+gd@bS>i 4L an\ :n;yљ_de0ND @sg :=ÉwzHR$Je@>J}_8)<&ߪD8 :tFzϜ Ύ 6j>zŦlj T ϕ~tA 9/oj6d?],,Dmdi6J)RbГ &L UMg<@ZWCbr"1^e֣eP(vr@`ϕy97!Q''O(* `V,DsN,_A4`g { ǺevCL"[tR_AЩC u4~K"w X- דo,kb HX:p;R}K 0ڭ+C"FcZ@U^,D3󡙨e> @b@ M&n!Q' eg ϟ ‡7!ikpyZmi--1})KCh4_O,Dŋ_t1IL Z!g"&'Th"oڻf/611ѵ0 ]O(.ՓßX<9?0sNdPD@9KZj#9s 5 ?K/._AHB|C8Y8'9%3fg6TUe>е; @^@/J7bwn1bUo< @:?y^B##2Aq`qr<{P2?K?|.Z8%rJ@O,DQ;~ |[n@{*,Dh ѱ,@=K!@bDg B5@Q*WBpLS,Df] GGW=,Dh͢5 z -9%ȻVZW@tG) ?KK(e^)NtqJ=KßX(/c^%NӉ.+?ßXd- ˢԔ Bb `vZe0 Y0OE' 6[QWU t& qK% nھP# @!xYB Ċ*T.@n  M@E ßX|G:uz1~{ ?Vl(a^HIz1";O,%CV3/2Y#8%/&hz"pb 򭚪`|O,e#VERDa@[Z C)+^'"x!|Z8%訪*ͯB9%+*,"ßXW!x^'򭆚z:b :9;C"QYS@ti='S1oO,D\` &A ̩A%^ +nx] (,oO82w$C yPq 9YX[X%` Pb WX@,Dhm֛£v^4} {o)kC "@WЍX|<@o W%Hcß5-!Kqv@7DSSF/b@S<Ua Xx `𦘘@,'+V-oxS| V@7L}]=N/DD.Y-O:C %5 UrO%V/%8}J8PUUZUUzQrd@,["T7QWU=׋93 C(? ^]Qͽˆe@> A1DrK+ޖ;"!Kq)RU=@W546p/d^@,#=SlZވՇy R2S %8cCvmŽDӆ3b ;xl8卹{n>0l0@,}}Zޠ Y>'Kq? hiDME n/ug@^> 18=]7!Kq{p <b /q7=@=I %8+sT޶bvEn %82:L7*#}e@ޱc~r7x՞*ѵWA,e%e}@LTA,Spa~Ƞ EA,YO(*Tͯly+ |$S,κ,A, 6;MC%8=؃ @n- Rmw CSgԇZBN(K@7ë{]#N%_ %8=c,rPi}(//w =]7\h}~w./e@B r]C# )Rb@ZAZaER~PtB4. XߝS5R X|miou%($O唌IF 9kk|H  yMiˆ5r?apol߼ @ZO]|l䱈 +q'IkVl_ kёm<} dw C&B3{2b O.l`zR?/<9??P$_*Y)^]q J֕0 $^A7Oljk®]mw^W>'-P( _V&7nfvRV3/`kS2b ` oAZ_,u[j==ko:7?~3 ֫N}ҿIKPʒ|6t'=.3sQqQ0~zA 9[m|. K L'g8t&w!?=XX8SŦ,=/t ?17`WQ{A^ 4Ok8۬Ybp ZOta܅LBRAfXTKPTl% YJI#+d"\زd l5fKUV[1 (W8S pڝزG קxA%ÿT:Z\X) :Cgpw *V61G`*b~*#7| 1,b}TidIN0JQ@ϑ=Ou ]±qFAnwڿ_XW. @0-ؔ%*YYjf TVVbe8b8GȉgSq-Cd` )6C{KtPR@LB w-?%zC PPcnx?Θf@LN[[*[[$  9  NC3 `j!WO߉А~-O&KZ<~Ό]ٚ$Krg\PRX7NޠǠу{n6|`3d#-IY]1UڄqHJMb~bQJExTiߌNJ+r-@)dI@, 83o Raa_>߼it/"[̾\ ;[-Kra( c.ca 3j`} Z4a{ 9 Ŧ,rkȒQr" 1b`Ɲ87F'3a:~3 :qvv[ bW$Ì[ =GDJ@~E0k6. kqmwGe->Q0:V}ؖ,Kr)epA@A_Ft .'wE0A{ѹxN))!^/XUF#19an0XlTa 'z 9ȦŶFŦ4ʒ<|*l83D1S`~1 0m1tIϧZA[~C䳥0ybţ0ThD(F3B-K0 vSomm~\ s+6M6dd py)F`Lסϰ>߯P1ɈGz㧍crQ) -ŶzY̏ھr;ξlFKE/ îG?|=rzkl1|&9Tp>3?JuA|K`0 @LlZ Ke(H/q[7{ADT|]xA)mޡUzzz7x7U _; #>9m$ʫq` (H_}Q^)m]|m[,d26'bz 6"QQ=i4v/Gmk`;3 >%.dp޵A Ӓ(c/ w s:A/O&XNpԓMի ǐ[Ի0Me{ɽ"~p{KrW%C=ă?/?ƈU>em~ݫ`}Mpa늭8 s X%&%bqگ+ 1وۧߎv ?K DuŽ_wpX >ooE|$7UHW3Q'"MNyלĜD,xAXl{:֗p%/X0%ݯؔzƴiƦ=r;A/1p:FXkxhFg.88cA\"}t:R6,g{?@VTY邡c׌G]p'kqK@"@{l0g/;0M,掏LD77dAM Mذrx ^Cڰ4\|HؕJYmrA04Ho#%=/~APO<]q֋{X͸ A,@ւW:Arn2ɉ^Xo $@me-_J7=J0`ve XBs; 9_VQ"LQ^{O + ߻EQ ZE5C\8L}"11XFk9IDATuj|z(ͫD~ 2R(T%[OLso8B=Yۀܡfo-;VUmNחWo$#TQZ]Żf  ǰi0tP!/e 4@]`)Wy`9QD'pэ1j5˅l_6ތs֢|k_]r`=7=;tz4ԝx:@~4[c].0D:olxRU@TTaז](ZV%z눈@=5< =D\luEtB47Ws.7[̟e>5ġsЉD#}?L GJTz kKUeU_`~U(@0tALR ơKzDD!\ GTL$ *UyGQnD&):G<2"0>,HS2[̏\0y盰Xu؄K'woe<[W(6*Kr>$k!7QeR|b?YRf'm6 Nq RBKyۊȒ|6t-dg]p!zAD'+ii9O|`ݠ+Kr KNf_ ’kP/ADn[ ` mŊ'>ǞiײOUD>00ZBy{l`v$mbÎ;06f_yJDY 5A@fo Aآ* =7 "5oq}3 bW$ s[l1`$$%0 "rJK@zru O~StTs[ zZ HUp⿞$M66,arZaEcH#9aWxM@@y\o. d2ܮ-۾b;R"5#a{5*.WlJcPb{qc*nS[pFMcaWXjH?QVXVrt6'vݍ珆Nc D~VUˊmōd^0MGdIp&*>W/ ""B`>W1C @v>KǐލaGVXJ7^&,gq[ޚ5yHD9JD)|O̙ Ԝv'mɣa z;V.FCz3 "wV"m3١>"M6/ތDJgDѕTۻ3dd(."R@h2Hlv]]Km ,j]ejKrE+`( $IHf2Iwm&\~C/or~=pN6C-M8=M 0DD% CD8ovgGuFYz\5{0DMK@$+Bɚ:;ܖ]]D8y]i07.T"fJ Wm9%zv[%S)Cr!"qWv ^ab;dLJW,ckڲZ8 !"qSQVO N0Z΅GvPD;`8xE+4fZ1ʎױe&\=.9]cU<}zLaޜb8$;n|1:GaM󨮨V"jǪ|l$g`{}"1ϵ hWxWmn]+Ԗ֏0e;+9E5a(UjTNC0<i ғlۼM%@DN 883؎\\Bo81z`7RuJa_@Dܮ;^0v;doTg ?y|C5LSc__͠ 89 D$Mm^'r*0v9r$ .@A!‚,sICVh$0º3؝L CC>o;p++ n<V z!sH80sge #b!{W2;YS|_.0Qc0~B!Vӧ_"|9SPsFaߣv~!YޝXf*w⨩կs `IKX%,[ ֓m`1n FInR]]ѡYG1n7,OIzW5-6+CIB; pkL ٺy+&" ItGxmooSmbxMw*$ZV \q'ާ;IPo`^PJ]>5MUfK8g9@D:߯g>埖+7٫R~spA~"X\ikR\w>N8_}l^X ^,љri_߳{q*XܮܾOGg7*Oa̶ Oi~voL\dYfŬ)vUse^FCF Y5|PM7y'g=:22n(i*I+fBo f#pw֯w?y7:^ |c VmOs;H)pea/qanƘyǘxDn=Dl Y6*2ޞ.8.^>PDHD.$|-MI_,]WyXSLt0vl;>tZkwMv)IѦ(Vn{}_ly}贽Ըx+|z`/0$YBJ~W03cs:~~G ǪWŊVp1MhH9/=,{+Hbx2^`0D##+ fpzvW"IE}I$=Ƙ/Bi}q~04'Í nrtMHjX^UkHpX1݃PhQ[x1ḟfHBW+y}4::'Zq}(TYQL$w@'37̿N=tU(^y ׇH:uMSZQ%hrq>S>kugiex)~hST$&`EE%fe@$m_a-S>v8KCZڎJ+?P IcfَP{K/D0a3~4.Nٺ#s*t-oo>\fێ*]~<$Kvl7 'e_6uHW۱S *-$ӘPxG!#Ǎ$S/nɦOXR6vI^?!Špf% J"yu9 {/yf+pInm~P1k&!%&g>#ǎG $UWo>Š0pHoYoMe#MAMU ;dۍcJf%`.ps̋t$J^J ּ_XTcV @Djr\>I3&ˣ}J:z(AVKcbOasldv+?W\+:r(G $ˣ Q!Od_[{۱ @'ъiÓasI% 0y},uX,ơ݇(=Xƥٰh!m“F ]-Б%&E Si>6o߾w i~4὇)/+g{}'T0 د( ."Ho9=s ;e,}_^?vAkVrxahGl{oNR0h;(TB`eJC>wT_F]1a =8tM|Fj:Jeu%}LyIcR* 0"c^JCo//& be0tݻugt=e)01CUyG+9ءc\%Ԕk=Bǁkm*ɟa4ty=ݗ/ͫj - k;cB UJ^ |!&۱B J@ E!"gXuMqmNJ}hJٵv`"Ai ._ Kcg4eLKiH3nl2Ѿt ;iMP HN)E% o ,fصE3iMb!")n\pEB@ ^\VwIa@]ZQh@z6s@v(  r Y4D$ɕXuCqmEX` %$5^'Hkf3-g\!"I5E g?AI|aٻEb[I <90kK.ºTMDP x)t˒%C3ـd, D$qPJEiـp@'ou0FH{CKffi4CiH;7fgv y S""Nl kfgfz* i#Um~UQh@g6`/"b˲ l^(4 ;p %!"go+ HƩH+Ā1VšI2 +ʠ>6N@$ 82˰2JEDu\-*Hg037ێOQH{'"0|+Ez-4  vwBW$ ]g&:0E3N"-'EC: HG)v3@!ͷ ̀S=+$9S33]_p ~ KXkYrj6dR-fa]EʃRڎWD@$UL˙Si~n`,R2i)lyj>(>U|QIs _.2LJۀ5X7M*"*"´i9QWt"0\)HVuC,4ŚֿzO|LrZ [fFh DF`|8Ύլ)w{p3Gs\nW;--_[1;ETDa9!H`XLp&Akvw;-ˉ"*" npE1+6``003yDǖktd15/ z r -X >@oЃ{U1TZ`p(v |);Lo,zݰ膡;3_9@g ;-zZʄ;!rŽz>B84O}pX-7\ֱSOU.;L" AqY0IENDB`onionshare-onionshare-26fcdc5/desktop/onionshare/settings_parent_tab.py000066400000000000000000000043661521174352300267630ustar00rootroot00000000000000from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.mode_settings import ModeSettings from . import strings from .tab import Tab from .threads import EventHandlerThread from .gui_common import GuiCommon from .tor_settings_tab import TorSettingsTab from .settings_tab import SettingsTab from .connection_tab import AutoConnectTab class SettingsParentTab(QtWidgets.QTabWidget): """ The settings tab widget containing the tor settings and app settings subtabs """ bring_to_front = QtCore.Signal() close_this_tab = QtCore.Signal() def __init__( self, common, tab_id, parent=None, active_tab="general", from_autoconnect=False ): super(SettingsParentTab, self).__init__() self.parent = parent self.common = common self.common.log("SettingsParentTab", "__init__") # Keep track of tabs in a dictionary that maps tab_id to tab. # Each tab has a unique, auto-incremented id (tab_id). This is different than the # tab's index, which changes as tabs are re-arranged. self.tabs = { "general": 0, "tor": 1, } self.tab_id = tab_id self.current_tab_id = self.tabs[active_tab] # Use a custom tab bar tab_bar = TabBar(self.common) self.setTabBar(tab_bar) settings_tab = SettingsTab(self.common, self.tabs["general"], parent=self) self.tor_settings_tab = TorSettingsTab( self.common, self.tabs["tor"], self.parent.are_tabs_active(), self.parent.status_bar, parent=self, from_autoconnect=from_autoconnect, ) self.addTab(settings_tab, strings._("gui_general_settings_window_title")) self.addTab(self.tor_settings_tab, strings._("gui_tor_settings_window_title")) # Set up the tab widget self.setMovable(False) self.setTabsClosable(False) self.setUsesScrollButtons(False) self.setCurrentIndex(self.current_tab_id) class TabBar(QtWidgets.QTabBar): """ A custom tab bar """ move_new_tab_button = QtCore.Signal() def __init__(self, common): super(TabBar, self).__init__() self.setStyleSheet(common.gui.css["settings_subtab_bar"]) onionshare-onionshare-26fcdc5/desktop/onionshare/settings_tab.py000066400000000000000000000322341521174352300254050ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from PySide6 import QtCore, QtWidgets, QtGui import platform import datetime from onionshare_cli.settings import Settings from . import strings from .widgets import Alert from .update_checker import UpdateThread class SettingsTab(QtWidgets.QWidget): """ Settings dialog. """ def __init__(self, common, tab_id, parent=None): super(SettingsTab, self).__init__() self.common = common self.common.log("SettingsTab", "__init__") self.system = platform.system() self.tab_id = tab_id self.parent = parent # Automatic updates options # Autoupdate self.autoupdate_checkbox = QtWidgets.QCheckBox() self.autoupdate_checkbox.setCheckState(QtCore.Qt.Unchecked) self.autoupdate_checkbox.setText(strings._("gui_settings_autoupdate_option")) # Last update time self.autoupdate_timestamp = QtWidgets.QLabel() # Check for updates button self.check_for_updates_button = QtWidgets.QPushButton( strings._("gui_settings_autoupdate_check_button") ) self.check_for_updates_button.clicked.connect(self.check_for_updates) # We can't check for updates if not connected to Tor if not self.common.gui.onion.connected_to_tor: self.check_for_updates_button.setEnabled(False) # Autoupdate options layout autoupdate_group_layout = QtWidgets.QVBoxLayout() autoupdate_group_layout.addWidget(self.autoupdate_checkbox) autoupdate_group_layout.addWidget(self.autoupdate_timestamp) autoupdate_group_layout.addWidget(self.check_for_updates_button) autoupdate_group = QtWidgets.QGroupBox( strings._("gui_settings_autoupdate_label") ) autoupdate_group.setLayout(autoupdate_group_layout) autoupdate_layout = QtWidgets.QHBoxLayout() autoupdate_layout.addStretch() autoupdate_layout.addWidget(autoupdate_group) autoupdate_layout.addStretch() autoupdate_widget = QtWidgets.QWidget() autoupdate_widget.setLayout(autoupdate_layout) # Autoupdate is only available for Windows and Mac (Linux updates using package manager) if self.system != "Windows" and self.system != "Darwin": autoupdate_widget.hide() # Language settings language_label = QtWidgets.QLabel(strings._("gui_settings_language_label")) self.language_combobox = QtWidgets.QComboBox() # Populate the dropdown with all of OnionShare's available languages language_names_to_locales = { v: k for k, v in self.common.settings.available_locales.items() } language_names = list(language_names_to_locales) language_names.sort() for language_name in language_names: locale = language_names_to_locales[language_name] self.language_combobox.addItem(language_name, locale) language_layout = QtWidgets.QHBoxLayout() language_layout.addStretch() language_layout.addWidget(language_label) language_layout.addWidget(self.language_combobox) language_layout.addStretch() # Theme Settings theme_label = QtWidgets.QLabel(strings._("gui_settings_theme_label")) self.theme_combobox = QtWidgets.QComboBox() theme_choices = [ strings._("gui_settings_theme_auto"), strings._("gui_settings_theme_light"), strings._("gui_settings_theme_dark"), ] self.theme_combobox.addItems(theme_choices) theme_layout = QtWidgets.QHBoxLayout() theme_layout.addStretch() theme_layout.addWidget(theme_label) theme_layout.addWidget(self.theme_combobox) theme_layout.addStretch() # Version and help version_label = QtWidgets.QLabel( strings._("gui_settings_version_label").format(self.common.version) ) version_label.setAlignment(QtCore.Qt.AlignHCenter) help_label = QtWidgets.QLabel(strings._("gui_settings_help_label")) help_label.setAlignment(QtCore.Qt.AlignHCenter) help_label.setTextInteractionFlags(QtCore.Qt.TextBrowserInteraction) help_label.setOpenExternalLinks(True) license_label = QtWidgets.QLabel(strings._("gui_settings_license_label")) license_label.setAlignment(QtCore.Qt.AlignHCenter) license_label.setTextInteractionFlags(QtCore.Qt.TextBrowserInteraction) license_label.setOpenExternalLinks(True) # Buttons self.save_button = QtWidgets.QPushButton(strings._("gui_settings_button_save")) self.save_button.clicked.connect(self.save_clicked) buttons_layout = QtWidgets.QHBoxLayout() buttons_layout.addStretch() buttons_layout.addWidget(self.save_button) buttons_layout.addStretch() # Layout layout = QtWidgets.QVBoxLayout() layout.addStretch() layout.addWidget(autoupdate_widget) if autoupdate_widget.isVisible(): layout.addSpacing(20) layout.addLayout(language_layout) layout.addLayout(theme_layout) layout.addSpacing(20) layout.addWidget(version_label) layout.addWidget(help_label) layout.addSpacing(20) layout.addWidget(license_label) layout.addSpacing(20) layout.addLayout(buttons_layout) layout.addStretch() self.setLayout(layout) self.reload_settings() if self.common.gui.onion.connected_to_tor: self.tor_is_connected() else: self.tor_is_disconnected() def reload_settings(self): # Load settings, and fill them in self.old_settings = Settings(self.common) self.old_settings.load() use_autoupdate = self.old_settings.get("use_autoupdate") if use_autoupdate: self.autoupdate_checkbox.setCheckState(QtCore.Qt.Checked) else: self.autoupdate_checkbox.setCheckState(QtCore.Qt.Unchecked) autoupdate_timestamp = self.old_settings.get("autoupdate_timestamp") self._update_autoupdate_timestamp(autoupdate_timestamp) locale = self.old_settings.get("locale") locale_index = self.language_combobox.findData(locale) self.language_combobox.setCurrentIndex(locale_index) theme_choice = self.old_settings.get("theme") self.theme_combobox.setCurrentIndex(theme_choice) def check_for_updates(self): """ Check for Updates button clicked. Manually force an update check. """ self.common.log("SettingsTab", "check_for_updates") # Disable buttons self._disable_buttons() self.common.gui.qtapp.processEvents() def update_timestamp(): # Update the last checked label settings = Settings(self.common) settings.load() autoupdate_timestamp = settings.get("autoupdate_timestamp") self._update_autoupdate_timestamp(autoupdate_timestamp) def close_forced_update_thread(): forced_update_thread.quit() # Enable buttons self._enable_buttons() # Update timestamp update_timestamp() # Check for updates def update_available(update_url, installed_version, latest_version): Alert( self.common, strings._("update_available").format( update_url, installed_version, latest_version ), ) close_forced_update_thread() def update_not_available(): Alert(self.common, strings._("update_not_available")) close_forced_update_thread() def update_error(): Alert( self.common, strings._("update_error_check_error"), QtWidgets.QMessageBox.Warning, ) close_forced_update_thread() def update_invalid_version(latest_version): Alert( self.common, strings._("update_error_invalid_latest_version").format(latest_version), QtWidgets.QMessageBox.Warning, ) close_forced_update_thread() forced_update_thread = UpdateThread( self.common, self.common.gui.onion, force=True ) forced_update_thread.update_available.connect(update_available) forced_update_thread.update_not_available.connect(update_not_available) forced_update_thread.update_error.connect(update_error) forced_update_thread.update_invalid_version.connect(update_invalid_version) forced_update_thread.start() def save_clicked(self): """ Save button clicked. Save current settings to disk. """ self.common.log("SettingsTab", "save_clicked") def changed(s1, s2, keys): """ Compare the Settings objects s1 and s2 and return true if any values have changed for the given keys. """ for key in keys: if s1.get(key) != s2.get(key): return True return False settings = self.settings_from_fields() if settings: # If language changed, inform user they need to restart OnionShare if changed(settings, self.old_settings, ["locale"]): # Look up error message in different locale new_locale = settings.get("locale") if ( new_locale in strings.translations and "gui_settings_language_changed_notice" in strings.translations[new_locale] ): notice = strings.translations[new_locale][ "gui_settings_language_changed_notice" ] else: notice = strings._("gui_settings_language_changed_notice") Alert(self.common, notice, QtWidgets.QMessageBox.Information) # If color mode changed, inform user they need to restart OnionShare if changed(settings, self.old_settings, ["theme"]): notice = strings._("gui_color_mode_changed_notice") Alert(self.common, notice, QtWidgets.QMessageBox.Information) # Save the new settings settings.save() self.parent.close_this_tab.emit() def help_clicked(self): """ Help button clicked. """ self.common.log("SettingsTab", "help_clicked") SettingsTab.open_help() @staticmethod def open_help(): help_url = "https://docs.onionshare.org/" QtGui.QDesktopServices.openUrl(QtCore.QUrl(help_url)) def settings_from_fields(self): """ Return a Settings object that's full of values from the settings dialog. """ self.common.log("SettingsTab", "settings_from_fields") settings = Settings(self.common) settings.load() # To get the last update timestamp # Theme theme_index = self.theme_combobox.currentIndex() settings.set("theme", theme_index) # Language locale_index = self.language_combobox.currentIndex() locale = self.language_combobox.itemData(locale_index) settings.set("locale", locale) return settings def _update_autoupdate_timestamp(self, autoupdate_timestamp): self.common.log("SettingsTab", "_update_autoupdate_timestamp") if autoupdate_timestamp: dt = datetime.datetime.fromtimestamp(autoupdate_timestamp) last_checked = dt.strftime("%B %d, %Y %H:%M") else: last_checked = strings._("gui_settings_autoupdate_timestamp_never") self.autoupdate_timestamp.setText( strings._("gui_settings_autoupdate_timestamp").format(last_checked) ) def _disable_buttons(self): self.common.log("SettingsTab", "_disable_buttons") self.check_for_updates_button.setEnabled(False) self.save_button.setEnabled(False) def _enable_buttons(self): self.common.log("SettingsTab", "_enable_buttons") # We can't check for updates if we're still not connected to Tor if not self.common.gui.onion.connected_to_tor: self.check_for_updates_button.setEnabled(False) else: self.check_for_updates_button.setEnabled(True) self.save_button.setEnabled(True) def tor_is_connected(self): self.check_for_updates_button.show() def tor_is_disconnected(self): self.check_for_updates_button.hide() onionshare-onionshare-26fcdc5/desktop/onionshare/strings.py000066400000000000000000000034261521174352300244110ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import json import os strings = {} translations = {} def load_strings(common, locale_dir): """ Loads translated strings and fallback to English if the translation does not exist. """ global strings, translations # Load all translations translations = {} for locale in common.settings.available_locales: filename = os.path.join(locale_dir, f"{locale}.json") with open(filename, encoding="utf-8") as f: translations[locale] = json.load(f) # Build strings default_locale = "en" current_locale = common.settings.get("locale") strings = {} for s in translations[default_locale]: if ( current_locale in translations and s in translations[current_locale] and translations[current_locale][s] != "" ): strings[s] = translations[current_locale][s] else: strings[s] = translations[default_locale][s] def translated(k): """ Returns a translated string. """ return strings[k] _ = translated onionshare-onionshare-26fcdc5/desktop/onionshare/tab/000077500000000000000000000000001521174352300231075ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/tab/__init__.py000066400000000000000000000014011521174352300252140ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from .tab import Tab onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/000077500000000000000000000000001521174352300240335ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/__init__.py000066400000000000000000000504261521174352300261530ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from PySide6 import QtCore, QtWidgets from onionshare_cli.common import AutoStopTimer from .history import IndividualFileHistoryItem from .mode_settings_widget import ModeSettingsWidget from ..server_status import ServerStatus from ... import strings from ...threads import OnionThread, WebThread, AutoStartTimer from ...widgets import Alert, MinimumSizeWidget class Mode(QtWidgets.QWidget): """ The class that all modes inherit from """ start_server_finished = QtCore.Signal() stop_server_finished = QtCore.Signal() starting_server_step2 = QtCore.Signal() starting_server_step3 = QtCore.Signal() starting_server_error = QtCore.Signal(str) starting_server_early = QtCore.Signal() set_server_active = QtCore.Signal(bool) change_persistent = QtCore.Signal(int, bool) def __init__(self, tab): super(Mode, self).__init__() self.tab = tab self.settings = tab.settings self.common = tab.common self.qtapp = self.common.gui.qtapp self.app = tab.app self.status_bar = tab.status_bar self.server_status_label = tab.status_bar.server_status_label self.system_tray = tab.system_tray self.filenames = tab.filenames # The web object gets created in init() self.web = None # Threads start out as None self.onion_thread = None self.web_thread = None self.startup_thread = None # Mode settings widget self.mode_settings_widget = ModeSettingsWidget( self.common, self.tab, self.settings ) self.mode_settings_widget.change_persistent.connect(self.change_persistent) # Server status self.server_status = ServerStatus( self.common, self.qtapp, self.app, self.settings, self.mode_settings_widget, None, self.common.gui.local_only, ) self.server_status.server_started.connect(self.start_server) self.server_status.server_stopped.connect(self.stop_server) self.server_status.server_canceled.connect(self.cancel_server) self.start_server_finished.connect(self.server_status.start_server_finished) self.stop_server_finished.connect(self.server_status.stop_server_finished) self.starting_server_step2.connect(self.start_server_step2) self.starting_server_step3.connect(self.start_server_step3) self.starting_server_early.connect(self.start_server_early) self.starting_server_error.connect(self.start_server_error) # Primary action # Note: It's up to the downstream Mode to add this to its layout self.primary_action_layout = QtWidgets.QVBoxLayout() self.primary_action_layout.addWidget(self.mode_settings_widget) self.primary_action = QtWidgets.QWidget() self.primary_action.setLayout(self.primary_action_layout) # It's up to the downstream Mode to add stuff to self.content_layout # self.content_layout shows the actual content of the mode # self.tor_not_connected_layout is displayed when Tor isn't connected self.content_layout = QtWidgets.QVBoxLayout() self.content_widget = QtWidgets.QWidget() self.content_widget.setLayout(self.content_layout) tor_not_connected_label = QtWidgets.QLabel( strings._("mode_tor_not_connected_label") ) tor_not_connected_label.setAlignment(QtCore.Qt.AlignHCenter) tor_not_connected_label.setStyleSheet( self.common.gui.css["tor_not_connected_label"] ) self.tor_not_connected_layout = QtWidgets.QVBoxLayout() self.tor_not_connected_layout.addStretch() self.tor_not_connected_layout.addWidget(tor_not_connected_label) self.tor_not_connected_layout.addWidget(MinimumSizeWidget(700, 0)) self.tor_not_connected_layout.addStretch() self.tor_not_connected_widget = QtWidgets.QWidget() self.tor_not_connected_widget.setLayout(self.tor_not_connected_layout) self.wrapper_layout = QtWidgets.QVBoxLayout() self.wrapper_layout.addWidget(self.content_widget) self.wrapper_layout.addWidget(self.tor_not_connected_widget) self.setLayout(self.wrapper_layout) if self.common.gui.onion.connected_to_tor: self.tor_connection_started() else: self.tor_connection_stopped() def init(self): """ Add custom initialization here. """ pass def get_type(self): """ Returns the type of mode as a string (e.g. "share", "receive", etc.) """ pass def human_friendly_time(self, secs): """ Returns a human-friendly time delta from given seconds. """ days = secs // 86400 hours = (secs - days * 86400) // 3600 minutes = (secs - days * 86400 - hours * 3600) // 60 seconds = secs - days * 86400 - hours * 3600 - minutes * 60 if not seconds: seconds = "0" result = ( (f"{days}{strings._('days_first_letter')}, " if days else "") + (f"{hours}{strings._('hours_first_letter')}, " if hours else "") + (f"{minutes}{strings._('minutes_first_letter')}, " if minutes else "") + f"{seconds}{strings._('seconds_first_letter')}" ) return result def timer_callback(self): """ This method is called regularly on a timer. """ # If this is a scheduled share, display the countdown til the share starts if self.server_status.status == ServerStatus.STATUS_WORKING: if self.settings.get("general", "autostart_timer"): now = QtCore.QDateTime.currentDateTime() if self.server_status.local_only: seconds_remaining = now.secsTo( self.mode_settings_widget.autostart_timer_widget.dateTime() ) else: seconds_remaining = now.secsTo( self.server_status.autostart_timer_datetime.replace( second=0, microsecond=0 ) ) # Update the server button if seconds_remaining > 0: self.server_status.server_button.setText( strings._("gui_waiting_to_start").format( self.human_friendly_time(seconds_remaining) ) ) else: if self.common.platform == "Windows" or self.settings.get( "general", "autostart_timer" ): self.server_status.server_button.setText( strings._("gui_please_wait") ) else: self.server_status.server_button.setText( strings._("gui_please_wait_no_button") ) # If the auto-stop timer has stopped, stop the server if self.server_status.status == ServerStatus.STATUS_STARTED: if self.app.autostop_timer_thread and self.settings.get( "general", "autostop_timer" ): if self.autostop_timer_datetime_delta > 0: now = QtCore.QDateTime.currentDateTime() seconds_remaining = now.secsTo( self.server_status.autostop_timer_datetime ) # Update the server button server_button_text = self.get_stop_server_autostop_timer_text() self.server_status.server_button.setText( server_button_text.format( self.human_friendly_time(seconds_remaining) ) ) self.status_bar.clearMessage() if not self.app.autostop_timer_thread.is_alive(): self.autostop_timer_finished_should_stop_server() def timer_callback_custom(self): """ Add custom timer code. """ pass def get_stop_server_autostop_timer_text(self): """ Return the string to put on the stop server button, if there's an auto-stop timer """ pass def autostop_timer_finished_should_stop_server(self): """ The auto-stop timer expired, should we stop the server? Returns a bool """ pass def start_server(self): """ Start the onionshare server. This uses multiple threads to start the Tor onion server and the web app. """ self.common.log("Mode", "start_server") self.start_server_custom() self.set_server_active.emit(True) # Clear the status bar self.status_bar.clearMessage() self.server_status_label.setText("") # Hide the mode settings self.mode_settings_widget.hide() # Ensure we always get a new random port each time we might launch an OnionThread self.app.port = None # Start the onion thread. If this share was scheduled for a future date, # the OnionThread will start and exit 'early' to obtain the port, password # and onion address, but it will not start the WebThread yet. if self.settings.get("general", "autostart_timer"): self.start_onion_thread(obtain_onion_early=True) self.common.log("Mode", "start_server", "Starting auto-start timer") self.startup_thread = AutoStartTimer(self) # Once the timer has finished, start the real share, with a WebThread self.startup_thread.success.connect(self.start_scheduled_service) self.startup_thread.error.connect(self.start_server_error) self.startup_thread.canceled = False self.startup_thread.start() else: self.start_onion_thread() def start_onion_thread(self, obtain_onion_early=False): # If we tried to start with Client Auth and our Tor is too old to support it, # bail out early if ( not self.server_status.local_only and not self.app.onion.supports_stealth and not self.settings.get("general", "public") ): self.stop_server() self.start_server_error(strings._("gui_server_doesnt_support_stealth")) else: self.common.log("Mode", "start_server", "Starting an onion thread") self.obtain_onion_early = obtain_onion_early self.onion_thread = OnionThread(self) self.onion_thread.success.connect(self.starting_server_step2.emit) self.onion_thread.success_early.connect(self.starting_server_early.emit) self.onion_thread.error.connect(self.starting_server_error.emit) self.web_thread = WebThread(self) self.web_thread.error.connect(self.starting_server_error.emit) self.onion_thread.start() def start_scheduled_service(self, obtain_onion_early=False): # We start a new OnionThread with the saved scheduled key from settings self.common.settings.load() self.obtain_onion_early = obtain_onion_early self.common.log("Mode", "start_server", "Starting a scheduled onion thread") self.onion_thread = OnionThread(self) self.onion_thread.success.connect(self.starting_server_step2.emit) self.onion_thread.error.connect(self.starting_server_error.emit) self.onion_thread.start() def start_server_custom(self): """ Add custom initialization here. """ pass def start_server_early(self): """ An 'early' start of an onion service in order to obtain the onion address for a scheduled start. Shows the onion address in the UI in advance of actually starting the share. """ self.server_status.show_url() def start_server_step2(self): """ Step 2 in starting the onionshare server. """ self.common.log("Mode", "start_server_step2") self.start_server_step2_custom() # Nothing to do here. # start_server_step2_custom has call these to move on: # self.starting_server_step3.emit() # self.start_server_finished.emit() def start_server_step2_custom(self): """ Add custom initialization here. """ pass def start_server_step3(self): """ Step 3 in starting the onionshare server. """ self.common.log("Mode", "start_server_step3") self.start_server_step3_custom() if self.settings.get("general", "autostop_timer"): # Convert the date value to seconds between now and then now = QtCore.QDateTime.currentDateTime() self.autostop_timer_datetime_delta = now.secsTo( self.server_status.autostop_timer_datetime ) # Start the auto-stop timer if self.autostop_timer_datetime_delta > 0: self.app.autostop_timer_thread = AutoStopTimer( self.common, self.autostop_timer_datetime_delta ) self.app.autostop_timer_thread.start() # The auto-stop timer has actually already passed since the user clicked Start. Probably the Onion service took too long to start. else: self.stop_server() self.start_server_error( strings._("gui_server_started_after_autostop_timer") ) def start_server_step3_custom(self): """ Add custom initialization here. """ pass def start_server_error(self, error): """ If there's an error when trying to start the onion service """ self.common.log("Mode", "start_server_error") Alert(self.common, error, QtWidgets.QMessageBox.Warning) self.set_server_active.emit(False) self.server_status.stop_server() self.status_bar.clearMessage() self.start_server_error_custom() def start_server_error_custom(self): """ Add custom initialization here. """ pass def cancel_server(self): """ Cancel the server while it is preparing to start """ self.cancel_server_custom() if self.startup_thread: self.common.log("Mode", "cancel_server: quitting startup thread") self.startup_thread.canceled = True self.app.onion.scheduled_key = None self.app.onion.scheduled_auth_cookie = None self.startup_thread.quit() # Canceling only works in Windows # https://github.com/onionshare/onionshare/issues/1371 if self.common.platform == "Windows": if self.onion_thread: self.common.log("Mode", "cancel_server: quitting onion thread") self.onion_thread.terminate() self.onion_thread.wait() if self.web_thread: self.common.log("Mode", "cancel_server: quitting web thread") self.web_thread.terminate() self.web_thread.wait() self.stop_server() def cancel_server_custom(self): """ Add custom initialization here. """ pass def stop_server(self): """ Stop the onionshare server. """ self.common.log("Mode", "stop_server") if self.server_status.status != ServerStatus.STATUS_STOPPED: try: self.web.stop(self.app.port) except Exception: # Probably we had no port to begin with (Onion service didn't start) pass self.web.cleanup() self.stop_server_custom() self.set_server_active.emit(False) self.stop_server_finished.emit() # Show the mode settings self.mode_settings_widget.show() def stop_server_custom(self): """ Add custom initialization here. """ pass def handle_tor_broke(self): """ Handle connection from Tor breaking. """ if self.server_status.status != ServerStatus.STATUS_STOPPED: self.server_status.stop_server() self.handle_tor_broke_custom() def handle_tor_broke_custom(self): """ Add custom initialization here. """ pass # Handle web server events def handle_request_load(self, event): """ Handle REQUEST_LOAD event. """ pass def handle_request_started(self, event): """ Handle REQUEST_STARTED event. """ pass def handle_request_progress(self, event): """ Handle REQUEST_PROGRESS event. """ pass def handle_request_canceled(self, event): """ Handle REQUEST_CANCELED event. """ pass def handle_request_upload_includes_message(self, event): """ Handle REQUEST_UPLOAD_INCLUDES_MESSAGE event. """ pass def handle_request_upload_file_renamed(self, event): """ Handle REQUEST_UPLOAD_FILE_RENAMED event. """ pass def handle_request_upload_message(self, event): """ Handle REQUEST_UPLOAD_MESSAGE event. """ pass def handle_request_upload_set_dir(self, event): """ Handle REQUEST_UPLOAD_SET_DIR event. """ pass def handle_request_upload_finished(self, event): """ Handle REQUEST_UPLOAD_FINISHED event. """ pass def handle_request_upload_canceled(self, event): """ Handle REQUEST_UPLOAD_CANCELED event. """ pass def handle_request_individual_file_started(self, event): """ Handle REQUEST_INDVIDIDUAL_FILES_STARTED event. Used in both Share and Website modes, so implemented here. """ self.toggle_history.update_indicator(True) self.history.requests_count += 1 self.history.update_requests() item = IndividualFileHistoryItem(self.common, event["data"], event["path"]) self.history.add(event["data"]["id"], item) def handle_request_individual_file_progress(self, event): """ Handle REQUEST_INDVIDIDUAL_FILES_PROGRESS event. Used in both Share and Website modes, so implemented here. """ self.history.update(event["data"]["id"], event["data"]["bytes"]) if self.server_status.status == self.server_status.STATUS_STOPPED: self.history.cancel(event["data"]["id"]) def handle_request_individual_file_canceled(self, event): """ Handle REQUEST_INDVIDIDUAL_FILES_CANCELED event. Used in both Share and Website modes, so implemented here. """ self.history.cancel(event["data"]["id"]) def tor_connection_started(self): """ This is called on every Mode when Tor is connected """ self.content_widget.show() self.tor_not_connected_widget.hide() self.primary_action.show() if not self.tab.timer.isActive(): self.tab.timer.start(500) if self.settings.get("persistent", "enabled") and self.settings.get("persistent", "autostart_on_launch"): self.server_status.start_server() def tor_connection_stopped(self): """ This is called on every Mode when Tor is disconnected """ if self.common.gui.local_only: self.tor_connection_started() return self.content_widget.hide() self.tor_not_connected_widget.show() onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/chat_mode/000077500000000000000000000000001521174352300257565ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/chat_mode/__init__.py000066400000000000000000000122601521174352300300700ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.web import Web from .. import Mode from .... import strings from ....widgets import MinimumSizeWidget from ....gui_common import GuiCommon class ChatMode(Mode): """ Parts of the main window UI for sharing files. """ success = QtCore.Signal() error = QtCore.Signal(str) def init(self): """ Custom initialization for ChatMode. """ # Create the Web object self.web = Web(self.common, True, self.settings, "chat") # Chat image self.image_label = QtWidgets.QLabel() self.image_label.setPixmap( QtGui.QPixmap.fromImage( QtGui.QImage( GuiCommon.get_resource_path( "images/{}_mode_chat.png".format(self.common.gui.color_mode) ) ) ) ) self.image_label.setFixedSize(300, 300) image_layout = QtWidgets.QVBoxLayout() image_layout.addStretch() image_layout.addWidget(self.image_label) image_layout.addStretch() self.image = QtWidgets.QWidget() self.image.setLayout(image_layout) # Set title placeholder self.mode_settings_widget.title_lineedit.setPlaceholderText( strings._("gui_tab_name_chat") ) # Server status self.server_status.set_mode("chat") self.server_status.server_started_finished.connect(self.update_primary_action) self.server_status.server_stopped.connect(self.update_primary_action) self.server_status.server_canceled.connect(self.update_primary_action) # Tell server_status about web, then update self.server_status.web = self.web self.server_status.update() # Header header_label = QtWidgets.QLabel(strings._("gui_new_tab_chat_button")) header_label.setStyleSheet(self.common.gui.css["mode_header_label"]) # Chat mode explainer chat_mode_explainer = QtWidgets.QLabel(strings._("gui_chat_mode_explainer")) chat_mode_explainer.setMinimumHeight(80) chat_mode_explainer.setWordWrap(True) # Top bar top_bar_layout = QtWidgets.QHBoxLayout() # Add space at the top, same height as the toggle history bar in other modes top_bar_layout.addWidget(MinimumSizeWidget(0, 30)) # Main layout self.main_layout = QtWidgets.QVBoxLayout() self.main_layout.addLayout(top_bar_layout) self.main_layout.addWidget(header_label) self.main_layout.addWidget(chat_mode_explainer) self.main_layout.addWidget(self.primary_action, stretch=1) self.main_layout.addWidget(self.server_status) self.main_layout.addWidget(MinimumSizeWidget(700, 0)) # Column layout self.column_layout = QtWidgets.QHBoxLayout() self.column_layout.addWidget(self.image) self.column_layout.addLayout(self.main_layout) # Content layout self.content_layout.addLayout(self.column_layout) def get_type(self): """ Returns the type of mode as a string (e.g. "share", "receive", etc.) """ return "chat" def get_stop_server_autostop_timer_text(self): """ Return the string to put on the stop server button, if there's an auto-stop timer """ return strings._("gui_share_stop_server_autostop_timer") def autostop_timer_finished_should_stop_server(self): """ The auto-stop timer expired, should we stop the server? Returns a bool """ self.server_status.stop_server() self.server_status_label.setText(strings._("close_on_autostop_timer")) return True def start_server_custom(self): """ Starting the server. """ # Reset web counters self.web.chat_mode.cur_history_id = 0 def start_server_step2_custom(self): """ Step 2 in starting the server. Zipping up files. """ # Continue self.starting_server_step3.emit() self.start_server_finished.emit() def cancel_server_custom(self): """ Log that the server has been cancelled """ self.common.log("ChatMode", "cancel_server") def handle_tor_broke_custom(self): """ Connection to Tor broke. """ self.primary_action.hide() def update_primary_action(self): self.common.log("ChatMode", "update_primary_action") onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/file_selection.py000066400000000000000000000440011521174352300273700ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os from PySide6 import QtCore, QtWidgets, QtGui from ... import strings from ...widgets import Alert, AddFileDialog from ...gui_common import GuiCommon class DropHereWidget(QtWidgets.QWidget): """ When there are no files or folders in the FileList yet, display the 'drop files here' message and graphic. """ def __init__(self, common, image_filename, header_text, w, h, parent): super(DropHereWidget, self).__init__(parent) self.common = common self.setAcceptDrops(True) self.image_label = QtWidgets.QLabel(parent=self) self.image_label.setPixmap( QtGui.QPixmap.fromImage( QtGui.QImage(GuiCommon.get_resource_path(image_filename)) ) ) self.image_label.setAlignment(QtCore.Qt.AlignCenter) self.image_label.show() self.header_label = QtWidgets.QLabel(parent=self) self.header_label.setText(header_text) self.header_label.setStyleSheet( self.common.gui.css["share_file_selection_drop_here_header_label"] ) self.header_label.setAlignment(QtCore.Qt.AlignCenter) self.header_label.show() self.text_label = QtWidgets.QLabel(parent=self) self.text_label.setText(strings._("gui_drag_and_drop")) self.text_label.setStyleSheet( self.common.gui.css["share_file_selection_drop_here_label"] ) self.text_label.setAlignment(QtCore.Qt.AlignCenter) self.text_label.show() self.resize(w, h) self.hide() def dragEnterEvent(self, event): self.hide() event.accept() def resize(self, w, h): self.setGeometry(0, 0, w, h) self.image_label.setGeometry(0, 0, w, h - 100) self.header_label.setGeometry(0, 290, w, h - 360) self.text_label.setGeometry(0, 340, w, h - 380) class DropCountLabel(QtWidgets.QLabel): """ While dragging files over the FileList, this counter displays the number of files you're dragging. """ def __init__(self, common, parent): self.parent = parent super(DropCountLabel, self).__init__(parent=parent) self.common = common self.setAcceptDrops(True) self.setAlignment(QtCore.Qt.AlignCenter) self.setText(strings._("gui_drag_and_drop")) self.setStyleSheet(self.common.gui.css["share_file_selection_drop_count_label"]) self.hide() def dragEnterEvent(self, event): self.hide() event.accept() class FileList(QtWidgets.QListWidget): """ The list of files and folders in the GUI. """ files_dropped = QtCore.Signal() files_updated = QtCore.Signal() def __init__(self, common, background_image_filename, header_text, parent=None): super(FileList, self).__init__(parent) self.common = common self.setAcceptDrops(True) self.setIconSize(QtCore.QSize(32, 32)) self.setSortingEnabled(True) self.setMinimumHeight(160) self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) self.drop_here = DropHereWidget( self.common, background_image_filename, header_text, self.width(), self.height(), self, ) self.drop_count = DropCountLabel(self.common, self) self.resizeEvent(None) self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) def update(self): """ Update the GUI elements based on the current state. """ # file list should have a background image if empty if self.count() == 0: self.drop_here.show() else: self.drop_here.hide() def server_started(self): """ Update the GUI when the server starts, by hiding delete buttons. """ self.setAcceptDrops(False) self.setCurrentItem(None) self.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) for index in range(self.count()): self.item(index).item_button.hide() def server_stopped(self): """ Update the GUI when the server stops, by showing delete buttons. """ self.setAcceptDrops(True) self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) for index in range(self.count()): self.item(index).item_button.show() def resizeEvent(self, event): """ When the widget is resized, resize the drop files image and text. """ self.drop_here.resize(self.width(), self.height()) if self.count() > 0: # Add and delete an empty item, to force all items to get redrawn # This is ugly, but the only way I could figure out how to proceed item = QtWidgets.QListWidgetItem("fake item") self.addItem(item) self.takeItem(self.row(item)) self.update() # Extend any filenames that were truncated to fit the window # We use 200 as a rough guess at how wide the 'file size + delete button' widget is # and extend based on the overall width minus that amount. for index in range(self.count()): metrics = QtGui.QFontMetrics(self.item(index).font()) elided = metrics.elidedText( self.item(index).basename, QtCore.Qt.ElideRight, self.width() - 200 ) self.item(index).setText(elided) def dragEnterEvent(self, event): """ dragEnterEvent for dragging files and directories into the widget. """ # Drag and drop doesn't work in Flatpak, because of the sandbox if self.common.is_flatpak(): Alert(self.common, strings._("gui_dragdrop_sandbox_flatpak").format()) event.ignore() return if event.mimeData().hasUrls: self.setStyleSheet(self.common.gui.css["share_file_list_drag_enter"]) count = len(event.mimeData().urls()) self.drop_count.setText(f"+{count}") size_hint = self.drop_count.sizeHint() self.drop_count.setGeometry( self.width() - size_hint.width() - 30, self.height() - size_hint.height() - 10, size_hint.width(), size_hint.height(), ) self.drop_count.show() event.accept() else: event.ignore() def dragLeaveEvent(self, event): """ dragLeaveEvent for dragging files and directories into the widget. """ # Drag and drop doesn't work in Flatpak, because of the sandbox if self.common.is_flatpak(): event.ignore() return self.setStyleSheet(self.common.gui.css["share_file_list_drag_leave"]) self.drop_count.hide() event.accept() self.update() def dragMoveEvent(self, event): """ dragMoveEvent for dragging files and directories into the widget. """ # Drag and drop doesn't work in Flatpak, because of the sandbox if self.common.is_flatpak(): event.ignore() return if event.mimeData().hasUrls: event.setDropAction(QtCore.Qt.CopyAction) event.accept() else: event.ignore() def dropEvent(self, event): """ dropEvent for dragging files and directories into the widget. """ # Drag and drop doesn't work in Flatpak, because of the sandbox if self.common.is_flatpak(): event.ignore() return if event.mimeData().hasUrls: event.setDropAction(QtCore.Qt.CopyAction) event.accept() for url in event.mimeData().urls(): filename = str(url.toLocalFile()) self.add_file(filename) else: event.ignore() self.setStyleSheet(self.common.gui.css["share_file_list_drag_leave"]) self.drop_count.hide() self.files_dropped.emit() def add_file(self, filename): """ Add a file or directory to this widget. """ filenames = [] for index in range(self.count()): filenames.append(self.item(index).filename) if filename not in filenames: if not os.access(filename, os.R_OK): Alert(self.common, strings._("not_a_readable_file").format(filename)) return fileinfo = QtCore.QFileInfo(filename) ip = QtWidgets.QFileIconProvider() icon = ip.icon(fileinfo) if os.path.isfile(filename): size_bytes = fileinfo.size() size_readable = self.common.human_readable_filesize(size_bytes) else: size_bytes = self.common.dir_size(filename) size_readable = self.common.human_readable_filesize(size_bytes) # Create a new item item = QtWidgets.QListWidgetItem() item.setIcon(icon) item.size_bytes = size_bytes # Item's filename attribute and size labels item.filename = filename item_size = QtWidgets.QLabel(size_readable) item_size.setStyleSheet(self.common.gui.css["share_file_list_item_size"]) item.basename = os.path.basename(filename.rstrip("/")) # Use the basename as the method with which to sort the list metrics = QtGui.QFontMetrics(item.font()) elided = metrics.elidedText( item.basename, QtCore.Qt.ElideRight, self.sizeHint().width() ) item.setData(QtCore.Qt.DisplayRole, elided) # Item's delete button def delete_item(): itemrow = self.row(item) self.takeItem(itemrow) self.files_updated.emit() item.item_button = QtWidgets.QPushButton() item.item_button.setDefault(False) item.item_button.setFlat(True) item.item_button.setIcon( QtGui.QIcon(GuiCommon.get_resource_path("images/file_delete.png")) ) item.item_button.clicked.connect(delete_item) item.item_button.setSizePolicy( QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed ) # Item info widget, with a white background item_info_layout = QtWidgets.QHBoxLayout() item_info_layout.setContentsMargins(0, 0, 0, 0) item_info_layout.addWidget(item_size) item_info_layout.addWidget(item.item_button) item_info = QtWidgets.QWidget() item_info.setObjectName("item-info") item_info.setLayout(item_info_layout) # Create the item's widget and layouts item_hlayout = QtWidgets.QHBoxLayout() item_hlayout.addStretch() item_hlayout.addWidget(item_info) widget = QtWidgets.QWidget() widget.setLayout(item_hlayout) item.setSizeHint(widget.sizeHint()) self.addItem(item) self.setItemWidget(item, widget) self.files_updated.emit() class FileSelection(QtWidgets.QVBoxLayout): """ The list of files and folders in the GUI, as well as buttons to add and delete the files and folders. """ def __init__(self, common, background_image_filename, header_text, parent): super(FileSelection, self).__init__() self.common = common self.parent = parent self.server_on = False # File list self.file_list = FileList(self.common, background_image_filename, header_text) self.file_list.itemSelectionChanged.connect(self.update) self.file_list.files_dropped.connect(self.update) self.file_list.files_updated.connect(self.update) # Sandboxes (for masOS, Flatpak, etc.) need separate add files and folders buttons, in # order to use native file selection dialogs if self.common.platform == "Darwin" or self.common.is_flatpak(): self.sandbox = True else: self.sandbox = False # Buttons if self.sandbox: # The macOS sandbox makes it so the Mac version needs separate add files # and folders buttons, in order to use native file selection dialogs self.add_files_button = QtWidgets.QPushButton(strings._("gui_add_files")) self.add_files_button.clicked.connect(self.add_files) self.add_folder_button = QtWidgets.QPushButton(strings._("gui_add_folder")) self.add_folder_button.clicked.connect(self.add_folder) else: self.add_button = QtWidgets.QPushButton(strings._("gui_add")) self.add_button.clicked.connect(self.add) self.remove_button = QtWidgets.QPushButton(strings._("gui_remove")) self.remove_button.clicked.connect(self.delete) button_layout = QtWidgets.QHBoxLayout() button_layout.addStretch() if self.sandbox: button_layout.addWidget(self.add_files_button) button_layout.addWidget(self.add_folder_button) else: button_layout.addWidget(self.add_button) button_layout.addWidget(self.remove_button) # Add the widgets self.addWidget(self.file_list) self.addLayout(button_layout) self.update() def update(self): """ Update the GUI elements based on the current state. """ # All buttons should be hidden if the server is on if self.server_on: if self.sandbox: self.add_files_button.hide() self.add_folder_button.hide() else: self.add_button.hide() self.remove_button.hide() else: if self.sandbox: self.add_files_button.show() self.add_folder_button.show() else: self.add_button.show() # Delete button should be hidden if item isn't selected if len(self.file_list.selectedItems()) == 0: self.remove_button.hide() else: self.remove_button.show() # Update the file list self.file_list.update() # Save the latest file list to mode settings self.save_filenames() def add(self): """ Add button clicked. """ file_dialog = AddFileDialog(self.common, caption=strings._("gui_choose_items")) if file_dialog.exec() == QtWidgets.QDialog.Accepted: self.common.log("FileSelection", "add", file_dialog.selectedFiles()) for filename in file_dialog.selectedFiles(): self.file_list.add_file(filename) self.file_list.setCurrentItem(None) self.update() def add_files(self): """ Add Files button clicked. """ files = QtWidgets.QFileDialog.getOpenFileNames( self.parent, caption=strings._("gui_choose_items") ) self.common.log("FileSelection", "add_files", files) filenames = files[0] for filename in filenames: self.file_list.add_file(filename) self.file_list.setCurrentItem(None) self.update() def add_folder(self): """ Add Folder button clicked. """ filename = QtWidgets.QFileDialog.getExistingDirectory( self.parent, caption=strings._("gui_choose_items"), options=QtWidgets.QFileDialog.ShowDirsOnly, ) self.common.log("FileSelection", "add_folder", filename) if filename: self.file_list.add_file(filename) self.file_list.setCurrentItem(None) self.update() def delete(self): """ Delete button clicked """ selected = self.file_list.selectedItems() for item in selected: itemrow = self.file_list.row(item) self.file_list.takeItem(itemrow) self.file_list.files_updated.emit() self.file_list.setCurrentItem(None) self.update() def server_started(self): """ Gets called when the server starts. """ self.server_on = True self.file_list.server_started() self.update() def server_stopped(self): """ Gets called when the server stops. """ self.server_on = False self.file_list.server_stopped() self.update() def get_num_files(self): """ Returns the total number of files and folders in the list. """ return len(range(self.file_list.count())) def get_filenames(self): """ Return the list of file and folder names """ filenames = [] for index in range(self.file_list.count()): filenames.append(self.file_list.item(index).filename) return filenames def save_filenames(self): """ Save the filenames to mode settings """ filenames = self.get_filenames() if self.parent.tab.mode == self.common.gui.MODE_SHARE: self.parent.settings.set("share", "filenames", filenames) elif self.parent.tab.mode == self.common.gui.MODE_WEBSITE: self.parent.settings.set("website", "filenames", filenames) def setFocus(self): """ Set the Qt app focus on the file selection box. """ self.file_list.setFocus() onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/history.py000066400000000000000000000754011521174352300261150ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import time import subprocess import os from datetime import datetime from PySide6 import QtCore, QtWidgets, QtGui from urllib.parse import unquote from ... import strings from ...widgets import Alert from ...gui_common import GuiCommon class HistoryItem(QtWidgets.QWidget): """ The base history item """ STATUS_STARTED = 0 STATUS_FINISHED = 1 STATUS_CANCELED = 2 def __init__(self): super(HistoryItem, self).__init__() def update(self): pass def cancel(self): pass def get_finished_label_text(self, started): """ When an item finishes, returns a string displaying the start/end datetime range. started is a datetime object. """ return self._get_label_text( "gui_all_modes_transfer_finished", "gui_all_modes_transfer_finished_range", started, ) def get_canceled_label_text(self, started): """ When an item is canceled, returns a string displaying the start/end datetime range. started is a datetime object. """ return self._get_label_text( "gui_all_modes_transfer_canceled", "gui_all_modes_transfer_canceled_range", started, ) def _get_label_text(self, string_name, string_range_name, started): """ Return a string that contains a date, or date range. """ ended = datetime.now() if ( started.year == ended.year and started.month == ended.month and started.day == ended.day ): if started.hour == ended.hour and started.minute == ended.minute: text = strings._(string_name).format(started.strftime("%b %d, %I:%M%p")) else: text = strings._(string_range_name).format( started.strftime("%b %d, %I:%M%p"), ended.strftime("%I:%M%p") ) else: text = strings._(string_range_name).format( started.strftime("%b %d, %I:%M%p"), ended.strftime("%b %d, %I:%M%p") ) return text class ShareHistoryItem(HistoryItem): """ Download history item, for share mode """ def __init__(self, common, id, total_bytes): super(ShareHistoryItem, self).__init__() self.common = common self.id = id self.total_bytes = total_bytes self.downloaded_bytes = 0 self.started = time.time() self.started_dt = datetime.fromtimestamp(self.started) self.status = HistoryItem.STATUS_STARTED # Label self.label = QtWidgets.QLabel( strings._("gui_all_modes_transfer_started").format( self.started_dt.strftime("%b %d, %I:%M%p") ) ) # Progress bar self.progress_bar = QtWidgets.QProgressBar() self.progress_bar.setTextVisible(True) self.progress_bar.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.progress_bar.setAlignment(QtCore.Qt.AlignHCenter) self.progress_bar.setMinimum(0) self.progress_bar.setMaximum(total_bytes / 1024) self.progress_bar.setValue(0) self.progress_bar.setStyleSheet( self.common.gui.css["downloads_uploads_progress_bar"] ) self.progress_bar.total_bytes = total_bytes # Layout layout = QtWidgets.QVBoxLayout() layout.addWidget(self.label) layout.addWidget(self.progress_bar) self.setLayout(layout) # Start at 0 self.update(0) def update(self, downloaded_bytes): self.downloaded_bytes = downloaded_bytes self.progress_bar.setValue(downloaded_bytes / 1024) if (downloaded_bytes / 1024) == (self.progress_bar.total_bytes / 1024): pb_fmt = strings._("gui_all_modes_progress_complete").format( self.common.format_seconds(time.time() - self.started) ) # Change the label self.label.setText(self.get_finished_label_text(self.started_dt)) self.label.setStyleSheet(self.common.gui.css["history_default_label"]) self.status = HistoryItem.STATUS_FINISHED else: elapsed = time.time() - self.started if elapsed < 10: # Wait a couple of seconds for the download rate to stabilize. # This prevents a "Windows copy dialog"-esque experience at # the beginning of the download. pb_fmt = strings._("gui_all_modes_progress_starting").format( self.common.human_readable_filesize(downloaded_bytes) ) else: pb_fmt = strings._("gui_all_modes_progress_eta").format( self.common.human_readable_filesize(downloaded_bytes), self.estimated_time_remaining, ) self.progress_bar.setFormat(pb_fmt) def cancel(self): self.progress_bar.setFormat(strings._("gui_canceled")) self.status = HistoryItem.STATUS_CANCELED @property def estimated_time_remaining(self): return self.common.estimated_time_remaining( self.downloaded_bytes, self.total_bytes, self.started ) class ReceiveHistoryItemFile(QtWidgets.QWidget): def __init__(self, common, filename): super(ReceiveHistoryItemFile, self).__init__() self.common = common self.common.log("ReceiveHistoryItemFile", "__init__", f"filename: {filename}") self.filename = filename self.dir = None self.started = datetime.now() # Filename label self.filename_label = QtWidgets.QLabel(self.filename) self.filename_label_width = self.filename_label.width() # File size label self.filesize_label = QtWidgets.QLabel() self.filesize_label.setStyleSheet(self.common.gui.css["receive_file_size"]) self.filesize_label.hide() # Folder button image = QtGui.QImage(GuiCommon.get_resource_path("images/open_folder.svg")) scaled_image = image.scaledToHeight(15, QtCore.Qt.SmoothTransformation) folder_pixmap = QtGui.QPixmap.fromImage(scaled_image) folder_icon = QtGui.QIcon(folder_pixmap) self.folder_button = QtWidgets.QPushButton() self.folder_button.clicked.connect(self.open_folder) self.folder_button.setIcon(folder_icon) self.folder_button.setIconSize(folder_pixmap.rect().size()) self.folder_button.setFlat(True) self.folder_button.hide() # Layouts layout = QtWidgets.QHBoxLayout() layout.addWidget(self.filename_label) layout.addWidget(self.filesize_label) layout.addStretch() layout.addWidget(self.folder_button) self.setLayout(layout) def update(self, uploaded_bytes, complete): self.filesize_label.setText(self.common.human_readable_filesize(uploaded_bytes)) self.filesize_label.show() if complete: self.folder_button.show() def rename(self, new_filename): self.filename = new_filename self.filename_label.setText(self.filename) def set_dir(self, dir): self.dir = dir def open_folder(self): """ Open the downloads folder, with the file selected, in a cross-platform manner """ self.common.log("ReceiveHistoryItemFile", "open_folder") if not self.dir: self.common.log( "ReceiveHistoryItemFile", "open_folder", "dir has not been set yet, can't open folder", ) return abs_filename = os.path.join(self.dir, self.filename) # Linux if self.common.platform == "Linux" or self.common.platform == "BSD": try: # If nautilus is available, open it subprocess.Popen(["xdg-open", self.dir]) except Exception: Alert( self.common, strings._("gui_open_folder_error").format(abs_filename), ) # macOS elif self.common.platform == "Darwin": subprocess.call(["open", "-R", abs_filename]) # Windows elif self.common.platform == "Windows": subprocess.Popen(["explorer", f"/select,{abs_filename}"]) class ReceiveHistoryItemMessage(QtWidgets.QWidget): def __init__( self, common, ): super(ReceiveHistoryItemMessage, self).__init__() self.common = common self.filename = None # Read message button message_pixmap = QtGui.QPixmap.fromImage( QtGui.QImage(GuiCommon.get_resource_path("images/open_message.png")) ) message_icon = QtGui.QIcon(message_pixmap) self.message_button = QtWidgets.QPushButton( strings._("history_receive_read_message_button") ) self.message_button.setStyleSheet(self.common.gui.css["receive_message_button"]) self.message_button.clicked.connect(self.open_message) self.message_button.setIcon(message_icon) self.message_button.setIconSize(message_pixmap.rect().size()) # Layouts layout = QtWidgets.QHBoxLayout() layout.addWidget(self.message_button) layout.addStretch() self.setLayout(layout) self.hide() def set_filename(self, new_filename): self.filename = new_filename self.show() def open_message(self): """ Open the message in the operating system's default text editor """ self.common.log("ReceiveHistoryItemMessage", "open_message", self.filename) # Linux if self.common.platform == "Linux" or self.common.platform == "BSD": # If nautilus is available, open it subprocess.Popen(["xdg-open", self.filename]) # macOS elif self.common.platform == "Darwin": subprocess.call(["open", self.filename]) # Windows elif self.common.platform == "Windows": subprocess.Popen(["notepad", self.filename]) class ReceiveHistoryItem(HistoryItem): def __init__(self, common, id, content_length): super(ReceiveHistoryItem, self).__init__() self.common = common self.id = id self.content_length = content_length self.started = datetime.now() self.status = HistoryItem.STATUS_STARTED self.common.log( "ReceiveHistoryItem", "__init__", f"id={self.id} content_length={self.content_length}", ) # Label self.label = QtWidgets.QLabel( strings._("gui_all_modes_transfer_started").format( self.started.strftime("%b %d, %I:%M%p") ) ) # Progress bar self.progress_bar = QtWidgets.QProgressBar() self.progress_bar.setTextVisible(True) self.progress_bar.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.progress_bar.setAlignment(QtCore.Qt.AlignHCenter) self.progress_bar.setMinimum(0) self.progress_bar.setValue(0) self.progress_bar.setStyleSheet( self.common.gui.css["downloads_uploads_progress_bar"] ) # The message widget, if a message was included self.message = ReceiveHistoryItemMessage(self.common) # This layout contains file widgets self.files_layout = QtWidgets.QVBoxLayout() self.files_layout.setContentsMargins(0, 0, 0, 0) files_widget = QtWidgets.QWidget() files_widget.setStyleSheet(self.common.gui.css["receive_file"]) files_widget.setLayout(self.files_layout) # Layout layout = QtWidgets.QVBoxLayout() layout.addWidget(self.label) layout.addWidget(self.message) layout.addWidget(self.progress_bar) layout.addWidget(files_widget) layout.addStretch() self.setLayout(layout) # We're also making a dictionary of file widgets, to make them easier to access self.files = {} def includes_message(self, message_filename): self.message.set_filename(message_filename) def update(self, data): """ Using the progress from Web, update the progress bar and file size labels for each file """ if data["action"] == "progress": total_uploaded_bytes = 0 for filename in data["progress"]: total_uploaded_bytes += data["progress"][filename]["uploaded_bytes"] # Update the progress bar self.progress_bar.setMaximum(self.content_length / 1024) self.progress_bar.setValue(total_uploaded_bytes / 1024) elapsed = datetime.now() - self.started if elapsed.seconds < 10: pb_fmt = strings._("gui_all_modes_progress_starting").format( self.common.human_readable_filesize(total_uploaded_bytes) ) else: estimated_time_remaining = self.common.estimated_time_remaining( total_uploaded_bytes, self.content_length, self.started.timestamp() ) pb_fmt = strings._("gui_all_modes_progress_eta").format( self.common.human_readable_filesize(total_uploaded_bytes), estimated_time_remaining, ) self.progress_bar.setFormat(pb_fmt) # Using list(progress) to avoid "RuntimeError: dictionary changed size during iteration" for filename in list(data["progress"]): # Add a new file if needed if filename not in self.files: self.files[filename] = ReceiveHistoryItemFile(self.common, filename) self.files_layout.addWidget(self.files[filename]) # Update the file self.files[filename].update( data["progress"][filename]["uploaded_bytes"], data["progress"][filename]["complete"], ) elif data["action"] == "rename": self.files[data["old_filename"]].rename(data["new_filename"]) self.files[data["new_filename"]] = self.files.pop(data["old_filename"]) elif data["action"] == "set_dir": self.files[data["filename"]].set_dir(data["dir"]) elif data["action"] == "finished": # Change the status self.status = HistoryItem.STATUS_FINISHED # Hide the progress bar self.progress_bar.hide() # Change the label self.label.setText(self.get_finished_label_text(self.started)) self.label.setStyleSheet(self.common.gui.css["history_default_label"]) elif data["action"] == "canceled": # Change the status self.status = HistoryItem.STATUS_CANCELED # Hide the progress bar self.progress_bar.hide() # Change the label self.label.setText(self.get_canceled_label_text(self.started)) class IndividualFileHistoryItem(HistoryItem): """ Individual file history item, for share mode viewing of individual files """ def __init__(self, common, data, path): super(IndividualFileHistoryItem, self).__init__() self.status = HistoryItem.STATUS_STARTED self.common = common self.id = id # Decode and sanitize the path to remove newlines decoded_path = unquote(path) self.path = decoded_path.replace("\r", "").replace("\n", "") self.total_bytes = 0 self.downloaded_bytes = 0 self.started = time.time() self.started_dt = datetime.fromtimestamp(self.started) self.status = HistoryItem.STATUS_STARTED self.directory_listing = "directory_listing" in data # Labels self.timestamp_label = QtWidgets.QLabel( self.started_dt.strftime("%b %d, %I:%M%p") ) self.timestamp_label.setStyleSheet( self.common.gui.css["history_individual_file_timestamp_label"] ) self.path_label = QtWidgets.QLabel(self.path) self.path_label.setTextFormat(QtCore.Qt.PlainText) self.path_label.setStyleSheet(self.common.gui.css["history_default_label"]) self.status_code_label = QtWidgets.QLabel() # Progress bar self.progress_bar = QtWidgets.QProgressBar() self.progress_bar.setTextVisible(True) self.progress_bar.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.progress_bar.setAlignment(QtCore.Qt.AlignHCenter) self.progress_bar.setValue(0) self.progress_bar.setStyleSheet( self.common.gui.css["downloads_uploads_progress_bar"] ) # Text layout labels_layout = QtWidgets.QHBoxLayout() labels_layout.addWidget(self.timestamp_label) labels_layout.addWidget(self.path_label) labels_layout.addWidget(self.status_code_label) labels_layout.addStretch() # Layout layout = QtWidgets.QVBoxLayout() layout.addLayout(labels_layout) layout.addWidget(self.progress_bar) self.setLayout(layout) # Is a status code already sent? if "status_code" in data: self.status_code_label.setText(str(data["status_code"])) if data["status_code"] >= 200 and data["status_code"] < 300: self.status_code_label.setStyleSheet( self.common.gui.css["history_individual_file_status_code_label_2xx"] ) if data["status_code"] >= 400 and data["status_code"] < 500: self.status_code_label.setStyleSheet( self.common.gui.css["history_individual_file_status_code_label_4xx"] ) self.status = HistoryItem.STATUS_FINISHED self.progress_bar.hide() return else: self.total_bytes = data["filesize"] self.progress_bar.setMinimum(0) self.progress_bar.setMaximum(data["filesize"] / 1024) self.progress_bar.total_bytes = data["filesize"] # Start at 0 self.update(0) def update(self, downloaded_bytes): self.downloaded_bytes = downloaded_bytes self.progress_bar.setValue(downloaded_bytes / 1024) if (downloaded_bytes / 1024) == (self.progress_bar.total_bytes / 1024): self.status_code_label.setText("200") self.status_code_label.setStyleSheet( self.common.gui.css["history_individual_file_status_code_label_2xx"] ) self.progress_bar.hide() self.status = HistoryItem.STATUS_FINISHED else: elapsed = time.time() - self.started if elapsed < 10: # Wait a couple of seconds for the download rate to stabilize. # This prevents a "Windows copy dialog"-esque experience at # the beginning of the download. pb_fmt = strings._("gui_all_modes_progress_starting").format( self.common.human_readable_filesize(downloaded_bytes) ) else: pb_fmt = strings._("gui_all_modes_progress_eta").format( self.common.human_readable_filesize(downloaded_bytes), self.estimated_time_remaining, ) self.progress_bar.setFormat(pb_fmt) def cancel(self): self.progress_bar.setFormat(strings._("gui_canceled")) self.status = HistoryItem.STATUS_CANCELED @property def estimated_time_remaining(self): return self.common.estimated_time_remaining( self.downloaded_bytes, self.total_bytes, self.started ) class HistoryItemList(QtWidgets.QScrollArea): """ List of items """ def __init__(self, common): super(HistoryItemList, self).__init__() self.common = common self.items = {} # The layout that holds all of the items self.items_layout = QtWidgets.QVBoxLayout() self.items_layout.setContentsMargins(0, 0, 0, 0) self.items_layout.setSizeConstraint(QtWidgets.QLayout.SetMinAndMaxSize) # Wrapper layout that also contains a stretch wrapper_layout = QtWidgets.QVBoxLayout() wrapper_layout.setSizeConstraint(QtWidgets.QLayout.SetMinAndMaxSize) wrapper_layout.addLayout(self.items_layout) wrapper_layout.addStretch() # The internal widget of the scroll area widget = QtWidgets.QWidget() widget.setLayout(wrapper_layout) self.setWidget(widget) self.setWidgetResizable(True) # Other scroll area settings self.setBackgroundRole(QtGui.QPalette.Light) self.verticalScrollBar().rangeChanged.connect(self.resizeScroll) def resizeScroll(self, minimum, maximum): """ Scroll to the bottom of the window when the range changes. """ self.verticalScrollBar().setValue(maximum) def add(self, id, item): """ Add a new item. Override this method. """ self.items[id] = item self.items_layout.addWidget(item) def update(self, id, data): """ Update an item. Override this method. """ if id in self.items: self.items[id].update(data) def cancel(self, id): """ Cancel an item. Override this method. """ if id in self.items: self.items[id].cancel() def includes_message(self, id, message_filename): """ Show message button for receive mode """ if id in self.items: self.items[id].includes_message(message_filename) def reset(self): """ Reset all items, emptying the list. Override this method. """ for key, item in self.items.copy().items(): self.items_layout.removeWidget(item) item.close() del self.items[key] class History(QtWidgets.QWidget): """ A history of what's happened so far in this mode. This contains an internal object full of a scrollable list of items. """ def __init__(self, common, empty_image, empty_text, header_text, mode=""): super(History, self).__init__() self.common = common self.mode = mode self.setMinimumWidth(350) # In progress and completed counters self.in_progress_count = 0 self.completed_count = 0 self.requests_count = 0 # In progress, completed, and requests labels self.in_progress_label = QtWidgets.QLabel() self.in_progress_label.setStyleSheet(self.common.gui.css["mode_info_label"]) self.completed_label = QtWidgets.QLabel() self.completed_label.setStyleSheet(self.common.gui.css["mode_info_label"]) self.requests_label = QtWidgets.QLabel() self.requests_label.setStyleSheet(self.common.gui.css["mode_info_label"]) # Header self.header_label = QtWidgets.QLabel(header_text) self.header_label.setStyleSheet(self.common.gui.css["downloads_uploads_label"]) self.clear_button = QtWidgets.QPushButton( strings._("gui_all_modes_clear_history") ) self.clear_button.setStyleSheet(self.common.gui.css["downloads_uploads_clear"]) self.clear_button.setFlat(True) self.clear_button.clicked.connect(self.reset) header_layout = QtWidgets.QHBoxLayout() header_layout.addWidget(self.header_label) header_layout.addStretch() header_layout.addWidget(self.in_progress_label) header_layout.addWidget(self.completed_label) header_layout.addWidget(self.requests_label) header_layout.addWidget(self.clear_button) # When there are no items self.empty_image = QtWidgets.QLabel() self.empty_image.setAlignment(QtCore.Qt.AlignCenter) self.empty_image.setPixmap(empty_image) self.empty_text = QtWidgets.QLabel(empty_text) self.empty_text.setAlignment(QtCore.Qt.AlignCenter) self.empty_text.setStyleSheet( self.common.gui.css["downloads_uploads_empty_text"] ) empty_layout = QtWidgets.QVBoxLayout() empty_layout.addStretch() empty_layout.addWidget(self.empty_image) empty_layout.addWidget(self.empty_text) empty_layout.addStretch() self.empty = QtWidgets.QWidget() self.empty.setStyleSheet(self.common.gui.css["downloads_uploads_empty"]) self.empty.setLayout(empty_layout) # When there are items self.item_list = HistoryItemList(self.common) self.not_empty_layout = QtWidgets.QVBoxLayout() self.not_empty_layout.addLayout(header_layout) self.not_empty_layout.addWidget(self.item_list) self.not_empty = QtWidgets.QWidget() self.not_empty.setStyleSheet(self.common.gui.css["downloads_uploads_not_empty"]) self.not_empty.setLayout(self.not_empty_layout) # Layout layout = QtWidgets.QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.empty) layout.addWidget(self.not_empty) self.setLayout(layout) # Reset once at the beginning self.reset() def add(self, id, item): """ Add a new item. """ self.common.log("History", "add", f"id: {id}") # Hide empty, show not empty self.empty.hide() self.not_empty.show() # Add it to the list self.item_list.add(id, item) def update(self, id, data): """ Update an item. """ self.item_list.update(id, data) def cancel(self, id): """ Cancel an item. """ self.item_list.cancel(id) def includes_message(self, id, message_filename): """ Show the message button """ self.item_list.includes_message(id, message_filename) def reset(self): """ Reset all items. """ self.item_list.reset() if len(self.item_list.items) == 0: # Hide not empty, show empty self.not_empty.hide() self.empty.show() # Reset in-progress counter self.in_progress_count = 0 self.update_in_progress() # Reset completed counter self.completed_count = 0 self.update_completed() # Reset web requests counter self.requests_count = 0 self.update_requests() def update_completed(self): """ Update the 'completed' widget. """ if self.completed_count == 0: image = GuiCommon.get_resource_path(f"images/{self.common.gui.color_mode}_history_completed_none.svg") else: image = GuiCommon.get_resource_path("images/history_completed.svg") self.completed_label.setText(f' {self.completed_count}') self.completed_label.setToolTip( strings._("history_completed_tooltip").format(self.completed_count) ) def update_in_progress(self): """ Update the 'in progress' widget. """ if self.in_progress_count == 0: image = GuiCommon.get_resource_path(f"images/{self.common.gui.color_mode}_history_in_progress_none.svg") else: image = GuiCommon.get_resource_path("images/history_in_progress.svg") self.in_progress_label.setText( f' {self.in_progress_count}' ) self.in_progress_label.setToolTip( strings._("history_in_progress_tooltip").format(self.in_progress_count) ) def update_requests(self): """ Update the 'web requests' widget. """ if self.requests_count == 0: image = GuiCommon.get_resource_path(f"images/{self.common.gui.color_mode}_history_requests_none.svg") else: image = GuiCommon.get_resource_path("images/history_requests.svg") self.requests_label.setText(f' {self.requests_count}') self.requests_label.setToolTip( strings._("history_requests_tooltip").format(self.requests_count) ) class ToggleHistory(QtWidgets.QPushButton): """ Widget for toggling showing or hiding the history, as well as keeping track of the indicator counter if it's hidden """ def __init__(self, common, current_mode, history_widget, icon, selected_icon): super(ToggleHistory, self).__init__() self.common = common self.current_mode = current_mode self.history_widget = history_widget self.icon = icon self.selected_icon = selected_icon # Toggle button self.setDefault(False) self.setFixedWidth(35) self.setFixedHeight(30) self.setFlat(True) self.setIcon(icon) self.clicked.connect(self.toggle_clicked) # Keep track of indicator self.indicator_count = 0 self.indicator_label = QtWidgets.QLabel(parent=self) self.indicator_label.setStyleSheet( self.common.gui.css["download_uploads_indicator"] ) self.update_indicator() def update_indicator(self, increment=False): """ Update the display of the indicator count. If increment is True, then only increment the counter if History is hidden. """ if increment and not self.history_widget.isVisible(): self.indicator_count += 1 self.indicator_label.setText(str(self.indicator_count)) if self.indicator_count == 0: self.indicator_label.hide() else: size = self.indicator_label.sizeHint() self.indicator_label.setGeometry( 35 - size.width(), 0, size.width(), size.height() ) self.indicator_label.show() def toggle_clicked(self): """ Toggle showing and hiding the history widget """ self.common.log("ToggleHistory", "toggle_clicked") if self.history_widget.isVisible(): self.history_widget.hide() self.setIcon(self.icon) self.setFlat(True) else: self.history_widget.show() self.setIcon(self.selected_icon) self.setFlat(False) # Reset the indicator count self.indicator_count = 0 self.update_indicator() onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/mode_settings_widget.py000066400000000000000000000306701521174352300306220ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from PySide6 import QtCore, QtWidgets from ... import strings class ModeSettingsWidget(QtWidgets.QScrollArea): """ All of the common settings for each mode are in this widget """ change_persistent = QtCore.Signal(int, bool) def __init__(self, common, tab, mode_settings): super(ModeSettingsWidget, self).__init__() self.common = common self.tab = tab self.settings = mode_settings # Downstream Mode need to fill in this layout with its settings self.mode_specific_layout = QtWidgets.QVBoxLayout() self.persistent_autostart_on_launch_checkbox = QtWidgets.QCheckBox() self.persistent_autostart_on_launch_checkbox.clicked.connect(self.persistent_autostart_on_launch_checkbox_clicked) self.persistent_autostart_on_launch_checkbox.setText(strings._("mode_settings_persistent_autostart_on_launch_checkbox")) if self.settings.get("persistent", "autostart_on_launch"): self.persistent_autostart_on_launch_checkbox.setCheckState(QtCore.Qt.Checked) else: self.persistent_autostart_on_launch_checkbox.setCheckState(QtCore.Qt.Unchecked) # Persistent self.persistent_checkbox = QtWidgets.QCheckBox() self.persistent_checkbox.clicked.connect(self.persistent_checkbox_clicked) self.persistent_checkbox.setText(strings._("mode_settings_persistent_checkbox")) if self.settings.get("persistent", "enabled"): self.persistent_checkbox.setCheckState(QtCore.Qt.Checked) self.persistent_autostart_on_launch_checkbox.show() else: self.persistent_checkbox.setCheckState(QtCore.Qt.Unchecked) self.persistent_autostart_on_launch_checkbox.hide() # Public self.public_checkbox = QtWidgets.QCheckBox() self.public_checkbox.clicked.connect(self.public_checkbox_clicked) self.public_checkbox.setText(strings._("mode_settings_public_checkbox")) if self.settings.get("general", "public"): self.public_checkbox.setCheckState(QtCore.Qt.Checked) else: self.public_checkbox.setCheckState(QtCore.Qt.Unchecked) # Title title_label = QtWidgets.QLabel(strings._("mode_settings_title_label")) self.title_lineedit = QtWidgets.QLineEdit() self.title_lineedit.editingFinished.connect(self.title_editing_finished) if self.settings.get("general", "title"): self.title_lineedit.setText(self.settings.get("general", "title")) title_layout = QtWidgets.QHBoxLayout() title_layout.addWidget(title_label) title_layout.addWidget(self.title_lineedit) # Whether or not to use an auto-start timer self.autostart_timer_checkbox = QtWidgets.QCheckBox() self.autostart_timer_checkbox.clicked.connect( self.autostart_timer_checkbox_clicked ) self.autostart_timer_checkbox.setText( strings._("mode_settings_autostart_timer_checkbox") ) if self.settings.get("general", "autostart_timer"): self.autostart_timer_checkbox.setCheckState(QtCore.Qt.Checked) else: self.autostart_timer_checkbox.setCheckState(QtCore.Qt.Unchecked) # The autostart timer widget self.autostart_timer_widget = QtWidgets.QDateTimeEdit() self.autostart_timer_widget.setDisplayFormat("hh:mm A MMM d, yy") self.autostart_timer_reset() self.autostart_timer_widget.setCurrentSection( QtWidgets.QDateTimeEdit.MinuteSection ) if self.settings.get("general", "autostart_timer"): self.autostart_timer_widget.show() else: self.autostart_timer_widget.hide() # Autostart timer layout autostart_timer_layout = QtWidgets.QHBoxLayout() autostart_timer_layout.setContentsMargins(0, 0, 0, 0) autostart_timer_layout.addWidget(self.autostart_timer_checkbox) autostart_timer_layout.addWidget(self.autostart_timer_widget) # Whether or not to use an auto-stop timer self.autostop_timer_checkbox = QtWidgets.QCheckBox() self.autostop_timer_checkbox.clicked.connect( self.autostop_timer_checkbox_clicked ) self.autostop_timer_checkbox.setText( strings._("mode_settings_autostop_timer_checkbox") ) if self.settings.get("general", "autostop_timer"): self.autostop_timer_checkbox.setCheckState(QtCore.Qt.Checked) else: self.autostop_timer_checkbox.setCheckState(QtCore.Qt.Unchecked) # The autostop timer widget self.autostop_timer_widget = QtWidgets.QDateTimeEdit() self.autostop_timer_widget.setDisplayFormat("hh:mm A MMM d, yy") self.autostop_timer_reset() self.autostop_timer_widget.setCurrentSection( QtWidgets.QDateTimeEdit.MinuteSection ) if self.settings.get("general", "autostop_timer"): self.autostop_timer_widget.show() else: self.autostop_timer_widget.hide() # Autostop timer layout autostop_timer_layout = QtWidgets.QHBoxLayout() autostop_timer_layout.setContentsMargins(0, 0, 0, 0) autostop_timer_layout.addWidget(self.autostop_timer_checkbox) autostop_timer_layout.addWidget(self.autostop_timer_widget) # Toggle advanced settings self.toggle_advanced_button = QtWidgets.QPushButton() self.toggle_advanced_button.clicked.connect(self.toggle_advanced_clicked) self.toggle_advanced_button.setFlat(True) self.toggle_advanced_button.setStyleSheet( self.common.gui.css["mode_settings_toggle_advanced"] ) # Advanced group itself advanced_layout = QtWidgets.QVBoxLayout() advanced_layout.setContentsMargins(0, 0, 0, 0) advanced_layout.addLayout(title_layout) advanced_layout.addLayout(autostart_timer_layout) advanced_layout.addLayout(autostop_timer_layout) self.advanced_widget = QtWidgets.QWidget() self.advanced_widget.setLayout(advanced_layout) self.advanced_widget.hide() layout = QtWidgets.QVBoxLayout() layout.addLayout(self.mode_specific_layout) layout.addWidget(self.persistent_checkbox) layout.addWidget(self.persistent_autostart_on_launch_checkbox) layout.addWidget(self.public_checkbox) layout.addWidget(self.advanced_widget) layout.addWidget(self.toggle_advanced_button) layout.addStretch() main_widget = QtWidgets.QWidget() main_widget.setLayout(layout) self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) self.setWidgetResizable(True) self.setFrameShape(QtWidgets.QFrame.NoFrame) self.setWidget(main_widget) self.update_ui() def update_ui(self): # Update text on advanced group toggle button if self.advanced_widget.isVisible(): self.toggle_advanced_button.setText( strings._("mode_settings_advanced_toggle_hide") ) else: self.toggle_advanced_button.setText( strings._("mode_settings_advanced_toggle_show") ) def title_editing_finished(self): if self.title_lineedit.text().strip() == "": self.title_lineedit.setText("") self.settings.set("general", "title", None) if self.tab.mode == self.common.gui.MODE_SHARE: self.tab.change_title.emit( self.tab.tab_id, strings._("gui_tab_name_share") ) elif self.tab.mode == self.common.gui.MODE_RECEIVE: self.tab.change_title.emit( self.tab.tab_id, strings._("gui_tab_name_receive") ) elif self.tab.mode == self.common.gui.MODE_WEBSITE: self.tab.change_title.emit( self.tab.tab_id, strings._("gui_tab_name_website") ) elif self.tab.mode == self.common.gui.MODE_CHAT: self.tab.change_title.emit( self.tab.tab_id, strings._("gui_tab_name_chat") ) elif self.tab_mode is None: pass else: title = self.title_lineedit.text() self.settings.set("general", "title", title) self.tab.change_title.emit(self.tab.tab_id, title) def persistent_checkbox_clicked(self): self.settings.set("persistent", "enabled", self.persistent_checkbox.isChecked()) self.settings.set("persistent", "mode", self.tab.mode) self.settings.set("persistent", "autostart_on_launch", self.persistent_autostart_on_launch_checkbox.isChecked()) self.change_persistent.emit( self.tab.tab_id, self.persistent_checkbox.isChecked() ) # If disabling persistence, delete the file from disk if not self.persistent_checkbox.isChecked(): self.settings.delete() self.persistent_autostart_on_launch_checkbox.hide() else: self.persistent_autostart_on_launch_checkbox.show() def persistent_autostart_on_launch_checkbox_clicked(self): self.settings.set("persistent", "autostart_on_launch", self.persistent_autostart_on_launch_checkbox.isChecked()) def public_checkbox_clicked(self): self.settings.set("general", "public", self.public_checkbox.isChecked()) def autostart_timer_checkbox_clicked(self): self.settings.set( "general", "autostart_timer", self.autostart_timer_checkbox.isChecked() ) if self.autostart_timer_checkbox.isChecked(): self.autostart_timer_widget.show() else: self.autostart_timer_widget.hide() def autostop_timer_checkbox_clicked(self): self.settings.set( "general", "autostop_timer", self.autostop_timer_checkbox.isChecked() ) if self.autostop_timer_checkbox.isChecked(): self.autostop_timer_widget.show() else: self.autostop_timer_widget.hide() def toggle_advanced_clicked(self): if self.advanced_widget.isVisible(): self.advanced_widget.hide() else: self.advanced_widget.show() self.update_ui() def autostart_timer_reset(self): """ Reset the auto-start timer in the UI after stopping a share """ if self.common.gui.local_only: # For testing self.autostart_timer_widget.setDateTime( QtCore.QDateTime.currentDateTime().addSecs(15) ) self.autostart_timer_widget.setMinimumDateTime( QtCore.QDateTime.currentDateTime() ) else: self.autostart_timer_widget.setDateTime( QtCore.QDateTime.currentDateTime().addSecs( 300 ) # 5 minutes in the future ) self.autostart_timer_widget.setMinimumDateTime( QtCore.QDateTime.currentDateTime().addSecs(60) ) def autostop_timer_reset(self): """ Reset the auto-stop timer in the UI after stopping a share """ if self.common.gui.local_only: # For testing self.autostop_timer_widget.setDateTime( QtCore.QDateTime.currentDateTime().addSecs(15) ) self.autostop_timer_widget.setMinimumDateTime( QtCore.QDateTime.currentDateTime() ) else: self.autostop_timer_widget.setDateTime( QtCore.QDateTime.currentDateTime().addSecs(300) ) self.autostop_timer_widget.setMinimumDateTime( QtCore.QDateTime.currentDateTime().addSecs(60) ) onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/receive_mode/000077500000000000000000000000001521174352300264615ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/receive_mode/__init__.py000066400000000000000000000372061521174352300306020ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.web import Web from ..history import History, ToggleHistory, ReceiveHistoryItem from .. import Mode from .... import strings from ....widgets import MinimumSizeWidget, Alert from ....gui_common import GuiCommon class ReceiveMode(Mode): """ Parts of the main window UI for receiving files. """ def init(self): """ Custom initialization for ReceiveMode. """ # Create the Web object self.web = Web(self.common, True, self.settings, "receive") # Receive image self.image_label = QtWidgets.QLabel() self.image_label.setPixmap( QtGui.QPixmap.fromImage( QtGui.QImage( GuiCommon.get_resource_path( "images/{}_mode_receive.png".format(self.common.gui.color_mode) ) ) ) ) self.image_label.setFixedSize(250, 250) image_layout = QtWidgets.QVBoxLayout() image_layout.addWidget(self.image_label) self.image = QtWidgets.QWidget() self.image.setLayout(image_layout) # Settings # Data dir data_dir_label = QtWidgets.QLabel( strings._("mode_settings_receive_data_dir_label") ) self.data_dir_lineedit = QtWidgets.QLineEdit() self.data_dir_lineedit.setReadOnly(True) self.data_dir_lineedit.setText(self.settings.get("receive", "data_dir")) data_dir_button = QtWidgets.QPushButton( strings._("mode_settings_receive_data_dir_browse_button") ) data_dir_button.clicked.connect(self.data_dir_button_clicked) data_dir_layout = QtWidgets.QHBoxLayout() data_dir_layout.addWidget(data_dir_label) data_dir_layout.addWidget(self.data_dir_lineedit) data_dir_layout.addWidget(data_dir_button) self.mode_settings_widget.mode_specific_layout.addLayout(data_dir_layout) # Disable text or files self.disable_text_checkbox = self.settings.get("receive", "disable_files") self.disable_text_checkbox = QtWidgets.QCheckBox() self.disable_text_checkbox.clicked.connect(self.disable_text_checkbox_clicked) self.disable_text_checkbox.setText( strings._("mode_settings_receive_disable_text_checkbox") ) self.disable_text_checkbox.setStyleSheet(self.common.gui.css["receive_options"]) self.disable_files_checkbox = self.settings.get("receive", "disable_files") self.disable_files_checkbox = QtWidgets.QCheckBox() self.disable_files_checkbox.clicked.connect(self.disable_files_checkbox_clicked) self.disable_files_checkbox.setText( strings._("mode_settings_receive_disable_files_checkbox") ) self.disable_files_checkbox.setStyleSheet(self.common.gui.css["receive_options"]) disable_layout = QtWidgets.QHBoxLayout() disable_layout.addWidget(self.disable_text_checkbox) disable_layout.addWidget(self.disable_files_checkbox) disable_layout.addStretch() self.mode_settings_widget.mode_specific_layout.addLayout(disable_layout) # Webhook URL webhook_url = self.settings.get("receive", "webhook_url") self.webhook_url_checkbox = QtWidgets.QCheckBox() self.webhook_url_checkbox.clicked.connect(self.webhook_url_checkbox_clicked) self.webhook_url_checkbox.setText( strings._("mode_settings_receive_webhook_url_checkbox") ) self.webhook_url_lineedit = QtWidgets.QLineEdit() self.webhook_url_lineedit.editingFinished.connect( self.webhook_url_editing_finished ) self.webhook_url_lineedit.setPlaceholderText( "https://example.com/post-when-file-uploaded" ) webhook_url_layout = QtWidgets.QHBoxLayout() webhook_url_layout.addWidget(self.webhook_url_checkbox) webhook_url_layout.addWidget(self.webhook_url_lineedit) if webhook_url is not None and webhook_url != "": self.webhook_url_checkbox.setCheckState(QtCore.Qt.Checked) self.webhook_url_lineedit.setText( self.settings.get("receive", "webhook_url") ) self.show_webhook_url() else: self.webhook_url_checkbox.setCheckState(QtCore.Qt.Unchecked) self.hide_webhook_url() self.mode_settings_widget.mode_specific_layout.addLayout(webhook_url_layout) # Set title placeholder self.mode_settings_widget.title_lineedit.setPlaceholderText( strings._("gui_tab_name_receive") ) # Server status self.server_status.set_mode("receive") self.server_status.server_started_finished.connect(self.update_primary_action) self.server_status.server_stopped.connect(self.update_primary_action) self.server_status.server_canceled.connect(self.update_primary_action) # Tell server_status about web, then update self.server_status.web = self.web self.server_status.update() # Upload history self.history = History( self.common, QtGui.QPixmap.fromImage( QtGui.QImage( GuiCommon.get_resource_path("images/receive_icon_transparent.png") ) ), strings._("gui_receive_mode_no_files"), strings._("gui_all_modes_history"), ) self.history.hide() # Toggle history self.toggle_history = ToggleHistory( self.common, self, self.history, QtGui.QIcon(GuiCommon.get_resource_path(f"images/{self.common.gui.color_mode}_history_icon_toggle.svg")), QtGui.QIcon( GuiCommon.get_resource_path(f"images/{self.common.gui.color_mode}_history_icon_toggle_selected.svg") ), ) # Header header_label = QtWidgets.QLabel(strings._("gui_new_tab_receive_button")) header_label.setStyleSheet(self.common.gui.css["mode_header_label"]) # Receive mode warning receive_warning = QtWidgets.QLabel(strings._("gui_receive_mode_warning")) receive_warning.setMinimumHeight(80) receive_warning.setWordWrap(True) # Top bar top_bar_layout = QtWidgets.QHBoxLayout() top_bar_layout.addStretch() top_bar_layout.addWidget(self.toggle_history) # Main layout self.main_layout = QtWidgets.QVBoxLayout() self.main_layout.addWidget(header_label) self.main_layout.addWidget(receive_warning) self.main_layout.addWidget(self.primary_action, stretch=1) self.main_layout.addWidget(self.server_status) # Row layout content_row = QtWidgets.QHBoxLayout() content_row.addLayout(self.main_layout, stretch=1) content_row.addWidget(self.image) row_layout = QtWidgets.QVBoxLayout() row_layout.addLayout(top_bar_layout) row_layout.addLayout(content_row, stretch=1) # Column layout self.column_layout = QtWidgets.QHBoxLayout() self.column_layout.addLayout(row_layout) self.column_layout.addWidget(self.history, stretch=1) # Content layout self.content_layout.addLayout(self.column_layout) def get_type(self): """ Returns the type of mode as a string (e.g. "share", "receive", etc.) """ return "receive" def data_dir_button_clicked(self): """ Browse for a new OnionShare data directory, and save to tab settings """ data_dir = self.data_dir_lineedit.text() selected_dir = QtWidgets.QFileDialog.getExistingDirectory( self, strings._("mode_settings_receive_data_dir_label"), data_dir ) if selected_dir: # If we're running inside a flatpak package, the data dir must be inside ~/OnionShare if self.common.gui.is_flatpak: if not selected_dir.startswith(os.path.expanduser("~/OnionShare")): Alert(self.common, strings._("gui_receive_flatpak_data_dir")) return self.common.log( "ReceiveMode", "data_dir_button_clicked", f"selected dir: {selected_dir}", ) self.data_dir_lineedit.setText(selected_dir) self.settings.set("receive", "data_dir", selected_dir) def disable_text_checkbox_clicked(self): self.settings.set( "receive", "disable_text", self.disable_text_checkbox.isChecked() ) if self.disable_text_checkbox.isChecked(): # Prevent also disabling files if text is disabled self.disable_files_checkbox.setDisabled(True) else: self.disable_files_checkbox.setDisabled(False) def disable_files_checkbox_clicked(self): self.settings.set( "receive", "disable_files", self.disable_files_checkbox.isChecked() ) if self.disable_files_checkbox.isChecked(): # Prevent also disabling text if files is disabled self.disable_text_checkbox.setDisabled(True) else: self.disable_text_checkbox.setDisabled(False) def webhook_url_checkbox_clicked(self): if self.webhook_url_checkbox.isChecked(): if self.settings.get("receive", "webhook_url"): self.webhook_url_lineedit.setText( self.settings.get("receive", "webhook_url") ) self.show_webhook_url() else: self.settings.set("receive", "webhook_url", None) self.hide_webhook_url() def webhook_url_editing_finished(self): self.settings.set("receive", "webhook_url", self.webhook_url_lineedit.text()) def hide_webhook_url(self): self.webhook_url_lineedit.hide() def show_webhook_url(self): self.webhook_url_lineedit.show() def get_stop_server_autostop_timer_text(self): """ Return the string to put on the stop server button, if there's an auto-stop timer """ return strings._("gui_receive_stop_server_autostop_timer") def autostop_timer_finished_should_stop_server(self): """ The auto-stop timer expired, should we stop the server? Returns a bool """ # If there were no attempts to upload files, or all uploads are done, we can stop if ( self.web.receive_mode.cur_history_id == 0 or not self.web.receive_mode.uploads_in_progress ): self.server_status.stop_server() self.server_status_label.setText(strings._("close_on_autostop_timer")) return True # An upload is probably still running - hold off on stopping the share, but block new shares. else: self.server_status_label.setText( strings._("gui_receive_mode_autostop_timer_waiting") ) self.web.receive_mode.can_upload = False return False def start_server_custom(self): """ Starting the server. """ # Reset web counters self.web.receive_mode.cur_history_id = 0 # Hide and reset the uploads if we have previously shared self.reset_info_counters() # Set proxies for webhook URL if self.common.gui.local_only: self.web.proxies = None else: (socks_address, socks_port) = self.common.gui.onion.get_tor_socks_port() self.web.proxies = { "http": f"socks5h://{socks_address}:{socks_port}", "https": f"socks5h://{socks_address}:{socks_port}", } def start_server_step2_custom(self): """ Step 2 in starting the server. """ # Continue self.starting_server_step3.emit() self.start_server_finished.emit() def handle_tor_broke_custom(self): """ Connection to Tor broke. """ self.primary_action.hide() def handle_request_load(self, event): """ Handle REQUEST_LOAD event. """ self.system_tray.showMessage( strings._("systray_page_loaded_title"), strings._("systray_page_loaded_message"), ) def handle_request_started(self, event): """ Handle REQUEST_STARTED event. """ item = ReceiveHistoryItem( self.common, event["data"]["id"], event["data"]["content_length"], ) self.history.add(event["data"]["id"], item) self.toggle_history.update_indicator(True) self.history.in_progress_count += 1 self.history.update_in_progress() self.system_tray.showMessage( strings._("systray_receive_started_title"), strings._("systray_receive_started_message"), ) def handle_request_progress(self, event): """ Handle REQUEST_PROGRESS event. """ self.history.update( event["data"]["id"], {"action": "progress", "progress": event["data"]["progress"]}, ) def handle_request_upload_includes_message(self, event): """ Handle REQUEST_UPLOAD_INCLUDES_MESSAGE event. """ self.history.includes_message(event["data"]["id"], event["data"]["filename"]) def handle_request_upload_file_renamed(self, event): """ Handle REQUEST_UPLOAD_FILE_RENAMED event. """ self.history.update( event["data"]["id"], { "action": "rename", "old_filename": event["data"]["old_filename"], "new_filename": event["data"]["new_filename"], }, ) def handle_request_upload_set_dir(self, event): """ Handle REQUEST_UPLOAD_SET_DIR event. """ self.history.update( event["data"]["id"], { "action": "set_dir", "filename": event["data"]["filename"], "dir": event["data"]["dir"], }, ) def handle_request_upload_finished(self, event): """ Handle REQUEST_UPLOAD_FINISHED event. """ self.history.update(event["data"]["id"], {"action": "finished"}) self.history.completed_count += 1 self.history.in_progress_count -= 1 self.history.update_completed() self.history.update_in_progress() def handle_request_upload_canceled(self, event): """ Handle REQUEST_UPLOAD_CANCELED event. """ self.history.update(event["data"]["id"], {"action": "canceled"}) self.history.in_progress_count -= 1 self.history.update_in_progress() def reset_info_counters(self): """ Set the info counters back to zero. """ self.history.reset() self.toggle_history.indicator_count = 0 self.toggle_history.update_indicator() def update_primary_action(self): self.common.log("ReceiveMode", "update_primary_action") onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/share_mode/000077500000000000000000000000001521174352300261415ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/share_mode/__init__.py000066400000000000000000000403061521174352300302550ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.common import Common from onionshare_cli.web import Web from .threads import CompressThread from .. import Mode from ..file_selection import FileSelection from ..history import History, ToggleHistory, ShareHistoryItem from .... import strings from ....widgets import MinimumSizeWidget from ....gui_common import GuiCommon class ShareMode(Mode): """ Parts of the main window UI for sharing files. """ def init(self): """ Custom initialization for ReceiveMode. """ # Threads start out as None self.compress_thread = None # Create the Web object self.web = Web(self.common, True, self.settings, "share") # Settings self.autostop_sharing_checkbox = QtWidgets.QCheckBox() self.autostop_sharing_checkbox.clicked.connect( self.autostop_sharing_checkbox_clicked ) self.autostop_sharing_checkbox.setText( strings._("mode_settings_share_autostop_sharing_checkbox") ) if self.settings.get("share", "autostop_sharing"): self.autostop_sharing_checkbox.setCheckState(QtCore.Qt.Checked) else: self.autostop_sharing_checkbox.setCheckState(QtCore.Qt.Unchecked) self.mode_settings_widget.mode_specific_layout.addWidget( self.autostop_sharing_checkbox ) # File selection self.file_selection = FileSelection( self.common, "images/{}_mode_share.png".format(self.common.gui.color_mode), strings._("gui_new_tab_share_button"), self, ) if self.filenames: for filename in self.filenames: self.file_selection.file_list.add_file(filename) # Set title placeholder self.mode_settings_widget.title_lineedit.setPlaceholderText( strings._("gui_tab_name_share") ) # Server status self.server_status.set_mode("share", self.file_selection) self.server_status.server_started.connect(self.file_selection.server_started) self.server_status.server_stopped.connect(self.file_selection.server_stopped) self.server_status.server_stopped.connect(self.update_primary_action) self.server_status.server_canceled.connect(self.file_selection.server_stopped) self.server_status.server_canceled.connect(self.update_primary_action) self.file_selection.file_list.files_updated.connect(self.server_status.update) self.file_selection.file_list.files_updated.connect(self.update_primary_action) # Tell server_status about web, then update self.server_status.web = self.web self.server_status.update() # Filesize warning self.filesize_warning = QtWidgets.QLabel() self.filesize_warning.setWordWrap(True) self.filesize_warning.setStyleSheet( self.common.gui.css["share_filesize_warning"] ) self.filesize_warning.hide() # Download history self.history = History( self.common, QtGui.QPixmap.fromImage( QtGui.QImage( GuiCommon.get_resource_path("images/share_icon_transparent.png") ) ), strings._("gui_share_mode_no_files"), strings._("gui_all_modes_history"), ) self.history.hide() # Info label self.info_label = QtWidgets.QLabel() self.info_label.hide() # Delete all files button self.remove_all_button = QtWidgets.QPushButton( strings._("gui_file_selection_remove_all") ) self.remove_all_button.setFlat(True) self.remove_all_button.setStyleSheet( self.common.gui.css["share_delete_all_files_button"] ) self.remove_all_button.clicked.connect(self.delete_all) self.remove_all_button.hide() # Toggle history self.toggle_history = ToggleHistory( self.common, self, self.history, QtGui.QIcon(GuiCommon.get_resource_path(f"images/{self.common.gui.color_mode}_history_icon_toggle.svg")), QtGui.QIcon( GuiCommon.get_resource_path(f"images/{self.common.gui.color_mode}_history_icon_toggle_selected.svg") ), ) # Top bar top_bar_layout = QtWidgets.QHBoxLayout() top_bar_layout.addWidget(self.info_label) top_bar_layout.addStretch() top_bar_layout.addWidget(self.remove_all_button) top_bar_layout.addWidget(self.toggle_history) # Primary action layout self.primary_action_layout.addWidget(self.filesize_warning) self.primary_action.hide() self.update_primary_action() # Status bar, zip progress bar self._zip_progress_bar = None # Main layout self.main_layout = QtWidgets.QVBoxLayout() self.main_layout.addLayout(top_bar_layout) self.main_layout.addLayout(self.file_selection) self.main_layout.addWidget(self.primary_action, stretch=1) self.main_layout.addWidget(self.server_status) self.main_layout.addWidget(MinimumSizeWidget(700, 0)) # Column layout self.column_layout = QtWidgets.QHBoxLayout() self.column_layout.addLayout(self.main_layout) self.column_layout.addWidget(self.history, stretch=1) # Content layout self.content_layout.addLayout(self.column_layout) # Always start with focus on file selection self.file_selection.setFocus() def get_type(self): """ Returns the type of mode as a string (e.g. "share", "receive", etc.) """ return "share" def autostop_sharing_checkbox_clicked(self): """ Save autostop sharing setting to the tab settings """ self.settings.set( "share", "autostop_sharing", self.autostop_sharing_checkbox.isChecked() ) def get_stop_server_autostop_timer_text(self): """ Return the string to put on the stop server button, if there's an auto-stop timer """ return strings._("gui_share_stop_server_autostop_timer") def autostop_timer_finished_should_stop_server(self): """ The auto-stop timer expired, should we stop the server? Returns a bool """ # If there were no attempts to download the share, or all downloads are done, we can stop if self.history.in_progress_count == 0 or self.web.done: self.server_status.stop_server() self.server_status_label.setText(strings._("close_on_autostop_timer")) return True # A download is probably still running - hold off on stopping the share else: self.server_status_label.setText( strings._("gui_share_mode_autostop_timer_waiting") ) return False def start_server_custom(self): """ Starting the server. """ # Reset web counters self.web.share_mode.cur_history_id = 0 # Hide and reset the downloads if we have previously shared self.reset_info_counters() self.remove_all_button.hide() def start_server_step2_custom(self): """ Step 2 in starting the server. Zipping up files. """ # Add progress bar to the status bar, indicating the compressing of files. self._zip_progress_bar = ZipProgressBar(self.common, 0) self.filenames = self.file_selection.get_filenames() self._zip_progress_bar.total_files_size = ShareMode._compute_total_size( self.filenames ) self.status_bar.insertWidget(0, self._zip_progress_bar) # prepare the files for sending in a new thread self.compress_thread = CompressThread(self) self.compress_thread.success.connect(self.starting_server_step3.emit) self.compress_thread.success.connect(self.start_server_finished.emit) self.compress_thread.error.connect(self.starting_server_error.emit) self.server_status.server_canceled.connect(self.compress_thread.cancel) self.compress_thread.start() def start_server_step3_custom(self): """ Step 3 in starting the server. Remove zip progress bar, and display large filesize warning, if applicable. """ # Remove zip progress bar if self._zip_progress_bar is not None: self.status_bar.removeWidget(self._zip_progress_bar) self._zip_progress_bar = None # Warn about sending large files over Tor if self.web.share_mode.download_filesize >= 157286400: # 150mb self.filesize_warning.setText(strings._("large_filesize")) self.filesize_warning.show() def start_server_error_custom(self): """ Start server error. """ if self._zip_progress_bar is not None: self.status_bar.removeWidget(self._zip_progress_bar) self._zip_progress_bar = None def stop_server_custom(self): """ Stop server. """ # Remove the progress bar if self._zip_progress_bar is not None: self.status_bar.removeWidget(self._zip_progress_bar) self._zip_progress_bar = None self.filesize_warning.hide() self.history.in_progress_count = 0 self.history.completed_count = 0 self.history.update_in_progress() self.file_selection.file_list.adjustSize() self.remove_all_button.show() def cancel_server_custom(self): """ Stop the compression thread on cancel """ if self.compress_thread: self.common.log("ShareMode", "cancel_server: quitting compress thread") self.compress_thread.quit() def handle_tor_broke_custom(self): """ Connection to Tor broke. """ self.primary_action.hide() def handle_request_started(self, event): """ Handle REQUEST_STARTED event. """ if event["data"]["use_gzip"]: filesize = self.web.share_mode.gzip_filesize else: filesize = self.web.share_mode.download_filesize item = ShareHistoryItem(self.common, event["data"]["id"], filesize) self.history.add(event["data"]["id"], item) self.toggle_history.update_indicator(True) self.history.in_progress_count += 1 self.history.update_in_progress() self.system_tray.showMessage( strings._("systray_share_started_title"), strings._("systray_share_started_message"), ) def handle_request_progress(self, event): """ Handle REQUEST_PROGRESS event. """ self.history.update(event["data"]["id"], event["data"]["bytes"]) # Is the download complete? if event["data"]["bytes"] == self.web.share_mode.filesize: self.system_tray.showMessage( strings._("systray_share_completed_title"), strings._("systray_share_completed_message"), ) # Update completed and in progress labels self.history.completed_count += 1 self.history.in_progress_count -= 1 self.history.update_completed() self.history.update_in_progress() # Close on finish? if self.settings.get("share", "autostop_sharing"): self.server_status.stop_server() self.status_bar.clearMessage() self.server_status_label.setText(strings._("closing_automatically")) else: if self.server_status.status == self.server_status.STATUS_STOPPED: self.history.cancel(event["data"]["id"]) self.history.in_progress_count = 0 self.history.update_in_progress() def handle_request_canceled(self, event): """ Handle REQUEST_CANCELED event. """ self.history.cancel(event["data"]["id"]) # Update in progress count self.history.in_progress_count -= 1 self.history.update_in_progress() self.system_tray.showMessage( strings._("systray_share_canceled_title"), strings._("systray_share_canceled_message"), ) def update_primary_action(self): self.common.log("ShareMode", "update_primary_action") # Show or hide primary action layout file_count = self.file_selection.file_list.count() if file_count > 0: self.primary_action.show() self.info_label.show() self.remove_all_button.show() # Update the file count in the info label total_size_bytes = 0 for index in range(self.file_selection.file_list.count()): item = self.file_selection.file_list.item(index) total_size_bytes += item.size_bytes total_size_readable = self.common.human_readable_filesize(total_size_bytes) if file_count > 1: self.info_label.setText( strings._("gui_file_info").format(file_count, total_size_readable) ) else: self.info_label.setText( strings._("gui_file_info_single").format( file_count, total_size_readable ) ) else: self.primary_action.hide() self.info_label.hide() self.remove_all_button.hide() def reset_info_counters(self): """ Set the info counters back to zero. """ self.history.reset() self.toggle_history.indicator_count = 0 self.toggle_history.update_indicator() def delete_all(self): """ Delete All button clicked """ self.file_selection.file_list.clear() self.file_selection.file_list.files_updated.emit() self.file_selection.file_list.setCurrentItem(None) @staticmethod def _compute_total_size(filenames): total_size = 0 for filename in filenames: if os.path.isfile(filename): total_size += os.path.getsize(filename) if os.path.isdir(filename): total_size += Common.dir_size(filename) return total_size class ZipProgressBar(QtWidgets.QProgressBar): update_processed_size_signal = QtCore.Signal(int) def __init__(self, common, total_files_size): super(ZipProgressBar, self).__init__() self.common = common self.setMaximumHeight(20) self.setMinimumWidth(200) self.setValue(0) self.setFormat(strings._("zip_progress_bar_format")) self.setStyleSheet(self.common.gui.css["share_zip_progess_bar"]) self._total_files_size = total_files_size self._processed_size = 0 self.update_processed_size_signal.connect(self.update_processed_size) @property def total_files_size(self): return self._total_files_size @total_files_size.setter def total_files_size(self, val): self._total_files_size = val @property def processed_size(self): return self._processed_size @processed_size.setter def processed_size(self, val): self.update_processed_size(val) def update_processed_size(self, val): self._processed_size = val if self.processed_size < self.total_files_size: self.setValue(int((self.processed_size * 100) / self.total_files_size)) elif self.total_files_size != 0: self.setValue(100) else: self.setValue(0) onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/share_mode/threads.py000066400000000000000000000037631521174352300301560ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from PySide6 import QtCore class CompressThread(QtCore.QThread): """ Compresses files to be shared """ success = QtCore.Signal() error = QtCore.Signal(str) def __init__(self, mode): super(CompressThread, self).__init__() self.mode = mode self.mode.common.log("CompressThread", "__init__") # prepare files to share def set_processed_size(self, x): if self.mode._zip_progress_bar is not None: self.mode._zip_progress_bar.update_processed_size_signal.emit(x) def run(self): self.mode.common.log("CompressThread", "run") try: self.mode.web.share_mode.set_file_info( self.mode.filenames, processed_size_callback=self.set_processed_size ) self.success.emit() except OSError as e: self.error.emit(e.strerror) def cancel(self): self.mode.common.log("CompressThread", "cancel") # Let the Web and ZipWriter objects know that we're canceling compression early self.mode.web.cancel_compression = True try: self.mode.web.zip_writer.cancel_compression = True except AttributeError: # we never made it as far as creating a ZipWriter object pass onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/website_mode/000077500000000000000000000000001521174352300265015ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/onionshare/tab/mode/website_mode/__init__.py000066400000000000000000000322461521174352300306210ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import os from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.common import Common from onionshare_cli.web import Web from .. import Mode from ..file_selection import FileSelection from ..history import History, ToggleHistory from .... import strings from ....widgets import MinimumSizeWidget from ....gui_common import GuiCommon class WebsiteMode(Mode): """ Parts of the main window UI for sharing files. """ success = QtCore.Signal() error = QtCore.Signal(str) def init(self): """ Custom initialization for ReceiveMode. """ # Create the Web object self.web = Web(self.common, True, self.settings, "website") # Settings # Disable CSP option self.disable_csp_checkbox = QtWidgets.QCheckBox() self.disable_csp_checkbox.clicked.connect(self.disable_csp_checkbox_clicked) self.disable_csp_checkbox.setText( strings._("mode_settings_website_disable_csp_checkbox") ) if self.settings.get("website", "disable_csp"): self.disable_csp_checkbox.setCheckState(QtCore.Qt.Checked) else: self.disable_csp_checkbox.setCheckState(QtCore.Qt.Unchecked) self.mode_settings_widget.mode_specific_layout.addWidget( self.disable_csp_checkbox ) # Custom CSP option self.custom_csp_checkbox = QtWidgets.QCheckBox() self.custom_csp_checkbox.clicked.connect(self.custom_csp_checkbox_clicked) self.custom_csp_checkbox.setText(strings._("mode_settings_website_custom_csp_checkbox")) if self.settings.get("website", "custom_csp") and not self.settings.get("website", "disable_csp"): self.custom_csp_checkbox.setCheckState(QtCore.Qt.Checked) else: self.custom_csp_checkbox.setCheckState(QtCore.Qt.Unchecked) self.custom_csp = QtWidgets.QLineEdit() self.custom_csp.setPlaceholderText( "default-src 'self'; frame-ancestors 'none'; form-action 'self'; base-uri 'self'; img-src 'self' data:;" ) self.custom_csp.editingFinished.connect(self.custom_csp_editing_finished) custom_csp_layout = QtWidgets.QHBoxLayout() custom_csp_layout.setContentsMargins(0, 0, 0, 0) custom_csp_layout.addWidget(self.custom_csp_checkbox) custom_csp_layout.addWidget(self.custom_csp) self.mode_settings_widget.mode_specific_layout.addLayout(custom_csp_layout) # File selection self.file_selection = FileSelection( self.common, "images/{}_mode_website.png".format(self.common.gui.color_mode), strings._("gui_new_tab_website_button"), self, ) if self.filenames: for filename in self.filenames: self.file_selection.file_list.add_file(filename) # Set title placeholder self.mode_settings_widget.title_lineedit.setPlaceholderText( strings._("gui_tab_name_website") ) # Server status self.server_status.set_mode("website", self.file_selection) self.server_status.server_started.connect(self.file_selection.server_started) self.server_status.server_stopped.connect(self.file_selection.server_stopped) self.server_status.server_stopped.connect(self.update_primary_action) self.server_status.server_canceled.connect(self.file_selection.server_stopped) self.server_status.server_canceled.connect(self.update_primary_action) self.file_selection.file_list.files_updated.connect(self.server_status.update) self.file_selection.file_list.files_updated.connect(self.update_primary_action) # Tell server_status about web, then update self.server_status.web = self.web self.server_status.update() # Filesize warning self.filesize_warning = QtWidgets.QLabel() self.filesize_warning.setWordWrap(True) self.filesize_warning.setStyleSheet( self.common.gui.css["share_filesize_warning"] ) self.filesize_warning.hide() # Download history self.history = History( self.common, QtGui.QPixmap.fromImage( QtGui.QImage( GuiCommon.get_resource_path("images/share_icon_transparent.png") ) ), strings._("gui_website_mode_no_files"), strings._("gui_all_modes_history"), "website", ) self.history.in_progress_label.hide() self.history.completed_label.hide() self.history.hide() # Info label self.info_label = QtWidgets.QLabel() self.info_label.hide() # Delete all files button self.remove_all_button = QtWidgets.QPushButton( strings._("gui_file_selection_remove_all") ) self.remove_all_button.setFlat(True) self.remove_all_button.setStyleSheet( self.common.gui.css["share_delete_all_files_button"] ) self.remove_all_button.clicked.connect(self.delete_all) self.remove_all_button.hide() # Toggle history self.toggle_history = ToggleHistory( self.common, self, self.history, QtGui.QIcon(GuiCommon.get_resource_path(f"images/{self.common.gui.color_mode}_history_icon_toggle.svg")), QtGui.QIcon( GuiCommon.get_resource_path(f"images/{self.common.gui.color_mode}_history_icon_toggle_selected.svg") ), ) # Top bar top_bar_layout = QtWidgets.QHBoxLayout() top_bar_layout.addWidget(self.info_label) top_bar_layout.addStretch() top_bar_layout.addWidget(self.remove_all_button) top_bar_layout.addWidget(self.toggle_history) # Primary action layout self.primary_action_layout.addWidget(self.filesize_warning) self.primary_action.hide() self.update_primary_action() # Main layout self.main_layout = QtWidgets.QVBoxLayout() self.main_layout.addLayout(top_bar_layout) self.main_layout.addLayout(self.file_selection) self.main_layout.addWidget(self.primary_action, stretch=1) self.main_layout.addWidget(self.server_status) self.main_layout.addWidget(MinimumSizeWidget(700, 0)) # Column layout self.column_layout = QtWidgets.QHBoxLayout() self.column_layout.addLayout(self.main_layout) self.column_layout.addWidget(self.history, stretch=1) # Content layout self.content_layout.addLayout(self.column_layout) # Always start with focus on file selection self.file_selection.setFocus() def get_type(self): """ Returns the type of mode as a string (e.g. "share", "receive", etc.) """ return "website" def disable_csp_checkbox_clicked(self): """ Save disable CSP setting to the tab settings. Uncheck 'custom CSP' setting if disabling CSP altogether. """ self.settings.set( "website", "disable_csp", self.disable_csp_checkbox.isChecked() ) if self.disable_csp_checkbox.isChecked(): self.custom_csp_checkbox.setCheckState(QtCore.Qt.Unchecked) self.custom_csp_checkbox.setEnabled(False) else: self.custom_csp_checkbox.setEnabled(True) def custom_csp_checkbox_clicked(self): """ Uncheck 'disable CSP' setting if custom CSP is used. """ if self.custom_csp_checkbox.isChecked(): self.disable_csp_checkbox.setCheckState(QtCore.Qt.Unchecked) self.disable_csp_checkbox.setEnabled(False) self.settings.set( "website", "custom_csp", self.custom_csp ) else: self.disable_csp_checkbox.setEnabled(True) self.custom_csp.setText("") self.settings.set( "website", "custom_csp", None ) def custom_csp_editing_finished(self): if self.custom_csp.text().strip() == "": self.custom_csp.setText("") self.settings.set("website", "custom_csp", None) else: custom_csp = self.custom_csp.text() self.settings.set("website", "custom_csp", custom_csp) def get_stop_server_autostop_timer_text(self): """ Return the string to put on the stop server button, if there's an auto-stop timer """ return strings._("gui_share_stop_server_autostop_timer") def autostop_timer_finished_should_stop_server(self): """ The auto-stop timer expired, should we stop the server? Returns a bool """ self.server_status.stop_server() self.server_status_label.setText(strings._("close_on_autostop_timer")) return True def start_server_custom(self): """ Starting the server. """ # Reset web counters self.web.website_mode.visit_count = 0 # Hide and reset the downloads if we have previously shared self.reset_info_counters() self.remove_all_button.hide() def start_server_step2_custom(self): """ Step 2 in starting the server. Zipping up files. """ self.filenames = [] for index in range(self.file_selection.file_list.count()): self.filenames.append(self.file_selection.file_list.item(index).filename) # Continue self.starting_server_step3.emit() self.start_server_finished.emit() def start_server_step3_custom(self): """ Step 3 in starting the server. Display large filesize warning, if applicable. """ self.web.website_mode.set_file_info(self.filenames) self.success.emit() def start_server_error_custom(self): """ Start server error. """ if self._zip_progress_bar is not None: self.status_bar.removeWidget(self._zip_progress_bar) self._zip_progress_bar = None def stop_server_custom(self): """ Stop server. """ self.filesize_warning.hide() self.history.completed_count = 0 self.file_selection.file_list.adjustSize() self.remove_all_button.show() def cancel_server_custom(self): """ Log that the server has been cancelled """ self.common.log("WebsiteMode", "cancel_server") def handle_tor_broke_custom(self): """ Connection to Tor broke. """ self.primary_action.hide() def update_primary_action(self): self.common.log("WebsiteMode", "update_primary_action") # Show or hide primary action layout file_count = self.file_selection.file_list.count() if file_count > 0: self.primary_action.show() self.info_label.show() self.remove_all_button.show() # Update the file count in the info label total_size_bytes = 0 for index in range(self.file_selection.file_list.count()): item = self.file_selection.file_list.item(index) total_size_bytes += item.size_bytes total_size_readable = self.common.human_readable_filesize(total_size_bytes) if file_count > 1: self.info_label.setText( strings._("gui_file_info").format(file_count, total_size_readable) ) else: self.info_label.setText( strings._("gui_file_info_single").format( file_count, total_size_readable ) ) else: self.primary_action.hide() self.info_label.hide() self.remove_all_button.hide() def reset_info_counters(self): """ Set the info counters back to zero. """ self.history.reset() self.toggle_history.indicator_count = 0 self.toggle_history.update_indicator() def delete_all(self): """ Delete All button clicked """ self.file_selection.file_list.clear() self.file_selection.file_list.files_updated.emit() self.file_selection.file_list.setCurrentItem(None) @staticmethod def _compute_total_size(filenames): total_size = 0 for filename in filenames: if os.path.isfile(filename): total_size += os.path.getsize(filename) if os.path.isdir(filename): total_size += Common.dir_size(filename) return total_size onionshare-onionshare-26fcdc5/desktop/onionshare/tab/server_status.py000066400000000000000000000552271521174352300264050ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import textwrap from PySide6 import QtCore, QtWidgets, QtGui from PySide6.QtCore import Qt from .. import strings from ..widgets import Alert from ..widgets import QRCodeDialog from ..gui_common import GuiCommon class ServerStatus(QtWidgets.QWidget): """ The server status chunk of the GUI. """ server_started = QtCore.Signal() server_started_finished = QtCore.Signal() server_stopped = QtCore.Signal() server_canceled = QtCore.Signal() button_clicked = QtCore.Signal() url_copied = QtCore.Signal() client_auth_copied = QtCore.Signal() STATUS_STOPPED = 0 STATUS_WORKING = 1 STATUS_STARTED = 2 def __init__( self, common, qtapp, app, mode_settings, mode_settings_widget, file_selection=None, local_only=False, ): super(ServerStatus, self).__init__() self.common = common self.status = self.STATUS_STOPPED self.mode = None # Gets set in self.set_mode self.qtapp = qtapp self.app = app self.settings = mode_settings self.mode_settings_widget = mode_settings_widget self.web = None self.autostart_timer_datetime = None self.local_only = local_only self.resizeEvent(None) # Server layout self.server_button = QtWidgets.QPushButton() self.server_button.clicked.connect(self.server_button_clicked) # URL layout url_font = QtGui.QFontDatabase.systemFont(QtGui.QFontDatabase.FixedFont) self.url_description = QtWidgets.QLabel() self.url_description.setWordWrap(True) self.url_description.setMinimumHeight(50) # URL sharing instructions, above the URL and Copy Address/QR Code buttons self.url_instructions = QtWidgets.QLabel() self.url_instructions.setWordWrap(True) # The URL label itself self.url = QtWidgets.QLabel() self.url.setFont(url_font) self.url.setWordWrap(True) self.url.setMinimumSize(self.url.sizeHint()) self.url.setStyleSheet(self.common.gui.css["server_status_url"]) self.url.setTextInteractionFlags( Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard ) # Copy Onion Address button self.copy_url_button = QtWidgets.QPushButton(strings._("gui_copy_url")) self.copy_url_button.setStyleSheet( self.common.gui.css["server_status_url_buttons"] ) self.copy_url_button.clicked.connect(self.copy_url) # Onion Address QR code button self.show_url_qr_code_button = QtWidgets.QPushButton( strings._("gui_show_qr_code") ) self.show_url_qr_code_button.hide() self.show_url_qr_code_button.clicked.connect( self.show_url_qr_code_button_clicked ) self.show_url_qr_code_button.setStyleSheet( self.common.gui.css["server_status_url_buttons"] ) # Client Auth sharing instructions, above the # Copy Private Key/QR Code buttons self.client_auth_instructions = QtWidgets.QLabel() self.client_auth_instructions.setWordWrap(True) self.client_auth_instructions.setText(strings._("gui_client_auth_instructions")) # The private key itself self.private_key = QtWidgets.QLabel() self.private_key.setFont(url_font) self.private_key.setWordWrap(True) self.private_key.setMinimumSize(self.private_key.sizeHint()) self.private_key.setStyleSheet(self.common.gui.css["server_status_url"]) self.private_key.setTextInteractionFlags(Qt.NoTextInteraction) self.private_key_hidden = True # Copy ClientAuth button self.copy_client_auth_button = QtWidgets.QPushButton( strings._("gui_copy_client_auth") ) self.copy_client_auth_button.setStyleSheet( self.common.gui.css["server_status_url_buttons"] ) self.copy_client_auth_button.clicked.connect(self.copy_client_auth) # ClientAuth QR code button self.show_client_auth_qr_code_button = QtWidgets.QPushButton( strings._("gui_show_qr_code") ) self.show_client_auth_qr_code_button.hide() self.show_client_auth_qr_code_button.clicked.connect( self.show_client_auth_qr_code_button_clicked ) self.show_client_auth_qr_code_button.setStyleSheet( self.common.gui.css["server_status_url_buttons"] ) # ClientAuth reveal/hide toggle button self.client_auth_toggle_button = QtWidgets.QPushButton(strings._("gui_reveal")) self.client_auth_toggle_button.hide() self.client_auth_toggle_button.clicked.connect( self.client_auth_toggle_button_clicked ) self.client_auth_toggle_button.setStyleSheet( self.common.gui.css["server_status_url_buttons"] ) # URL instructions layout url_buttons_layout = QtWidgets.QHBoxLayout() url_buttons_layout.addWidget(self.copy_url_button) url_buttons_layout.addWidget(self.show_url_qr_code_button) url_buttons_layout.addStretch() url_layout = QtWidgets.QVBoxLayout() url_layout.addWidget(self.url_description) url_layout.addWidget(self.url_instructions) url_layout.addWidget(self.url) url_layout.addLayout(url_buttons_layout) # Private key instructions layout client_auth_buttons_layout = QtWidgets.QHBoxLayout() client_auth_buttons_layout.addWidget(self.copy_client_auth_button) client_auth_buttons_layout.addWidget(self.show_client_auth_qr_code_button) client_auth_buttons_layout.addWidget(self.client_auth_toggle_button) client_auth_buttons_layout.addStretch() client_auth_layout = QtWidgets.QVBoxLayout() client_auth_layout.addWidget(self.client_auth_instructions) client_auth_layout.addWidget(self.private_key) client_auth_layout.addLayout(client_auth_buttons_layout) # Add the widgets and URL/ClientAuth layouts # to the main ServerStatus layout button_layout = QtWidgets.QHBoxLayout() button_layout.addWidget(self.server_button) button_layout.addStretch() layout = QtWidgets.QVBoxLayout() layout.addLayout(button_layout) layout.addLayout(url_layout) layout.addLayout(client_auth_layout) self.setLayout(layout) def set_mode(self, share_mode, file_selection=None): """ The server status is in share mode. """ self.mode = share_mode if (self.mode == self.common.gui.MODE_SHARE) or ( self.mode == self.common.gui.MODE_WEBSITE ): self.file_selection = file_selection self.update() def resizeEvent(self, event): """ When the widget is resized, try and adjust the display of a v3 onion URL. """ try: # Wrap the URL label url_length = len(self.get_url()) if url_length > 60: width = self.frameGeometry().width() if width < 530: wrapped_onion_url = textwrap.fill(self.get_url(), 46) self.url.setText(wrapped_onion_url) else: self.url.setText(self.get_url()) except Exception: pass def show_url(self): """ Show the URL in the UI. """ self.url_description.show() info_image = GuiCommon.get_resource_path("images/info.png") if self.mode == self.common.gui.MODE_SHARE: if self.settings.get("general", "public"): self.url_description.setText( strings._("gui_share_url_public_description").format(info_image) ) else: self.url_description.setText( strings._("gui_share_url_description").format(info_image) ) elif self.mode == self.common.gui.MODE_WEBSITE: if self.settings.get("general", "public"): self.url_description.setText( strings._("gui_website_url_public_description").format(info_image) ) else: self.url_description.setText( strings._("gui_website_url_description").format(info_image) ) elif self.mode == self.common.gui.MODE_RECEIVE: if self.settings.get("general", "public"): self.url_description.setText( strings._("gui_receive_url_public_description").format(info_image) ) else: self.url_description.setText( strings._("gui_receive_url_description").format(info_image) ) elif self.mode == self.common.gui.MODE_CHAT: if self.settings.get("general", "public"): self.url_description.setText( strings._("gui_chat_url_public_description").format(info_image) ) else: self.url_description.setText( strings._("gui_chat_url_description").format(info_image) ) # Show a Tool Tip explaining the lifecycle of this URL if self.settings.get("persistent", "enabled"): if self.mode == self.common.gui.MODE_SHARE and self.settings.get( "share", "autostop_sharing" ): self.url_description.setToolTip( strings._("gui_url_label_onetime_and_persistent") ) else: self.url_description.setToolTip(strings._("gui_url_label_persistent")) else: if self.mode == self.common.gui.MODE_SHARE and self.settings.get( "share", "autostop_sharing" ): self.url_description.setToolTip(strings._("gui_url_label_onetime")) else: self.url_description.setToolTip(strings._("gui_url_label_stay_open")) if self.settings.get("general", "public"): self.url_instructions.setText(strings._("gui_url_instructions_public_mode")) else: self.url_instructions.setText(strings._("gui_url_instructions")) self.url_instructions.show() self.url.setText(self.get_url()) self.url.show() self.copy_url_button.show() self.show_url_qr_code_button.show() if self.settings.get("general", "public"): self.client_auth_instructions.hide() self.private_key.hide() self.copy_client_auth_button.hide() self.show_client_auth_qr_code_button.hide() else: self.client_auth_instructions.show() if self.private_key_hidden: self.private_key.setText("*" * len(self.app.auth_string)) self.private_key.setTextInteractionFlags(Qt.NoTextInteraction) else: self.private_key.setText(self.app.auth_string) self.private_key.setTextInteractionFlags( Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard ) self.private_key.show() self.copy_client_auth_button.show() self.show_client_auth_qr_code_button.show() self.client_auth_toggle_button.show() def update(self): """ Update the GUI elements based on the current state. """ self.common.log("ServerStatus", "update") # Set the URL fields if self.status == self.STATUS_STARTED: # The backend Onion may have saved new settings, such as the private key. # Reload the settings before saving new ones. self.common.settings.load() self.show_url() if self.settings.get("general", "autostop_timer"): self.server_button.setToolTip( strings._("gui_stop_server_autostop_timer_tooltip").format( self.mode_settings_widget.autostop_timer_widget.dateTime().toString( "h:mm AP, MMMM dd, yyyy" ) ) ) else: self.url_description.hide() self.url_instructions.hide() self.url.hide() self.copy_url_button.hide() self.show_url_qr_code_button.hide() self.private_key.hide() self.client_auth_instructions.hide() self.copy_client_auth_button.hide() self.show_client_auth_qr_code_button.hide() self.client_auth_toggle_button.hide() self.mode_settings_widget.update_ui() # Button if ( self.mode == self.common.gui.MODE_SHARE and self.file_selection.get_num_files() == 0 ): self.server_button.hide() elif ( self.mode == self.common.gui.MODE_WEBSITE and self.file_selection.get_num_files() == 0 ): self.server_button.hide() else: self.server_button.show() if self.status == self.STATUS_STOPPED: self.server_button.setStyleSheet( self.common.gui.css["server_status_button_stopped"] ) self.server_button.setEnabled(True) if self.mode == self.common.gui.MODE_SHARE: self.server_button.setText(strings._("gui_share_start_server")) elif self.mode == self.common.gui.MODE_WEBSITE: self.server_button.setText(strings._("gui_share_start_server")) elif self.mode == self.common.gui.MODE_CHAT: self.server_button.setText(strings._("gui_chat_start_server")) else: self.server_button.setText(strings._("gui_receive_start_server")) self.server_button.setToolTip("") elif self.status == self.STATUS_STARTED: self.server_button.setStyleSheet( self.common.gui.css["server_status_button_started"] ) self.server_button.setEnabled(True) if self.mode == self.common.gui.MODE_SHARE: self.server_button.setText(strings._("gui_share_stop_server")) elif self.mode == self.common.gui.MODE_WEBSITE: self.server_button.setText(strings._("gui_share_stop_server")) elif self.mode == self.common.gui.MODE_CHAT: self.server_button.setText(strings._("gui_chat_stop_server")) else: self.server_button.setText(strings._("gui_receive_stop_server")) elif self.status == self.STATUS_WORKING: self.server_button.setStyleSheet( self.common.gui.css["server_status_button_working"] ) self.server_button.setEnabled(True) if self.settings.get("general", "autostart_timer"): self.server_button.setToolTip( strings._("gui_start_server_autostart_timer_tooltip").format( self.mode_settings_widget.autostart_timer_widget.dateTime().toString( "h:mm AP, MMMM dd, yyyy" ) ) ) else: if self.common.platform == "Windows": self.server_button.setText(strings._("gui_please_wait")) else: self.server_button.setText( strings._("gui_please_wait_no_button") ) else: self.server_button.setStyleSheet( self.common.gui.css["server_status_button_working"] ) self.server_button.setEnabled(False) self.server_button.setText(strings._("gui_please_wait_no_button")) def server_button_clicked(self): """ Toggle starting or stopping the server. """ if self.status == self.STATUS_STOPPED: can_start = True if self.settings.get("general", "autostart_timer"): if self.local_only: self.autostart_timer_datetime = ( self.mode_settings_widget.autostart_timer_widget.dateTime().toPython() ) else: self.autostart_timer_datetime = ( self.mode_settings_widget.autostart_timer_widget.dateTime() .toPython() .replace(second=0, microsecond=0) ) # If the timer has actually passed already before the user hit Start, refuse to start the server. if ( QtCore.QDateTime.currentDateTime().toPython() > self.autostart_timer_datetime ): can_start = False Alert( self.common, strings._("gui_server_autostart_timer_expired"), QtWidgets.QMessageBox.Warning, ) if self.settings.get("general", "autostop_timer"): if self.local_only: self.autostop_timer_datetime = ( self.mode_settings_widget.autostop_timer_widget.dateTime().toPython() ) else: # Get the timer chosen, stripped of its seconds. This prevents confusion if the share stops at (say) 37 seconds past the minute chosen self.autostop_timer_datetime = ( self.mode_settings_widget.autostop_timer_widget.dateTime() .toPython() .replace(second=0, microsecond=0) ) # If the timer has actually passed already before the user hit Start, refuse to start the server. if ( QtCore.QDateTime.currentDateTime().toPython() > self.autostop_timer_datetime ): can_start = False Alert( self.common, strings._("gui_server_autostop_timer_expired"), QtWidgets.QMessageBox.Warning, ) if self.settings.get("general", "autostart_timer"): if self.autostop_timer_datetime <= self.autostart_timer_datetime: Alert( self.common, strings._( "gui_autostop_timer_cant_be_earlier_than_autostart_timer" ), QtWidgets.QMessageBox.Warning, ) can_start = False if can_start: self.start_server() elif self.status == self.STATUS_STARTED: self.stop_server() elif self.status == self.STATUS_WORKING and ( self.common.platform == "Windows" or self.settings.get("general", "autostart_timer") ): self.cancel_server() self.button_clicked.emit() def show_url_qr_code_button_clicked(self): """ Show a QR code of the onion URL. """ self.qr_code_dialog = QRCodeDialog( self.common, strings._("gui_qr_label_url_title"), self.get_url() ) def show_client_auth_qr_code_button_clicked(self): """ Show a QR code of the private key """ self.qr_code_dialog = QRCodeDialog( self.common, strings._("gui_qr_label_auth_string_title"), self.app.auth_string, ) def client_auth_toggle_button_clicked(self): """ ClientAuth reveal/hide toggle button clicked """ if self.private_key_hidden: self.private_key_hidden = False self.client_auth_toggle_button.setText(strings._("gui_hide")) else: self.private_key_hidden = True self.client_auth_toggle_button.setText(strings._("gui_reveal")) self.show_url() def start_server(self): """ Start the server. """ self.status = self.STATUS_WORKING self.update() self.server_started.emit() def start_server_finished(self): """ The server has finished starting. """ self.status = self.STATUS_STARTED # self.copy_url() self.update() self.server_started_finished.emit() def stop_server(self): """ Stop the server. """ self.status = self.STATUS_WORKING self.mode_settings_widget.autostart_timer_reset() self.mode_settings_widget.autostop_timer_reset() self.update() self.server_stopped.emit() def cancel_server(self): """ Cancel the server. """ self.common.log( "ServerStatus", "cancel_server", "Canceling the server mid-startup" ) self.status = self.STATUS_WORKING self.mode_settings_widget.autostart_timer_reset() self.mode_settings_widget.autostop_timer_reset() self.update() self.server_canceled.emit() def stop_server_finished(self): """ The server has finished stopping. """ self.status = self.STATUS_STOPPED self.update() def copy_url(self): """ Copy the onionshare URL to the clipboard. """ clipboard = self.qtapp.clipboard() clipboard.setText(self.get_url()) self.url_copied.emit() def copy_client_auth(self): """ Copy the ClientAuth private key line to the clipboard. """ clipboard = self.qtapp.clipboard() clipboard.setText(self.app.auth_string) self.client_auth_copied.emit() def get_url(self): """ Returns the OnionShare URL. """ url = f"http://{self.app.onion_host}" return url onionshare-onionshare-26fcdc5/desktop/onionshare/tab/tab.py000066400000000000000000000654021521174352300242360ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import queue from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.onionshare import OnionShare from onionshare_cli.web import Web from onionshare_cli.mode_settings import ModeSettings from .mode.share_mode import ShareMode from .mode.receive_mode import ReceiveMode from .mode.website_mode import WebsiteMode from .mode.chat_mode import ChatMode from .server_status import ServerStatus from .. import strings from ..gui_common import GuiCommon from ..widgets import Alert class NewTabButton(QtWidgets.QPushButton): def __init__(self, common, image_filename, title, text, shortcut): super(NewTabButton, self).__init__() self.common = common self.setFixedSize(280, 280) # Keyboard shortcut, using the first letter of the mode sequence = QtGui.QKeySequence(QtCore.Qt.CTRL | shortcut) self.setShortcut(sequence) self.setAccessibleName(title) # Image self.image_label = QtWidgets.QLabel(parent=self) self.image_label.setPixmap( QtGui.QPixmap.fromImage( QtGui.QImage(GuiCommon.get_resource_path(image_filename)) ) ) self.image_label.setAlignment(QtCore.Qt.AlignCenter) self.image_label.setStyleSheet(self.common.gui.css["new_tab_button_image"]) self.image_label.setGeometry(0, 0, self.width(), 190) self.image_label.show() # Title self.title_label = QtWidgets.QLabel(title, parent=self) self.title_label.setWordWrap(True) self.title_label.setAlignment(QtCore.Qt.AlignCenter) self.title_label.setStyleSheet(self.common.gui.css["new_tab_title_text"]) if self.title_label.sizeHint().width() >= 250: self.title_label.setGeometry( (self.width() - 250) / 2, self.height() - 120, 250, 60 ) else: self.title_label.setGeometry( (self.width() - 250) / 2, self.height() - 100, 250, 30 ) self.title_label.show() # Text self.text_label = QtWidgets.QLabel(text, parent=self) self.text_label.setAlignment(QtCore.Qt.AlignCenter) self.text_label.setStyleSheet(self.common.gui.css["new_tab_button_text"]) self.text_label.setGeometry( (self.width() - 200) / 2, self.height() - 50, 200, 30 ) self.text_label.show() class Tab(QtWidgets.QWidget): """ A GUI tab, you know, sort of like in a web browser """ change_title = QtCore.Signal(int, str) change_icon = QtCore.Signal(int, str) change_persistent = QtCore.Signal(int, bool) def __init__( self, common, tab_id, system_tray, status_bar, filenames=None, ): super(Tab, self).__init__() self.common = common self.common.log("Tab", "__init__") self.tab_id = tab_id self.system_tray = system_tray self.status_bar = status_bar self.filenames = filenames self.mode = None # Start the OnionShare app self.app = OnionShare(common, self.common.gui.onion, self.common.gui.local_only) # An invisible widget, used for hiding the persistent tab icon self.invisible_widget = QtWidgets.QWidget() self.invisible_widget.setFixedSize(0, 0) # Onionshare logo self.image_label = QtWidgets.QLabel() self.image_label.setPixmap( QtGui.QPixmap.fromImage( QtGui.QImage( GuiCommon.get_resource_path( "images/{}_logo_text.png".format(self.common.gui.color_mode) ) ) ) ) self.image_label.setFixedSize(180, 40) image_layout = QtWidgets.QVBoxLayout() image_layout.addWidget(self.image_label) image_layout.addStretch() self.image = QtWidgets.QWidget() self.image.setLayout(image_layout) # New tab buttons self.share_button = NewTabButton( self.common, "images/{}_mode_new_tab_share.png".format(self.common.gui.color_mode), strings._("gui_new_tab_share_button"), strings._("gui_main_page_share_button"), QtCore.Qt.Key_S, ) self.share_button.clicked.connect(self.share_mode_clicked) self.receive_button = NewTabButton( self.common, "images/{}_mode_new_tab_receive.png".format(self.common.gui.color_mode), strings._("gui_new_tab_receive_button"), strings._("gui_main_page_receive_button"), QtCore.Qt.Key_R, ) self.receive_button.clicked.connect(self.receive_mode_clicked) self.website_button = NewTabButton( self.common, "images/{}_mode_new_tab_website.png".format(self.common.gui.color_mode), strings._("gui_new_tab_website_button"), strings._("gui_main_page_website_button"), QtCore.Qt.Key_W, ) self.website_button.clicked.connect(self.website_mode_clicked) self.chat_button = NewTabButton( self.common, "images/{}_mode_new_tab_chat.png".format(self.common.gui.color_mode), strings._("gui_new_tab_chat_button"), strings._("gui_main_page_chat_button"), QtCore.Qt.Key_C, ) self.chat_button.clicked.connect(self.chat_mode_clicked) new_tab_top_layout = QtWidgets.QHBoxLayout() new_tab_top_layout.addStretch() new_tab_top_layout.addWidget(self.share_button) new_tab_top_layout.addWidget(self.receive_button) new_tab_top_layout.addStretch() new_tab_bottom_layout = QtWidgets.QHBoxLayout() new_tab_bottom_layout.addStretch() new_tab_bottom_layout.addWidget(self.website_button) new_tab_bottom_layout.addWidget(self.chat_button) new_tab_bottom_layout.addStretch() new_tab_layout = QtWidgets.QVBoxLayout() new_tab_layout.addStretch() new_tab_layout.addLayout(new_tab_top_layout) new_tab_layout.addLayout(new_tab_bottom_layout) new_tab_layout.addStretch() new_tab_img_layout = QtWidgets.QHBoxLayout() new_tab_img_layout.addWidget(self.image) new_tab_img_layout.addStretch(1) new_tab_img_layout.addLayout(new_tab_layout) new_tab_img_layout.addStretch(2) self.new_tab = QtWidgets.QWidget() self.new_tab.setLayout(new_tab_img_layout) self.new_tab.show() # Layout self.layout = QtWidgets.QVBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.layout.addWidget(self.new_tab) self.setLayout(self.layout) # Create the timer self.timer = QtCore.QTimer() self.timer.timeout.connect(self.timer_callback) # Persistent image self.persistent_image_label = QtWidgets.QLabel() image = QtGui.QImage( GuiCommon.get_resource_path( f"images/{self.common.gui.color_mode}_persistent_enabled.svg" ) ) scaled_image = image.scaledToHeight(15, QtCore.Qt.SmoothTransformation) self.persistent_image_label.setPixmap(QtGui.QPixmap.fromImage(scaled_image)) # Create the close warning dialog -- the dialog widget needs to be in the constructor # in order to test it self.close_dialog = QtWidgets.QMessageBox() self.close_dialog.setWindowTitle(strings._("gui_close_tab_warning_title")) self.close_dialog.setIcon(QtWidgets.QMessageBox.Critical) self.close_dialog.accept_button = self.close_dialog.addButton( strings._("gui_close_tab_warning_close"), QtWidgets.QMessageBox.AcceptRole ) self.close_dialog.reject_button = self.close_dialog.addButton( strings._("gui_close_tab_warning_cancel"), QtWidgets.QMessageBox.RejectRole ) self.close_dialog.setDefaultButton(self.close_dialog.reject_button) def init(self, mode_settings=None): if mode_settings: # Load this tab self.settings = mode_settings mode = self.settings.get("persistent", "mode") if mode == "share": self.filenames = self.settings.get("share", "filenames") self.share_mode_clicked() elif mode == "receive": self.receive_mode_clicked() elif mode == "website": self.filenames = self.settings.get("website", "filenames") self.website_mode_clicked() elif mode == "chat": self.chat_mode_clicked() else: # This is a new tab self.settings = ModeSettings(self.common) def share_mode_clicked(self): self.common.log("Tab", "share_mode_clicked") self.mode = self.common.gui.MODE_SHARE self.new_tab.hide() self.share_mode = ShareMode(self) self.share_mode.change_persistent.connect(self.change_persistent) self.layout.addWidget(self.share_mode) self.share_mode.show() self.share_mode.init() self.share_mode.server_status.server_started.connect( self.update_server_status_indicator ) self.share_mode.server_status.server_stopped.connect( self.update_server_status_indicator ) self.share_mode.start_server_finished.connect( self.update_server_status_indicator ) self.share_mode.stop_server_finished.connect( self.update_server_status_indicator ) self.share_mode.stop_server_finished.connect(self.stop_server_finished) self.share_mode.start_server_finished.connect(self.clear_message) self.share_mode.server_status.button_clicked.connect(self.clear_message) self.share_mode.server_status.url_copied.connect(self.copy_url) self.share_mode.server_status.client_auth_copied.connect(self.copy_client_auth) self.change_title.emit(self.tab_id, strings._("gui_tab_name_share")) self.update_server_status_indicator() self.timer.start(500) def receive_mode_clicked(self): self.common.log("Tab", "receive_mode_clicked") self.mode = self.common.gui.MODE_RECEIVE self.new_tab.hide() self.receive_mode = ReceiveMode(self) self.receive_mode.change_persistent.connect(self.change_persistent) self.layout.addWidget(self.receive_mode) self.receive_mode.show() self.receive_mode.init() self.receive_mode.server_status.server_started.connect( self.update_server_status_indicator ) self.receive_mode.server_status.server_stopped.connect( self.update_server_status_indicator ) self.receive_mode.start_server_finished.connect( self.update_server_status_indicator ) self.receive_mode.stop_server_finished.connect( self.update_server_status_indicator ) self.receive_mode.stop_server_finished.connect(self.stop_server_finished) self.receive_mode.start_server_finished.connect(self.clear_message) self.receive_mode.server_status.button_clicked.connect(self.clear_message) self.receive_mode.server_status.url_copied.connect(self.copy_url) self.receive_mode.server_status.client_auth_copied.connect( self.copy_client_auth ) self.change_title.emit(self.tab_id, strings._("gui_tab_name_receive")) self.update_server_status_indicator() self.timer.start(500) def website_mode_clicked(self): self.common.log("Tab", "website_mode_clicked") self.mode = self.common.gui.MODE_WEBSITE self.new_tab.hide() self.website_mode = WebsiteMode(self) self.website_mode.change_persistent.connect(self.change_persistent) self.layout.addWidget(self.website_mode) self.website_mode.show() self.website_mode.init() self.website_mode.server_status.server_started.connect( self.update_server_status_indicator ) self.website_mode.server_status.server_stopped.connect( self.update_server_status_indicator ) self.website_mode.start_server_finished.connect( self.update_server_status_indicator ) self.website_mode.stop_server_finished.connect( self.update_server_status_indicator ) self.website_mode.stop_server_finished.connect(self.stop_server_finished) self.website_mode.start_server_finished.connect(self.clear_message) self.website_mode.server_status.button_clicked.connect(self.clear_message) self.website_mode.server_status.url_copied.connect(self.copy_url) self.website_mode.server_status.client_auth_copied.connect( self.copy_client_auth ) self.change_title.emit(self.tab_id, strings._("gui_tab_name_website")) self.update_server_status_indicator() self.timer.start(500) def chat_mode_clicked(self): self.common.log("Tab", "chat_mode_clicked") self.mode = self.common.gui.MODE_CHAT self.new_tab.hide() self.chat_mode = ChatMode(self) self.chat_mode.change_persistent.connect(self.change_persistent) self.layout.addWidget(self.chat_mode) self.chat_mode.show() self.chat_mode.init() self.chat_mode.server_status.server_started.connect( self.update_server_status_indicator ) self.chat_mode.server_status.server_stopped.connect( self.update_server_status_indicator ) self.chat_mode.start_server_finished.connect( self.update_server_status_indicator ) self.chat_mode.stop_server_finished.connect(self.update_server_status_indicator) self.chat_mode.stop_server_finished.connect(self.stop_server_finished) self.chat_mode.start_server_finished.connect(self.clear_message) self.chat_mode.server_status.button_clicked.connect(self.clear_message) self.chat_mode.server_status.url_copied.connect(self.copy_url) self.chat_mode.server_status.client_auth_copied.connect(self.copy_client_auth) self.change_title.emit(self.tab_id, strings._("gui_tab_name_chat")) self.update_server_status_indicator() self.timer.start(500) def update_server_status_indicator(self): # Set the status image if self.mode == self.common.gui.MODE_SHARE: # Share mode if self.share_mode.server_status.status == ServerStatus.STATUS_STOPPED: self.set_server_status_indicator_stopped( strings._("gui_status_indicator_share_stopped") ) elif self.share_mode.server_status.status == ServerStatus.STATUS_WORKING: if self.settings.get("general", "autostart_timer"): self.set_server_status_indicator_working( strings._("gui_status_indicator_share_scheduled") ) else: self.set_server_status_indicator_working( strings._("gui_status_indicator_share_working") ) elif self.share_mode.server_status.status == ServerStatus.STATUS_STARTED: self.set_server_status_indicator_started( strings._("gui_status_indicator_share_started") ) elif self.mode == self.common.gui.MODE_WEBSITE: # Website mode if self.website_mode.server_status.status == ServerStatus.STATUS_STOPPED: self.set_server_status_indicator_stopped( strings._("gui_status_indicator_share_stopped") ) elif self.website_mode.server_status.status == ServerStatus.STATUS_WORKING: if self.website_mode.server_status.autostart_timer_datetime: self.set_server_status_indicator_working( strings._("gui_status_indicator_share_scheduled") ) else: self.set_server_status_indicator_working( strings._("gui_status_indicator_share_working") ) elif self.website_mode.server_status.status == ServerStatus.STATUS_STARTED: self.set_server_status_indicator_started( strings._("gui_status_indicator_share_started") ) elif self.mode == self.common.gui.MODE_RECEIVE: # Receive mode if self.receive_mode.server_status.status == ServerStatus.STATUS_STOPPED: self.set_server_status_indicator_stopped( strings._("gui_status_indicator_receive_stopped") ) elif self.receive_mode.server_status.status == ServerStatus.STATUS_WORKING: if self.settings.get("general", "autostart_timer"): self.set_server_status_indicator_working( strings._("gui_status_indicator_receive_scheduled") ) else: self.set_server_status_indicator_working( strings._("gui_status_indicator_receive_working") ) elif self.receive_mode.server_status.status == ServerStatus.STATUS_STARTED: self.set_server_status_indicator_started( strings._("gui_status_indicator_receive_started") ) elif self.mode == self.common.gui.MODE_CHAT: # Chat mode if self.chat_mode.server_status.status == ServerStatus.STATUS_STOPPED: self.set_server_status_indicator_stopped( strings._("gui_status_indicator_chat_stopped") ) elif self.chat_mode.server_status.status == ServerStatus.STATUS_WORKING: if self.settings.get("general", "autostart_timer"): self.set_server_status_indicator_working( strings._("gui_status_indicator_chat_scheduled") ) else: self.set_server_status_indicator_working( strings._("gui_status_indicator_chat_working") ) elif self.chat_mode.server_status.status == ServerStatus.STATUS_STARTED: self.set_server_status_indicator_started( strings._("gui_status_indicator_chat_started") ) def set_server_status_indicator_stopped(self, label_text): self.change_icon.emit( self.tab_id, f"images/{self.common.gui.color_mode}_server_stopped.svg" ) image = self.status_bar.server_status_image_stopped scaled_image = image.scaledToHeight(15, QtCore.Qt.SmoothTransformation) self.status_bar.server_status_image_label.setPixmap( QtGui.QPixmap.fromImage(scaled_image) ) self.status_bar.server_status_label.setText(label_text) def set_server_status_indicator_working(self, label_text): self.change_icon.emit(self.tab_id, "images/server_working.svg") image = self.status_bar.server_status_image_working scaled_image = image.scaledToHeight(15, QtCore.Qt.SmoothTransformation) self.status_bar.server_status_image_label.setPixmap( QtGui.QPixmap.fromImage(scaled_image) ) self.status_bar.server_status_label.setText(label_text) def set_server_status_indicator_started(self, label_text): self.change_icon.emit(self.tab_id, "images/server_started.svg") image = self.status_bar.server_status_image_started scaled_image = image.scaledToHeight(15, QtCore.Qt.SmoothTransformation) self.status_bar.server_status_image_label.setPixmap( QtGui.QPixmap.fromImage(scaled_image) ) self.status_bar.server_status_label.setText(label_text) def stop_server_finished(self): # When the server stopped, cleanup the ephemeral onion service self.get_mode().app.stop_onion_service(self.settings) def timer_callback(self): """ Check for messages communicated from the web app, and update the GUI accordingly. Also, call ShareMode and ReceiveMode's timer_callbacks. """ self.update() if not self.common.gui.local_only: # Have we lost connection to Tor somehow? if not self.common.gui.onion.is_authenticated(): self.timer.stop() self.status_bar.showMessage(strings._("gui_tor_connection_lost")) self.system_tray.showMessage( strings._("gui_tor_connection_lost"), strings._("gui_tor_connection_error_settings"), ) self.get_mode().handle_tor_broke() # Process events from the web object mode = self.get_mode() events = [] done = False while not done: try: r = mode.web.q.get(False) events.append(r) except queue.Empty: done = True for event in events: if event["type"] == Web.REQUEST_LOAD: mode.handle_request_load(event) elif event["type"] == Web.REQUEST_STARTED: mode.handle_request_started(event) elif event["type"] == Web.REQUEST_PROGRESS: mode.handle_request_progress(event) elif event["type"] == Web.REQUEST_CANCELED: mode.handle_request_canceled(event) elif event["type"] == Web.REQUEST_UPLOAD_INCLUDES_MESSAGE: mode.handle_request_upload_includes_message(event) elif event["type"] == Web.REQUEST_UPLOAD_FILE_RENAMED: mode.handle_request_upload_file_renamed(event) elif event["type"] == Web.REQUEST_UPLOAD_SET_DIR: mode.handle_request_upload_set_dir(event) elif event["type"] == Web.REQUEST_UPLOAD_FINISHED: mode.handle_request_upload_finished(event) elif event["type"] == Web.REQUEST_UPLOAD_CANCELED: mode.handle_request_upload_canceled(event) elif event["type"] == Web.REQUEST_INDIVIDUAL_FILE_STARTED: mode.handle_request_individual_file_started(event) elif event["type"] == Web.REQUEST_INDIVIDUAL_FILE_PROGRESS: mode.handle_request_individual_file_progress(event) elif event["type"] == Web.REQUEST_INDIVIDUAL_FILE_CANCELED: mode.handle_request_individual_file_canceled(event) if event["type"] == Web.REQUEST_ERROR_DATA_DIR_CANNOT_CREATE: Alert( self.common, strings._("error_cannot_create_data_dir").format( event["data"]["receive_mode_dir"] ), ) if event["type"] == Web.REQUEST_OTHER: if ( event["path"] != "/favicon.ico" and event["path"] != f"/{mode.web.shutdown_password}/shutdown" ): self.status_bar.showMessage( f"{strings._('other_page_loaded')}: {event['path']}" ) mode.timer_callback() def copy_url(self): """ When the URL gets copied to the clipboard, display this in the status bar. """ self.common.log("Tab", "copy_url") self.system_tray.showMessage( strings._("gui_copied_url_title"), strings._("gui_copied_url") ) def copy_client_auth(self): """ When the onion service's ClientAuth private key gets copied to the clipboard, display this in the status bar. """ self.common.log("Tab", "copy_client_auth") self.system_tray.showMessage( strings._("gui_copied_client_auth_title"), strings._("gui_copied_client_auth"), ) def clear_message(self): """ Clear messages from the status bar. """ self.status_bar.clearMessage() def get_mode(self): if self.mode: if self.mode == self.common.gui.MODE_SHARE: return self.share_mode elif self.mode == self.common.gui.MODE_RECEIVE: return self.receive_mode elif self.mode == self.common.gui.MODE_CHAT: return self.chat_mode else: return self.website_mode else: return None def close_tab(self): self.common.log("Tab", "close_tab") if self.mode is None: return True if self.settings.get("persistent", "enabled"): dialog_text = strings._("gui_close_tab_warning_persistent_description") else: server_status = self.get_mode().server_status if server_status.status == server_status.STATUS_STOPPED: return True else: if self.mode == self.common.gui.MODE_SHARE: dialog_text = strings._("gui_close_tab_warning_share_description") elif self.mode == self.common.gui.MODE_RECEIVE: dialog_text = strings._("gui_close_tab_warning_receive_description") elif self.mode == self.common.gui.MODE_CHAT: dialog_text = strings._("gui_close_tab_warning_chat_description") else: dialog_text = strings._("gui_close_tab_warning_website_description") # Open the warning dialog self.common.log("Tab", "close_tab, opening warning dialog") self.close_dialog.setText(dialog_text) self.close_dialog.exec() # Close if self.close_dialog.clickedButton() == self.close_dialog.accept_button: return True # Cancel else: self.common.log("Tab", "close_tab", "cancel, keeping tab open") return False def cleanup(self): self.common.log("Tab", "cleanup", f"tab_id={self.tab_id}") if self.get_mode(): if self.get_mode().web_thread: self.get_mode().web.stop(self.get_mode().app.port) self.get_mode().web_thread.quit() self.get_mode().web_thread.wait() self.get_mode().web.cleanup() onionshare-onionshare-26fcdc5/desktop/onionshare/tab_widget.py000066400000000000000000000436661521174352300250430ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.mode_settings import ModeSettings from . import strings from .tab import Tab from .threads import EventHandlerThread from .gui_common import GuiCommon from .settings_parent_tab import SettingsParentTab from .connection_tab import AutoConnectTab class TabWidget(QtWidgets.QTabWidget): """ A custom tab widget, that has a "+" button for adding new tabs """ bring_to_front = QtCore.Signal() def __init__(self, common, system_tray, status_bar, window): super(TabWidget, self).__init__() self.common = common self.common.log("TabWidget", "__init__") self.system_tray = system_tray self.status_bar = status_bar self.window = window # Keep track of tabs in a dictionary that maps tab_id to tab. # Each tab has a unique, auto-incremented id (tab_id). This is different than the # tab's index, which changes as tabs are re-arranged. self.tabs = {} self.current_tab_id = 0 # Each tab has a unique id self.tor_settings_tab = None # Define the new tab button self.new_tab_button = QtWidgets.QPushButton("+", parent=self) self.new_tab_button.setShortcut(QtCore.Qt.CTRL | QtCore.Qt.Key_T) self.new_tab_button.setFlat(True) self.new_tab_button.setFixedSize(40, 30) self.new_tab_button.clicked.connect(self.new_tab_clicked) self.new_tab_button.setStyleSheet( self.common.gui.css["tab_widget_new_tab_button"] ) self.new_tab_button.setToolTip(strings._("gui_new_tab_tooltip")) # Use a custom tab bar tab_bar = TabBar() tab_bar.move_new_tab_button.connect(self.move_new_tab_button) tab_bar.currentChanged.connect(self.tab_changed) self.setTabBar(tab_bar) # Set up the tab widget self.setMovable(True) self.setTabsClosable(True) self.setUsesScrollButtons(True) self.setDocumentMode(True) self.setStyleSheet(self.common.gui.css["tab_widget"]) self.tabCloseRequested.connect(self.close_tab) self.move_new_tab_button() # Watch the events file for changes self.event_handler_t = EventHandlerThread(common) self.event_handler_t.new_tab.connect(self.add_tab) self.event_handler_t.new_share_tab.connect(self.new_share_tab) self.event_handler_t.start() def cleanup(self): self.common.log("TabWidget", "cleanup") # Stop the event thread self.event_handler_t.should_quit = True self.event_handler_t.quit() self.event_handler_t.wait(50) # Clean up each tab for tab_id in self.tabs: if not ( type(self.tabs[tab_id]) is SettingsParentTab or type(self.tabs[tab_id]) is AutoConnectTab ): self.tabs[tab_id].cleanup() def move_new_tab_button(self): # Find the width of all tabs tabs_width = sum( [self.tabBar().tabRect(i).width() for i in range(self.count())] ) # The current position of the new tab button pos = self.new_tab_button.pos() # If there are so many tabs it scrolls, move the button to the left of the scroll buttons if tabs_width > self.width(): pos.setX(self.width() - 65) else: # Otherwise move the button to the right of the tabs pos.setX(self.tabBar().sizeHint().width()) self.new_tab_button.move(pos) self.new_tab_button.raise_() def tab_changed(self): # Active tab was changed tab = self.widget(self.currentIndex()) if not tab: self.common.log( "TabWidget", "tab_changed", f"tab at index {self.currentIndex()} does not exist", ) return tab_id = tab.tab_id self.common.log("TabWidget", "tab_changed", f"Tab was changed to {tab_id}") # If it's Settings or Tor Settings, ignore if ( type(self.tabs[tab_id]) is SettingsParentTab or type(self.tabs[tab_id]) is AutoConnectTab ): # Blank the server status indicator self.status_bar.server_status_image_label.clear() self.status_bar.server_status_label.clear() return try: mode = self.tabs[tab_id].get_mode() if mode: # Update the server status indicator to reflect that of the current tab self.tabs[tab_id].update_server_status_indicator() else: # If this tab doesn't have a mode set yet, blank the server status indicator self.status_bar.server_status_image_label.clear() self.status_bar.server_status_label.clear() except KeyError: # When all current tabs are closed, index briefly drops to -1 before resetting to 0 # which will otherwise trigger a KeyError on tab.get_mode() above. pass def new_tab_clicked(self): # if already connected to tor or local only, create a new tab # Else open the initial connection tab if self.common.gui.local_only or self.common.gui.onion.is_authenticated(): self.add_tab() else: self.open_connection_tab() def check_autoconnect_tab(self): tab = self.widget(self.currentIndex()) if not tab: self.common.log( "TabWidget", "check_autoconnect", f"tab at index {self.currentIndex()} does not exist", ) return tab_id = tab.tab_id self.common.log("TabWidget", "check_autoconnect", f"Tab to check autoconnect: {tab_id}") if type(self.tabs[tab_id]) is AutoConnectTab: self.tabs[tab_id].check_autoconnect() def load_tab(self, mode_settings_id): # Load the tab's mode settings mode_settings = ModeSettings(self.common, id=mode_settings_id) self.add_tab(mode_settings) def new_share_tab(self, filenames): mode_settings = ModeSettings(self.common) mode_settings.set("persistent", "mode", "share") mode_settings.set("share", "filenames", filenames) self.add_tab(mode_settings) def add_tab(self, mode_settings=None): self.common.log("TabWidget", "add_tab", f"mode_settings: {mode_settings}") tab = Tab(self.common, self.current_tab_id, self.system_tray, self.status_bar) tab.change_title.connect(self.change_title) tab.change_icon.connect(self.change_icon) tab.change_persistent.connect(self.change_persistent) self.tabs[self.current_tab_id] = tab self.current_tab_id += 1 index = self.addTab(tab, strings._("gui_new_tab")) self.setCurrentIndex(index) sequence = QtGui.QKeySequence(QtCore.Qt.CTRL | QtCore.Qt.Key_X) close_shortcut = QtGui.QShortcut(sequence, tab) close_shortcut.activated.connect(lambda: self.close_tab(index)) tab.init(mode_settings) # Make sure the title is set if tab.get_mode(): tab.get_mode().mode_settings_widget.title_editing_finished() # If it's persistent, set the persistent image in the tab self.change_persistent(tab.tab_id, tab.settings.get("persistent", "enabled")) # Bring the window to front, in case this is being added by an event self.bring_to_front.emit() def open_connection_tab(self): self.common.log("TabWidget", "open_connection_tab") # See if a connection tab is already open, and if so switch to it for tab_id in self.tabs: if type(self.tabs[tab_id]) is AutoConnectTab: self.setCurrentIndex(self.indexOf(self.tabs[tab_id])) return connection_tab = AutoConnectTab( self.common, self.current_tab_id, self.status_bar, self.window, parent=self ) connection_tab.close_this_tab.connect(self.close_connection_tab) connection_tab.tor_is_connected.connect(self.tor_is_connected) connection_tab.tor_is_disconnected.connect(self.tor_is_disconnected) self.tabs[self.current_tab_id] = connection_tab self.current_tab_id += 1 index = self.addTab(connection_tab, strings._("gui_autoconnect_start")) self.setCurrentIndex(index) def open_settings_tab(self, from_autoconnect=False, active_tab="general"): self.common.log("TabWidget", "open_settings_tab") # See if a settings tab is already open, and if so switch to it for tab_id in self.tabs: if type(self.tabs[tab_id]) is SettingsParentTab: self.setCurrentIndex(self.indexOf(self.tabs[tab_id])) return settings_tab = SettingsParentTab( self.common, self.current_tab_id, active_tab=active_tab, parent=self, from_autoconnect=from_autoconnect, ) settings_tab.close_this_tab.connect(self.close_settings_tab) sequence = QtGui.QKeySequence(QtCore.Qt.CTRL | QtCore.Qt.Key_X) close_shortcut = QtGui.QShortcut(sequence, settings_tab) close_shortcut.activated.connect(self.close_settings_tab) self.tor_settings_tab = settings_tab.tor_settings_tab self.tor_settings_tab.tor_is_connected.connect(self.tor_is_connected) self.tor_settings_tab.tor_is_disconnected.connect(self.tor_is_disconnected) self.tabs[self.current_tab_id] = settings_tab self.current_tab_id += 1 index = self.addTab(settings_tab, strings._("gui_settings_window_title")) self.setCurrentIndex(index) def change_title(self, tab_id, title): shortened_title = title if len(shortened_title) > 11: shortened_title = shortened_title[:10] + "..." index = self.indexOf(self.tabs[tab_id]) self.setTabText(index, shortened_title) self.setTabToolTip(index, title) def change_icon(self, tab_id, icon_path): index = self.indexOf(self.tabs[tab_id]) self.setTabIcon(index, QtGui.QIcon(GuiCommon.get_resource_path(icon_path))) # The icon changes when the server status changes, so if we have an open # Tor Settings tab, tell it to update if self.tor_settings_tab: self.tor_settings_tab.active_tabs_changed(self.are_tabs_active()) def change_persistent(self, tab_id, is_persistent): self.common.log( "TabWidget", "change_persistent", f"tab_id: {tab_id}, is_persistent: {is_persistent}", ) index = self.indexOf(self.tabs[tab_id]) if is_persistent: self.tabBar().setTabButton( index, QtWidgets.QTabBar.LeftSide, self.tabs[tab_id].persistent_image_label, ) else: self.tabBar().setTabButton( index, QtWidgets.QTabBar.LeftSide, self.tabs[tab_id].invisible_widget ) self.save_persistent_tabs() def save_persistent_tabs(self): # Figure out the order of persistent tabs to save in settings persistent_tabs = [] for tab_id in self.tabs: if not ( type(self.tabs[tab_id]) is SettingsParentTab or type(self.tabs[tab_id]) is AutoConnectTab ): tab = self.widget(self.indexOf(self.tabs[tab_id])) if tab.settings.get("persistent", "enabled"): persistent_tabs.append(tab.settings.id) # Only save if tabs have actually moved if persistent_tabs != self.common.settings.get("persistent_tabs"): self.common.settings.set("persistent_tabs", persistent_tabs) self.common.settings.save() def has_no_onionshare_tab(self): # Check if the last tab is closed, or there is only one tab # which is the settings tab return self.count() == 0 or (self.count() == 1 and type(list(self.tabs.values())[0]) is SettingsParentTab) def close_tab(self, index): self.common.log("TabWidget", "close_tab", f"{index}") tab = self.widget(index) tab_id = tab.tab_id if ( type(self.tabs[tab_id]) is SettingsParentTab or type(self.tabs[tab_id]) is AutoConnectTab ): self.common.log("TabWidget", "closing a settings tab") if type(self.tabs[tab_id]) is SettingsParentTab: self.tor_settings_tab = None # Remove the tab self.removeTab(index) del self.tabs[tab.tab_id] # If no onionshare feature tab, open a new main window tab if self.has_no_onionshare_tab(): self.new_tab_clicked() else: self.common.log("TabWidget", "closing a service tab") if tab.close_tab(): self.common.log("TabWidget", "user is okay with closing the tab") tab.cleanup() # If the tab is persistent, delete the settings file from disk if tab.settings.get("persistent", "enabled"): tab.settings.delete() self.save_persistent_tabs() # Remove the tab self.removeTab(index) del self.tabs[tab.tab_id] # If no onionshare feature tab, open a new main window tab if self.has_no_onionshare_tab(): self.new_tab_clicked() else: self.common.log("TabWidget", "user does not want to close the tab") def close_connection_tab(self): self.common.log("TabWidget", "close_connection_tab") for tab_id in self.tabs: if type(self.tabs[tab_id]) is AutoConnectTab: index = self.indexOf(self.tabs[tab_id]) self.close_tab(index) return def close_settings_tab(self): self.common.log("TabWidget", "close_settings_tab") for tab_id in list(self.tabs): if type(self.tabs[tab_id]) is AutoConnectTab: # If we are being returned to the AutoConnectTab, but # the user has fixed their Tor settings in the TorSettings # tab, *and* they have enabled autoconnect, then # we should close the AutoConnect Tab. if self.common.gui.onion.is_authenticated(): self.common.log( "TabWidget", "close_settings_tab", "Tor is connected and we can auto-connect, so closing the tab", ) index = self.indexOf(self.tabs[tab_id]) self.close_tab(index) else: self.tabs[tab_id].reload_settings() self.common.log( "TabWidget", "close_settings_tab", "Reloading settings in case they changed in the TorSettingsTab. Not auto-connecting", ) break # List of indices may have changed due to the above, so we loop over it again as another copy for tab_id in list(self.tabs): if type(self.tabs[tab_id]) is SettingsParentTab: index = self.indexOf(self.tabs[tab_id]) self.close_tab(index) return def are_tabs_active(self): """ See if there are active servers in any open tabs """ for tab_id in self.tabs: if not ( type(self.tabs[tab_id]) is SettingsParentTab or type(self.tabs[tab_id]) is AutoConnectTab ): mode = self.tabs[tab_id].get_mode() if mode: if mode.server_status.status != mode.server_status.STATUS_STOPPED: return True return False def paintEvent(self, event): super(TabWidget, self).paintEvent(event) # Save the order of persistent tabs whenever a new tab is switched to -- ideally we would # do this whenever tabs gets moved, but paintEvent is the only event that seems to get triggered # when this happens self.save_persistent_tabs() def resizeEvent(self, event): # Make sure to move new tab button on each resize super(TabWidget, self).resizeEvent(event) self.move_new_tab_button() def tor_is_connected(self): for tab_id in self.tabs: if not ( type(self.tabs[tab_id]) is SettingsParentTab or type(self.tabs[tab_id]) is AutoConnectTab ): mode = self.tabs[tab_id].get_mode() if mode: mode.tor_connection_started() def tor_is_disconnected(self): for tab_id in self.tabs: if not ( type(self.tabs[tab_id]) is SettingsParentTab or type(self.tabs[tab_id]) is AutoConnectTab ): mode = self.tabs[tab_id].get_mode() if mode: mode.tor_connection_stopped() class TabBar(QtWidgets.QTabBar): """ A custom tab bar """ move_new_tab_button = QtCore.Signal() def __init__(self): super(TabBar, self).__init__() def tabLayoutChange(self): self.move_new_tab_button.emit() onionshare-onionshare-26fcdc5/desktop/onionshare/threads.py000066400000000000000000000227441521174352300243560ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import time import json import os from PySide6 import QtCore from onionshare_cli.onion import ( TorErrorInvalidSetting, TorErrorAutomatic, TorErrorSocketPort, TorErrorSocketFile, TorErrorMissingPassword, TorErrorUnreadableCookieFile, TorErrorAuthError, TorErrorProtocolError, BundledTorTimeout, BundledTorBroken, TorTooOldEphemeral, TorTooOldStealth, PortNotAvailable, ) from onionshare_cli.web.web import WaitressException from . import strings class OnionThread(QtCore.QThread): """ Starts the onion service, and waits for it to finish """ success = QtCore.Signal() success_early = QtCore.Signal() error = QtCore.Signal(str) def __init__(self, mode): super(OnionThread, self).__init__() self.mode = mode self.mode.common.log("OnionThread", "__init__") # allow this thread to be terminated self.setTerminationEnabled() def run(self): self.mode.common.log("OnionThread", "run") # Choose port early, because we need them to exist in advance for scheduled shares if not self.mode.app.port: self.mode.app.choose_port() try: if self.mode.obtain_onion_early: self.mode.app.start_onion_service( self.mode.get_type(), self.mode.settings, await_publication=False ) # wait for modules in thread to load, preventing a thread-related cx_Freeze crash time.sleep(0.2) self.success_early.emit() # Unregister the onion so we can use it in the next OnionThread self.mode.app.stop_onion_service(self.mode.settings) else: self.mode.app.start_onion_service( self.mode.get_type(), self.mode.settings, await_publication=True ) # wait for modules in thread to load, preventing a thread-related cx_Freeze crash time.sleep(0.2) # start onionshare http service in new thread self.mode.web_thread.start() self.success.emit() except ( TorErrorInvalidSetting, TorErrorAutomatic, TorErrorSocketPort, TorErrorSocketFile, TorErrorMissingPassword, TorErrorUnreadableCookieFile, TorErrorAuthError, TorErrorProtocolError, BundledTorTimeout, BundledTorBroken, TorTooOldEphemeral, TorTooOldStealth, PortNotAvailable, ) as e: message = self.mode.common.gui.get_translated_tor_error(e) self.error.emit(message) return except Exception as e: # Handle any other error that wasn't in the list above message = strings._("error_generic").format(e.args[0]) self.error.emit(message) return class WebThread(QtCore.QThread): """ Starts the web service """ success = QtCore.Signal() error = QtCore.Signal(str) def __init__(self, mode): super(WebThread, self).__init__() self.mode = mode self.mode.common.log("WebThread", "__init__") def run(self): self.mode.common.log("WebThread", "run") try: self.mode.web.start(self.mode.app.port) self.success.emit() except WaitressException as e: message = self.mode.common.gui.get_translated_web_error(e) self.mode.common.log("WebThread", "run", message) self.error.emit(message) return class AutoStartTimer(QtCore.QThread): """ Waits for a prescribed time before allowing a share to start """ success = QtCore.Signal() error = QtCore.Signal(str) def __init__(self, mode, canceled=False): super(AutoStartTimer, self).__init__() self.mode = mode self.canceled = canceled self.mode.common.log("AutoStartTimer", "__init__") # allow this thread to be terminated self.setTerminationEnabled() def run(self): now = QtCore.QDateTime.currentDateTime() autostart_timer_datetime_delta = now.secsTo( self.mode.server_status.autostart_timer_datetime ) try: # Sleep until scheduled time while autostart_timer_datetime_delta > 0 and self.canceled is False: time.sleep(0.1) now = QtCore.QDateTime.currentDateTime() autostart_timer_datetime_delta = now.secsTo( self.mode.server_status.autostart_timer_datetime ) # Timer has now finished if self.canceled is False: self.mode.server_status.server_button.setText( strings._("gui_please_wait") ) self.mode.server_status_label.setText( strings._("gui_status_indicator_share_working") ) self.success.emit() except ValueError as e: self.error.emit(e.args[0]) return class EventHandlerThread(QtCore.QThread): """ To trigger an event, write a JSON line to the events file. When that file changes, each line will be handled as an event. Valid events are: {"type": "new_tab"} {"type": "new_share_tab", "filenames": ["file1", "file2"]} """ new_tab = QtCore.Signal() new_share_tab = QtCore.Signal(list) def __init__(self, common): super(EventHandlerThread, self).__init__() self.common = common self.common.log("EventHandlerThread", "__init__") self.should_quit = False def run(self): self.common.log("EventHandlerThread", "run") mtime = 0 while True: if os.path.exists(self.common.gui.events_filename): # Events file exists if os.stat(self.common.gui.events_filename).st_mtime != mtime: # Events file has been modified, load events try: with open(self.common.gui.events_filename, "r") as f: lines = f.readlines() os.remove(self.common.gui.events_filename) self.common.log( "EventHandler", "run", f"processing {len(lines)} lines" ) for line in lines: try: obj = json.loads(line) if "type" not in obj: self.common.log( "EventHandler", "run", f"event does not have a type: {obj}", ) continue except json.decoder.JSONDecodeError: self.common.log( "EventHandler", "run", f"ignoring invalid line: {line}", ) continue if obj["type"] == "new_tab": self.common.log("EventHandler", "run", "new_tab event") self.new_tab.emit() elif obj["type"] == "new_share_tab": if ( "filenames" in obj and type(obj["filenames"]) is list ): self.new_share_tab.emit(obj["filenames"]) else: self.common.log( "EventHandler", "run", f"invalid new_share_tab event: {obj}", ) else: self.common.log( "EventHandler", "run", f"invalid event type: {obj}" ) except Exception: pass if self.should_quit: break time.sleep(0.2) class OnionCleanupThread(QtCore.QThread): """ Wait for Tor rendezvous circuits to close in a separate thread """ def __init__(self, common): super(OnionCleanupThread, self).__init__() self.common = common self.common.log("OnionCleanupThread", "__init__") def run(self): self.common.log("OnionCleanupThread", "run") self.common.gui.onion.cleanup() onionshare-onionshare-26fcdc5/desktop/onionshare/tor_connection.py000066400000000000000000000161761521174352300257510ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ import time from PySide6 import QtCore, QtWidgets from onionshare_cli.onion import ( BundledTorCanceled, TorErrorInvalidSetting, TorErrorAutomatic, TorErrorSocketPort, TorErrorSocketFile, TorErrorMissingPassword, TorErrorUnreadableCookieFile, TorErrorAuthError, TorErrorProtocolError, BundledTorTimeout, BundledTorBroken, TorTooOldEphemeral, TorTooOldStealth, PortNotAvailable, ) from . import strings class TorConnectionWidget(QtWidgets.QWidget): """ Connecting to Tor widget, with a progress bar """ open_tor_settings = QtCore.Signal() success = QtCore.Signal() fail = QtCore.Signal(str) update_progress = QtCore.Signal(int) def __init__(self, common, status_bar): super(TorConnectionWidget, self).__init__(None) self.common = common self.common.log("TorConnectionWidget", "__init__") self.status_bar = status_bar self.label = QtWidgets.QLabel(strings._("connecting_to_tor")) self.label.setAlignment(QtCore.Qt.AlignHCenter) self.progress = QtWidgets.QProgressBar() self.progress.setRange(0, 100) self.cancel_button = QtWidgets.QPushButton( strings._("gui_settings_button_cancel") ) self.cancel_button.clicked.connect(self.cancel_clicked) progress_layout = QtWidgets.QHBoxLayout() progress_layout.addWidget(self.progress) progress_layout.addWidget(self.cancel_button) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.label) layout.addLayout(progress_layout) self.setLayout(layout) # Start displaying the status at 0 self._tor_status_update(0, "") def start(self, custom_settings=False, testing_settings=False, onion=None): self.common.log("TorConnectionWidget", "start") self.was_canceled = False self.testing_settings = testing_settings if custom_settings: self.settings = custom_settings else: self.settings = self.common.settings if self.testing_settings: self.onion = onion else: self.onion = self.common.gui.onion t = TorConnectionThread(self.common, self.settings, self) t.tor_status_update.connect(self._tor_status_update) t.connected_to_tor.connect(self._connected_to_tor) t.canceled_connecting_to_tor.connect(self._canceled_connecting_to_tor) t.error_connecting_to_tor.connect(self._error_connecting_to_tor) t.start() # The main thread needs to remain active, and checking for Qt events, # until the thread is finished. Otherwise it won't be able to handle # accepting signals. self.active = True while self.active: time.sleep(0.1) self.common.gui.qtapp.processEvents() def cancel_clicked(self): self.was_canceled = True self.fail.emit("") self._reset() def wasCanceled(self): return self.was_canceled def _tor_status_update(self, progress, summary): self.progress.setValue(int(progress)) self.update_progress.emit(int(progress)) self.label.setText( f"{strings._('connecting_to_tor')}
    {summary}" ) def _connected_to_tor(self): self.common.log("TorConnectionWidget", "_connected_to_tor") self.active = False self.status_bar.clearMessage() # Close the dialog after connecting self.progress.setValue(self.progress.maximum()) self.update_progress.emit(int(self.progress.maximum())) self.success.emit() self._reset() def _canceled_connecting_to_tor(self): self.common.log("TorConnectionWidget", "_canceled_connecting_to_tor") self.active = False self.onion.cleanup() # Cancel connecting to Tor QtCore.QTimer.singleShot(1, self.cancel_clicked) self._reset() def _error_connecting_to_tor(self, msg): self.common.log("TorConnectionWidget", "_error_connecting_to_tor") self.active = False self.fail.emit(msg) self._reset() def _reset(self): self.label.setText("") self.progress.setValue(0) self.update_progress.emit(0) class TorConnectionThread(QtCore.QThread): tor_status_update = QtCore.Signal(str, str) connected_to_tor = QtCore.Signal() canceled_connecting_to_tor = QtCore.Signal() error_connecting_to_tor = QtCore.Signal(str) def __init__(self, common, settings, parent): super(TorConnectionThread, self).__init__() self.common = common self.common.log("TorConnectionThread", "__init__") self.settings = settings self.parent = parent def run(self): self.common.log("TorConnectionThread", "run") # Connect to the Onion try: self.parent.onion.connect(self.settings, False, self._tor_status_update) if self.parent.onion.connected_to_tor: self.connected_to_tor.emit() else: self.canceled_connecting_to_tor.emit() except BundledTorCanceled: self.common.log( "TorConnectionThread", "run", "caught exception: BundledTorCanceled" ) self.canceled_connecting_to_tor.emit() except ( TorErrorInvalidSetting, TorErrorAutomatic, TorErrorSocketPort, TorErrorSocketFile, TorErrorMissingPassword, TorErrorUnreadableCookieFile, TorErrorAuthError, TorErrorProtocolError, BundledTorTimeout, BundledTorBroken, TorTooOldEphemeral, TorTooOldStealth, PortNotAvailable, ) as e: message = self.common.gui.get_translated_tor_error(e) self.common.log( "TorConnectionThread", "run", f"caught exception: {message}" ) self.error_connecting_to_tor.emit(message) except Exception as e: # Handle any other error that wasn't in the list above message = strings._("error_generic").format(e.args[0]) self.error_connecting_to_tor.emit(message) return def _tor_status_update(self, progress, summary): self.tor_status_update.emit(progress, summary) # Return False if the dialog was canceled return not self.parent.wasCanceled() onionshare-onionshare-26fcdc5/desktop/onionshare/tor_settings_tab.py000066400000000000000000001071721521174352300262750ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from PySide6 import QtCore, QtWidgets, QtGui import sys import platform import os from onionshare_cli.meek import Meek from onionshare_cli.settings import Settings from onionshare_cli.onion import Onion from . import strings from .widgets import Alert from .tor_connection import TorConnectionWidget from .moat_dialog import MoatDialog class TorSettingsTab(QtWidgets.QWidget): """ Settings dialog. """ close_this_tab = QtCore.Signal() tor_is_connected = QtCore.Signal() tor_is_disconnected = QtCore.Signal() def __init__( self, common, tab_id, are_tabs_active, status_bar, from_autoconnect=False, parent=None, ): super(TorSettingsTab, self).__init__() self.common = common self.common.log("TorSettingsTab", "__init__") self.status_bar = status_bar self.meek = Meek(common, get_tor_paths=self.common.gui.get_tor_paths) self.system = platform.system() self.tab_id = tab_id self.parent = parent self.from_autoconnect = from_autoconnect # Connection type: either automatic, control port, or socket file # Bundled Tor self.connection_type_bundled_radio = QtWidgets.QRadioButton( strings._("gui_settings_connection_type_bundled_option") ) self.connection_type_bundled_radio.toggled.connect( self.connection_type_bundled_toggled ) # Bundled Tor doesn't work on dev mode in Windows or Mac if (self.system == "Windows" or self.system == "Darwin") and getattr( sys, "onionshare_dev_mode", False ): self.connection_type_bundled_radio.setEnabled(False) # Bridge options for bundled tor ( self.tor_path, self.tor_geo_ip_file_path, self.tor_geo_ipv6_file_path, self.obfs4proxy_file_path, self.snowflake_file_path, self.meek_client_file_path, ) = self.common.gui.get_tor_paths() bridges_label = QtWidgets.QLabel(strings._("gui_settings_tor_bridges_label")) bridges_label.setWordWrap(True) self.bridge_use_checkbox = QtWidgets.QCheckBox( strings._("gui_settings_bridge_use_checkbox") ) self.bridge_use_checkbox.clicked.connect( self.bridge_use_checkbox_state_changed ) # Built-in bridge self.bridge_builtin_radio = QtWidgets.QRadioButton( strings._("gui_settings_bridge_radio_builtin") ) self.bridge_builtin_radio.toggled.connect(self.bridge_builtin_radio_toggled) self.bridge_builtin_dropdown = QtWidgets.QComboBox() self.bridge_builtin_dropdown.currentTextChanged.connect( self.bridge_builtin_dropdown_changed ) if self.obfs4proxy_file_path and os.path.isfile(self.obfs4proxy_file_path): self.bridge_builtin_dropdown.addItem("obfs4") self.bridge_builtin_dropdown.addItem("meek-azure") if self.snowflake_file_path and os.path.isfile(self.snowflake_file_path): self.bridge_builtin_dropdown.addItem("snowflake") # Request a bridge from torproject.org (moat) self.bridge_moat_radio = QtWidgets.QRadioButton( strings._("gui_settings_bridge_moat_radio_option") ) self.bridge_moat_radio.toggled.connect(self.bridge_moat_radio_toggled) self.bridge_moat_button = QtWidgets.QPushButton( strings._("gui_settings_bridge_moat_button") ) self.bridge_moat_button.clicked.connect(self.bridge_moat_button_clicked) self.bridge_moat_textbox = QtWidgets.QPlainTextEdit() self.bridge_moat_textbox.setMinimumHeight(100) self.bridge_moat_textbox.setMaximumHeight(100) self.bridge_moat_textbox.setReadOnly(True) self.bridge_moat_textbox.setWordWrapMode(QtGui.QTextOption.NoWrap) bridge_moat_textbox_options_layout = QtWidgets.QVBoxLayout() bridge_moat_textbox_options_layout.addWidget(self.bridge_moat_button) bridge_moat_textbox_options_layout.addWidget(self.bridge_moat_textbox) self.bridge_moat_textbox_options = QtWidgets.QWidget() self.bridge_moat_textbox_options.setLayout(bridge_moat_textbox_options_layout) self.bridge_moat_textbox_options.hide() # Custom bridges radio and textbox self.bridge_custom_radio = QtWidgets.QRadioButton( strings._("gui_settings_bridge_custom_radio_option") ) self.bridge_custom_radio.toggled.connect(self.bridge_custom_radio_toggled) self.bridge_custom_textbox = QtWidgets.QPlainTextEdit() self.bridge_custom_textbox.setMinimumHeight(100) self.bridge_custom_textbox.setMaximumHeight(100) self.bridge_custom_textbox.setPlaceholderText( strings._("gui_settings_bridge_custom_placeholder") ) bridge_custom_textbox_options_layout = QtWidgets.QVBoxLayout() bridge_custom_textbox_options_layout.addWidget(self.bridge_custom_textbox) self.bridge_custom_textbox_options = QtWidgets.QWidget() self.bridge_custom_textbox_options.setLayout( bridge_custom_textbox_options_layout ) self.bridge_custom_textbox_options.hide() # Bridge settings layout bridge_settings_layout = QtWidgets.QVBoxLayout() bridge_settings_layout.addWidget(self.bridge_builtin_radio) bridge_settings_layout.addWidget(self.bridge_builtin_dropdown) bridge_settings_layout.addWidget(self.bridge_moat_radio) bridge_settings_layout.addWidget(self.bridge_moat_textbox_options) bridge_settings_layout.addWidget(self.bridge_custom_radio) bridge_settings_layout.addWidget(self.bridge_custom_textbox_options) self.bridge_settings = QtWidgets.QWidget() self.bridge_settings.setLayout(bridge_settings_layout) # Bridges layout/widget bridges_layout = QtWidgets.QVBoxLayout() bridges_layout.addWidget(bridges_label) bridges_layout.addWidget(self.bridge_use_checkbox) bridges_layout.addWidget(self.bridge_settings) self.bridges = QtWidgets.QWidget() self.bridges.setLayout(bridges_layout) # Automatic self.connection_type_automatic_radio = QtWidgets.QRadioButton( strings._("gui_settings_connection_type_automatic_option") ) self.connection_type_automatic_radio.toggled.connect( self.connection_type_automatic_toggled ) # Control port self.connection_type_control_port_radio = QtWidgets.QRadioButton( strings._("gui_settings_connection_type_control_port_option") ) self.connection_type_control_port_radio.toggled.connect( self.connection_type_control_port_toggled ) connection_type_control_port_extras_label = QtWidgets.QLabel( strings._("gui_settings_control_port_label") ) self.connection_type_control_port_extras_address = QtWidgets.QLineEdit() self.connection_type_control_port_extras_port = QtWidgets.QLineEdit() connection_type_control_port_extras_layout = QtWidgets.QHBoxLayout() connection_type_control_port_extras_layout.addWidget( connection_type_control_port_extras_label ) connection_type_control_port_extras_layout.addWidget( self.connection_type_control_port_extras_address ) connection_type_control_port_extras_layout.addWidget( self.connection_type_control_port_extras_port ) self.connection_type_control_port_extras = QtWidgets.QWidget() self.connection_type_control_port_extras.setLayout( connection_type_control_port_extras_layout ) self.connection_type_control_port_extras.hide() # Socket file self.connection_type_socket_file_radio = QtWidgets.QRadioButton( strings._("gui_settings_connection_type_socket_file_option") ) self.connection_type_socket_file_radio.toggled.connect( self.connection_type_socket_file_toggled ) connection_type_socket_file_extras_label = QtWidgets.QLabel( strings._("gui_settings_socket_file_label") ) self.connection_type_socket_file_extras_path = QtWidgets.QLineEdit() connection_type_socket_file_extras_layout = QtWidgets.QHBoxLayout() connection_type_socket_file_extras_layout.addWidget( connection_type_socket_file_extras_label ) connection_type_socket_file_extras_layout.addWidget( self.connection_type_socket_file_extras_path ) self.connection_type_socket_file_extras = QtWidgets.QWidget() self.connection_type_socket_file_extras.setLayout( connection_type_socket_file_extras_layout ) self.connection_type_socket_file_extras.hide() # Tor SOCKS address and port gui_settings_socks_label = QtWidgets.QLabel( strings._("gui_settings_socks_label") ) self.connection_type_socks_address = QtWidgets.QLineEdit() self.connection_type_socks_port = QtWidgets.QLineEdit() connection_type_socks_layout = QtWidgets.QHBoxLayout() connection_type_socks_layout.addWidget(gui_settings_socks_label) connection_type_socks_layout.addWidget(self.connection_type_socks_address) connection_type_socks_layout.addWidget(self.connection_type_socks_port) self.connection_type_socks = QtWidgets.QWidget() self.connection_type_socks.setLayout(connection_type_socks_layout) self.connection_type_socks.hide() # Authentication options self.authenticate_no_auth_checkbox = QtWidgets.QCheckBox( strings._("gui_settings_authenticate_no_auth_option") ) self.authenticate_no_auth_checkbox.toggled.connect( self.authenticate_no_auth_toggled ) authenticate_password_extras_label = QtWidgets.QLabel( strings._("gui_settings_password_label") ) self.authenticate_password_extras_password = QtWidgets.QLineEdit("") authenticate_password_extras_layout = QtWidgets.QHBoxLayout() authenticate_password_extras_layout.addWidget( authenticate_password_extras_label ) authenticate_password_extras_layout.addWidget( self.authenticate_password_extras_password ) self.authenticate_password_extras = QtWidgets.QWidget() self.authenticate_password_extras.setLayout(authenticate_password_extras_layout) self.authenticate_password_extras.hide() # Group for Tor settings tor_settings_layout = QtWidgets.QVBoxLayout() tor_settings_layout.addWidget(self.connection_type_control_port_extras) tor_settings_layout.addWidget(self.connection_type_socket_file_extras) tor_settings_layout.addWidget(self.connection_type_socks) tor_settings_layout.addWidget(self.authenticate_no_auth_checkbox) tor_settings_layout.addWidget(self.authenticate_password_extras) self.tor_settings_group = QtWidgets.QGroupBox( strings._("gui_settings_controller_extras_label") ) self.tor_settings_group.setLayout(tor_settings_layout) self.tor_settings_group.hide() # Put the radios into their own group so they are exclusive connection_type_radio_group_layout = QtWidgets.QVBoxLayout() connection_type_radio_group_layout.addWidget(self.connection_type_bundled_radio) connection_type_radio_group_layout.addWidget( self.connection_type_automatic_radio ) connection_type_radio_group_layout.addWidget( self.connection_type_control_port_radio ) connection_type_radio_group_layout.addWidget( self.connection_type_socket_file_radio ) connection_type_radio_group_layout.addStretch() connection_type_radio_group = QtWidgets.QGroupBox( strings._("gui_settings_connection_type_label") ) connection_type_radio_group.setLayout(connection_type_radio_group_layout) # Quickstart settings self.autoconnect_checkbox = QtWidgets.QCheckBox( strings._("gui_enable_autoconnect_checkbox") ) self.autoconnect_checkbox.toggled.connect(self.autoconnect_toggled) left_column_settings = QtWidgets.QVBoxLayout() connection_type_radio_group.setFixedHeight(300) left_column_settings.addWidget(connection_type_radio_group) left_column_settings.addSpacing(20) left_column_settings.addWidget(self.autoconnect_checkbox) left_column_settings.addStretch() left_column_settings.setContentsMargins(0, 0, 0, 0) left_column_setting_widget = QtWidgets.QWidget() left_column_setting_widget.setLayout(left_column_settings) # The Bridges options are not exclusive (enabling Bridges offers obfs4 or custom bridges) connection_type_bridges_radio_group_layout = QtWidgets.QVBoxLayout() connection_type_bridges_radio_group_layout.addWidget(self.bridges) self.connection_type_bridges_radio_group = QtWidgets.QGroupBox( strings._("gui_settings_tor_bridges") ) self.connection_type_bridges_radio_group.setLayout( connection_type_bridges_radio_group_layout ) self.connection_type_bridges_radio_group.hide() # Connection type layout connection_type_layout = QtWidgets.QVBoxLayout() connection_type_layout.addWidget(self.tor_settings_group) connection_type_layout.addWidget(self.connection_type_bridges_radio_group) connection_type_layout.addStretch() # Settings are in columns columns_layout = QtWidgets.QHBoxLayout() columns_layout.addWidget(left_column_setting_widget) columns_layout.addSpacing(20) columns_layout.addLayout(connection_type_layout, stretch=1) columns_wrapper = QtWidgets.QWidget() columns_wrapper.setFixedHeight(400) columns_wrapper.setLayout(columns_layout) # Tor connection widget self.tor_con = TorConnectionWidget(self.common, self.status_bar) self.tor_con.success.connect(self.tor_con_success) self.tor_con.fail.connect(self.tor_con_fail) self.tor_con.hide() self.tor_con_type = None # Error label self.error_label = QtWidgets.QLabel() self.error_label.setStyleSheet(self.common.gui.css["tor_settings_error"]) self.error_label.setWordWrap(True) # Buttons self.test_tor_button = QtWidgets.QPushButton( strings._("gui_settings_connection_type_test_button") ) self.test_tor_button.clicked.connect(self.test_tor_clicked) self.save_button = QtWidgets.QPushButton(strings._("gui_settings_button_save")) self.save_button.clicked.connect(self.save_clicked) buttons_layout = QtWidgets.QHBoxLayout() buttons_layout.addWidget(self.error_label, stretch=1) buttons_layout.addSpacing(20) buttons_layout.addWidget(self.test_tor_button) buttons_layout.addWidget(self.save_button) # Main layout main_layout = QtWidgets.QVBoxLayout() main_layout.addWidget(columns_wrapper) main_layout.addStretch() main_layout.addWidget(self.tor_con) main_layout.addStretch() main_layout.addLayout(buttons_layout) self.main_widget = QtWidgets.QWidget() self.main_widget.setLayout(main_layout) # Tabs are active label active_tabs_label = QtWidgets.QLabel( strings._("gui_settings_stop_active_tabs_label") ) active_tabs_label.setAlignment(QtCore.Qt.AlignHCenter) # Active tabs layout active_tabs_layout = QtWidgets.QVBoxLayout() active_tabs_layout.addStretch() active_tabs_layout.addWidget(active_tabs_label) active_tabs_layout.addStretch() self.active_tabs_widget = QtWidgets.QWidget() self.active_tabs_widget.setLayout(active_tabs_layout) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.main_widget) layout.addWidget(self.active_tabs_widget) self.setLayout(layout) self.active_tabs_changed(are_tabs_active) self.reload_settings() def reload_settings(self): # Load settings, and fill them in self.old_settings = Settings(self.common) self.old_settings.load() # Check if autoconnect was enabled if self.old_settings.get("auto_connect"): self.autoconnect_checkbox.setCheckState(QtCore.Qt.Checked) connection_type = self.old_settings.get("connection_type") if connection_type == "bundled": if self.connection_type_bundled_radio.isEnabled(): self.connection_type_bundled_radio.setChecked(True) else: # If bundled tor is disabled, fallback to automatic self.connection_type_automatic_radio.setChecked(True) elif connection_type == "automatic": self.connection_type_automatic_radio.setChecked(True) elif connection_type == "control_port": self.connection_type_control_port_radio.setChecked(True) elif connection_type == "socket_file": self.connection_type_socket_file_radio.setChecked(True) self.connection_type_control_port_extras_address.setText( self.old_settings.get("control_port_address") ) self.connection_type_control_port_extras_port.setText( str(self.old_settings.get("control_port_port")) ) self.connection_type_socket_file_extras_path.setText( self.old_settings.get("socket_file_path") ) self.connection_type_socks_address.setText( self.old_settings.get("socks_address") ) self.connection_type_socks_port.setText( str(self.old_settings.get("socks_port")) ) auth_type = self.old_settings.get("auth_type") if auth_type == "no_auth": self.authenticate_no_auth_checkbox.setCheckState(QtCore.Qt.Checked) else: self.authenticate_no_auth_checkbox.setChecked(QtCore.Qt.Unchecked) self.authenticate_password_extras_password.setText( self.old_settings.get("auth_password") ) if self.old_settings.get("bridges_enabled"): self.bridge_use_checkbox.setCheckState(QtCore.Qt.Checked) self.bridge_settings.show() bridges_type = self.old_settings.get("bridges_type") if bridges_type == "built-in": self.bridge_builtin_radio.setChecked(True) self.bridge_builtin_dropdown.show() self.bridge_moat_radio.setChecked(False) self.bridge_moat_textbox_options.hide() self.bridge_custom_radio.setChecked(False) self.bridge_custom_textbox_options.hide() bridges_builtin_pt = self.old_settings.get("bridges_builtin_pt") if bridges_builtin_pt == "obfs4": self.bridge_builtin_dropdown.setCurrentText("obfs4") elif bridges_builtin_pt == "meek-azure": self.bridge_builtin_dropdown.setCurrentText("meek-azure") else: self.bridge_builtin_dropdown.setCurrentText("snowflake") self.bridge_moat_textbox_options.hide() self.bridge_custom_textbox_options.hide() elif bridges_type == "moat": self.bridge_builtin_radio.setChecked(False) self.bridge_builtin_dropdown.hide() self.bridge_moat_radio.setChecked(True) self.bridge_moat_textbox_options.show() self.bridge_custom_radio.setChecked(False) self.bridge_custom_textbox_options.hide() else: self.bridge_builtin_radio.setChecked(False) self.bridge_builtin_dropdown.hide() self.bridge_moat_radio.setChecked(False) self.bridge_moat_textbox_options.hide() self.bridge_custom_radio.setChecked(True) self.bridge_custom_textbox_options.show() bridges_moat = self.old_settings.get("bridges_moat") self.bridge_moat_textbox.document().setPlainText(bridges_moat) bridges_custom = self.old_settings.get("bridges_custom") self.bridge_custom_textbox.document().setPlainText(bridges_custom) else: self.bridge_use_checkbox.setCheckState(QtCore.Qt.Unchecked) self.bridge_settings.hide() def autoconnect_toggled(self): """ Auto connect checkbox clicked """ self.common.log("TorSettingsTab", "autoconnect_checkbox_clicked") def active_tabs_changed(self, are_tabs_active): if are_tabs_active: self.main_widget.hide() self.active_tabs_widget.show() else: self.main_widget.show() self.active_tabs_widget.hide() def connection_type_bundled_toggled(self, checked): """ Connection type bundled was toggled """ self.common.log("TorSettingsTab", "connection_type_bundled_toggled") if checked: self.tor_settings_group.hide() self.connection_type_socks.hide() self.connection_type_bridges_radio_group.show() def bridge_use_checkbox_state_changed(self): """ 'Use a bridge' checkbox changed """ if self.bridge_use_checkbox.isChecked(): self.common.log("TorSettingsTab", "bridge_use_checkbox_state_changed", "Use bridge checkbox toggled on") self.bridge_settings.show() self.bridge_builtin_radio.click() self.bridge_builtin_dropdown.setCurrentText("obfs4") else: self.common.log("TorSettingsTab", "bridge_use_checkbox_state_changed", "Use bridge checkbox toggled off") self.bridge_settings.hide() def bridge_builtin_radio_toggled(self, checked): """ 'Select a built-in bridge' radio button toggled """ if checked: self.bridge_builtin_dropdown.show() self.bridge_custom_textbox_options.hide() self.bridge_moat_textbox_options.hide() def bridge_builtin_dropdown_changed(self, selection): """ Build-in bridge selection changed """ if selection == "meek-azure": # Alert the user about meek's costliness if it looks like they're turning it on if not self.old_settings.get("bridges_builtin_pt") == "meek-azure": Alert( self.common, strings._("gui_settings_meek_lite_expensive_warning"), QtWidgets.QMessageBox.Warning, ) def bridge_moat_radio_toggled(self, checked): """ Moat (request bridge) bridges option was toggled. If checked, show moat bridge options. """ if checked: self.bridge_builtin_dropdown.hide() self.bridge_custom_textbox_options.hide() self.bridge_moat_textbox_options.show() def bridge_moat_button_clicked(self): """ Request new bridge button clicked """ self.common.log("TorSettingsTab", "bridge_moat_button_clicked") moat_dialog = MoatDialog(self.common, self.meek) moat_dialog.got_bridges.connect(self.bridge_moat_got_bridges) moat_dialog.exec() def bridge_moat_got_bridges(self, bridges): """ Got new bridges from moat """ self.common.log("TorSettingsTab", "bridge_moat_got_bridges") self.bridge_moat_textbox.document().setPlainText(bridges) self.bridge_moat_textbox.show() def bridge_custom_radio_toggled(self, checked): """ Custom bridges option was toggled. If checked, show custom bridge options. """ if checked: self.bridge_builtin_dropdown.hide() self.bridge_moat_textbox_options.hide() self.bridge_custom_textbox_options.show() def connection_type_automatic_toggled(self, checked): """ Connection type automatic was toggled. If checked, hide authentication fields. """ self.common.log("TorSettingsTab", "connection_type_automatic_toggled") if checked: self.tor_settings_group.hide() self.connection_type_socks.hide() self.connection_type_bridges_radio_group.hide() def connection_type_control_port_toggled(self, checked): """ Connection type control port was toggled. If checked, show extra fields for Tor control address and port. If unchecked, hide those extra fields. """ self.common.log("TorSettingsTab", "connection_type_control_port_toggled") if checked: self.tor_settings_group.show() self.connection_type_control_port_extras.show() self.connection_type_socks.show() self.connection_type_bridges_radio_group.hide() else: self.connection_type_control_port_extras.hide() def connection_type_socket_file_toggled(self, checked): """ Connection type socket file was toggled. If checked, show extra fields for socket file. If unchecked, hide those extra fields. """ self.common.log("TorSettingsTab", "connection_type_socket_file_toggled") if checked: self.tor_settings_group.show() self.connection_type_socket_file_extras.show() self.connection_type_socks.show() self.connection_type_bridges_radio_group.hide() else: self.connection_type_socket_file_extras.hide() def authenticate_no_auth_toggled(self, checked): """ Authentication option no authentication was toggled. """ self.common.log("TorSettingsTab", "authenticate_no_auth_toggled") if checked: self.authenticate_password_extras.hide() else: self.authenticate_password_extras.show() def test_tor_clicked(self): """ Test Tor Settings button clicked. With the given settings, see if we can successfully connect and authenticate to Tor. """ self.common.log("TorSettingsTab", "test_tor_clicked") self.error_label.setText("") settings = self.settings_from_fields() if not settings: return self.test_tor_button.hide() self.save_button.hide() self.test_onion = Onion( self.common, use_tmp_dir=True, get_tor_paths=self.common.gui.get_tor_paths, ) self.tor_con_type = "test" self.tor_con.show() self.tor_con.start(settings, True, self.test_onion) def save_clicked(self): """ Save button clicked. Save current settings to disk. """ self.common.log("TorSettingsTab", "save_clicked") self.error_label.setText("") def changed(s1, s2, keys): """ Compare the Settings objects s1 and s2 and return true if any values have changed for the given keys. """ for key in keys: if s1.get(key) != s2.get(key): return True return False settings = self.settings_from_fields() if settings: # Save the new settings settings.save() # If Tor isn't connected, or if Tor settings have changed, Reinitialize # the Onion object reboot_onion = False if not self.common.gui.local_only and not ( self.from_autoconnect and not settings.get("auto_connect") ): if self.common.gui.onion.is_authenticated(): self.common.log( "TorSettingsTab", "save_clicked", "Connected to Tor" ) if changed( settings, self.old_settings, [ "connection_type", "control_port_address", "control_port_port", "socks_address", "socks_port", "socket_file_path", "auth_type", "auth_password", "bridges_enabled", "bridges_type", "bridges_builtin_pt", "bridges_moat", "bridges_custom", ], ): reboot_onion = True else: self.common.log( "TorSettingsTab", "save_clicked", "Not connected to Tor" ) # Tor isn't connected, so try connecting reboot_onion = True # Do we need to reinitialize Tor? if reboot_onion: # Tell the tabs that Tor is disconnected self.tor_is_disconnected.emit() # Reinitialize the Onion object self.common.log( "TorSettingsTab", "save_clicked", "rebooting the Onion" ) self.common.gui.onion.cleanup() self.test_tor_button.hide() self.save_button.hide() self.tor_con_type = "save" self.tor_con.show() self.tor_con.start(settings) else: self.parent.close_this_tab.emit() else: self.parent.close_this_tab.emit() def tor_con_success(self): """ Finished testing tor connection. """ self.tor_con.hide() self.test_tor_button.show() self.save_button.show() if self.tor_con_type == "test": Alert( self.common, strings._("settings_test_success").format( self.test_onion.tor_version, self.test_onion.supports_ephemeral, self.test_onion.supports_stealth, self.test_onion.supports_v3_onions, ), title=strings._("gui_settings_connection_type_test_button"), ) self.test_onion.cleanup() elif self.tor_con_type == "save": if ( self.common.gui.onion.is_authenticated() and not self.tor_con.wasCanceled() ): # Tell the tabs that Tor is connected self.tor_is_connected.emit() # Close the tab self.parent.close_this_tab.emit() self.tor_con_type = None def tor_con_fail(self, msg): """ Finished testing tor connection. """ self.tor_con.hide() self.test_tor_button.show() self.save_button.show() self.error_label.setText(msg) if self.tor_con_type == "test": self.test_onion.cleanup() self.tor_con_type = None def settings_from_fields(self): """ Return a Settings object that's full of values from the settings dialog. """ self.common.log("TorSettingsTab", "settings_from_fields") settings = Settings(self.common) settings.load() # To get the last update timestamp # autoconnect settings.set("auto_connect", self.autoconnect_checkbox.isChecked()) # Tor connection if self.connection_type_bundled_radio.isChecked(): settings.set("connection_type", "bundled") if self.connection_type_automatic_radio.isChecked(): settings.set("connection_type", "automatic") if self.connection_type_control_port_radio.isChecked(): settings.set("connection_type", "control_port") if self.connection_type_socket_file_radio.isChecked(): settings.set("connection_type", "socket_file") settings.set( "control_port_address", self.connection_type_control_port_extras_address.text(), ) settings.set( "control_port_port", self.connection_type_control_port_extras_port.text() ) settings.set( "socket_file_path", self.connection_type_socket_file_extras_path.text() ) settings.set("socks_address", self.connection_type_socks_address.text()) settings.set("socks_port", self.connection_type_socks_port.text()) if self.authenticate_no_auth_checkbox.checkState() == QtCore.Qt.Checked: settings.set("auth_type", "no_auth") else: settings.set("auth_type", "password") settings.set("auth_password", self.authenticate_password_extras_password.text()) # Whether we use bridges if self.bridge_use_checkbox.checkState() == QtCore.Qt.Checked: settings.set("bridges_enabled", True) if self.bridge_builtin_radio.isChecked(): settings.set("bridges_type", "built-in") selection = self.bridge_builtin_dropdown.currentText() settings.set("bridges_builtin_pt", selection) if self.bridge_moat_radio.isChecked(): settings.set("bridges_type", "moat") moat_bridges = self.bridge_moat_textbox.toPlainText() if ( self.connection_type_bundled_radio.isChecked() and moat_bridges.strip() == "" ): self.error_label.setText( strings._("gui_settings_moat_bridges_invalid") ) return False settings.set("bridges_moat", moat_bridges) if self.bridge_custom_radio.isChecked(): settings.set("bridges_type", "custom") bridges = self.bridge_custom_textbox.toPlainText().split("\n") bridges_valid = self.common.check_bridges_valid(bridges) if bridges_valid: new_bridges = "\n".join(bridges_valid) + "\n" settings.set("bridges_custom", new_bridges) else: self.error_label.setText( strings._("gui_settings_tor_bridges_invalid") ) return False else: settings.set("bridges_enabled", False) return settings def closeEvent(self, e): self.common.log("TorSettingsTab", "closeEvent") # On close, if Tor isn't connected, then quit OnionShare altogether if not self.common.gui.local_only: if not self.common.gui.onion.is_authenticated(): self.common.log( "TorSettingsTab", "closeEvent", "Closing while not connected to Tor", ) # Wait 1ms for the event loop to finish, then quit QtCore.QTimer.singleShot(1, self.common.gui.qtapp.quit) onionshare-onionshare-26fcdc5/desktop/onionshare/update_checker.py000066400000000000000000000202131521174352300256570ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from PySide6 import QtCore import datetime import re import socks from packaging.version import Version from onionshare_cli.settings import Settings class UpdateCheckerCheckError(Exception): """ Error checking for updates because of some Tor connection issue, or because the OnionShare website is down. """ pass class UpdateCheckerInvalidLatestVersion(Exception): """ Successfully downloaded the latest version, but it doesn't appear to be a valid version string. """ def __init__(self, latest_version): self.latest_version = latest_version class UpdateChecker(QtCore.QObject): """ Load http://elx57ue5uyfplgva.onion/latest-version.txt to see what the latest version of OnionShare is. If the latest version is newer than the installed version, alert the user. Only check at most once per day, unless force is True. """ update_available = QtCore.Signal(str, str, str) update_not_available = QtCore.Signal() update_error = QtCore.Signal() update_invalid_version = QtCore.Signal(str) def __init__(self, common, onion): super(UpdateChecker, self).__init__() self.common = common self.common.log("UpdateChecker", "__init__") self.onion = onion def check(self, force=False): self.common.log("UpdateChecker", "check", f"force={force}") # Load the settings settings = Settings(self.common) settings.load() # If force=True, then definitely check if force: check_for_updates = True else: check_for_updates = False # See if it's been 1 day since the last check autoupdate_timestamp = settings.get("autoupdate_timestamp") if autoupdate_timestamp: last_checked = datetime.datetime.fromtimestamp(autoupdate_timestamp) now = datetime.datetime.now() one_day = datetime.timedelta(days=1) if now - last_checked > one_day: check_for_updates = True else: check_for_updates = True # Check for updates if check_for_updates: self.common.log("UpdateChecker", "check", "checking for updates") # Download the latest-version file over Tor try: # User agent string includes OnionShare version and platform user_agent = f"OnionShare {self.common.version}, {self.common.platform}" # If the update is forced, add '?force=1' to the URL, to more # accurately measure daily users path = "/latest-version.txt" if force: path += "?force=1" cleaned_tor_version = re.sub(r"\s*\(.*\)", "", self.onion.tor_version) if Version(cleaned_tor_version) >= Version("0.3.2.9"): onion_domain = ( "lldan5gahapx5k7iafb3s4ikijc4ni7gx5iywdflkba5y2ezyg6sjgyd.onion" ) else: onion_domain = "elx57ue5uyfplgva.onion" self.common.log( "UpdateChecker", "check", f"loading http://{onion_domain}{path}" ) (socks_address, socks_port) = self.onion.get_tor_socks_port() socks.set_default_proxy(socks.SOCKS5, socks_address, socks_port) s = socks.socksocket() s.settimeout(15) # 15 second timeout s.connect((onion_domain, 80)) http_request = f"GET {path} HTTP/1.0\r\n" http_request += f"Host: {onion_domain}\r\n" http_request += f"User-Agent: {user_agent}\r\n" http_request += "\r\n" s.sendall(http_request.encode("utf-8")) http_response = s.recv(1024) latest_version = ( http_response[http_response.find(b"\r\n\r\n") :] .strip() .decode("utf-8") ) self.common.log( "UpdateChecker", "check", f"latest OnionShare version: {latest_version}", ) except Exception as e: self.common.log("UpdateChecker", "check", str(e)) self.update_error.emit() raise UpdateCheckerCheckError # Validate that latest_version looks like a version string # This regex is: 1-3 dot-separated numeric components version_re = r"^(\d+\.)?(\d+\.)?(\d+)$" if not re.match(version_re, latest_version): self.update_invalid_version.emit(latest_version) raise UpdateCheckerInvalidLatestVersion(latest_version) # Update the last checked timestamp (dropping the seconds and milliseconds) timestamp = ( datetime.datetime.now() .replace(microsecond=0) .replace(second=0) .timestamp() ) # Re-load the settings first before saving, just in case they've changed since we started our thread settings.load() settings.set("autoupdate_timestamp", timestamp) settings.save() # Do we need to update? update_url = "https://onionshare.org" installed_version = self.common.version if installed_version < latest_version: self.update_available.emit( update_url, installed_version, latest_version ) return # No updates are available self.update_not_available.emit() class UpdateThread(QtCore.QThread): update_available = QtCore.Signal(str, str, str) update_not_available = QtCore.Signal() update_error = QtCore.Signal() update_invalid_version = QtCore.Signal(str) def __init__(self, common, onion, force=False): super(UpdateThread, self).__init__() self.common = common self.common.log("UpdateThread", "__init__") self.onion = onion self.force = force def run(self): self.common.log("UpdateThread", "run") u = UpdateChecker(self.common, self.onion) u.update_available.connect(self._update_available) u.update_not_available.connect(self._update_not_available) u.update_error.connect(self._update_error) u.update_invalid_version.connect(self._update_invalid_version) try: u.check(force=self.force) except Exception as e: # If update check fails, silently ignore self.common.log("UpdateThread", "run", str(e)) pass def _update_available(self, update_url, installed_version, latest_version): self.common.log("UpdateThread", "_update_available") self.active = False self.update_available.emit(update_url, installed_version, latest_version) def _update_not_available(self): self.common.log("UpdateThread", "_update_not_available") self.active = False self.update_not_available.emit() def _update_error(self): self.common.log("UpdateThread", "_update_error") self.active = False self.update_error.emit() def _update_invalid_version(self, latest_version): self.common.log("UpdateThread", "_update_invalid_version") self.active = False self.update_invalid_version.emit(latest_version) onionshare-onionshare-26fcdc5/desktop/onionshare/widgets.py000066400000000000000000000114011521174352300243560ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2022 Micah Lee, et al. 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 . """ from PySide6 import QtCore, QtWidgets, QtGui import qrcode from . import strings from .gui_common import GuiCommon class Alert(QtWidgets.QMessageBox): """ An alert box dialog. """ def __init__( self, common, message, icon=QtWidgets.QMessageBox.NoIcon, buttons=QtWidgets.QMessageBox.Ok, autostart=True, title="OnionShare", ): super(Alert, self).__init__(None) self.common = common self.common.log("Alert", "__init__") self.setWindowTitle(title) self.setWindowIcon(QtGui.QIcon(GuiCommon.get_resource_path("images/logo.png"))) self.setText(message) self.setIcon(icon) self.setStandardButtons(buttons) if autostart: self.exec() class AddFileDialog(QtWidgets.QFileDialog): """ Overridden version of QFileDialog which allows us to select folders as well as, or instead of, files. For adding files/folders to share. Note that this dialog can't be used in macOS, only in Windows, Linux, and BSD. This is because the macOS sandbox requires native dialogs, and this is a Qt5 dialog. """ def __init__(self, common, *args, **kwargs): QtWidgets.QFileDialog.__init__(self, *args, **kwargs) self.common = common self.common.log("AddFileDialog", "__init__") self.setOption(self.Option.DontUseNativeDialog, True) self.setOption(self.Option.ReadOnly, True) self.setOption(self.Option.ShowDirsOnly, False) self.setFileMode(self.FileMode.ExistingFiles) tree_view = self.findChild(QtWidgets.QTreeView) tree_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) list_view = self.findChild(QtWidgets.QListView, "listView") list_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) def accept(self): self.common.log("AddFileDialog", "accept") QtWidgets.QDialog.accept(self) class MinimumSizeWidget(QtWidgets.QWidget): """ An empty widget with a minimum width and height, just to force layouts to behave """ def __init__(self, width, height): super(MinimumSizeWidget, self).__init__() self.setMinimumWidth(width) self.setMinimumHeight(height) class Image(qrcode.image.base.BaseImage): """ A custom Image class, for use with the QR Code pixmap. """ def __init__(self, border, width, box_size, *args, **kwargs): self.border = border self.width = width self.box_size = box_size size = (width + border * 2) * box_size self._image = QtGui.QImage(size, size, QtGui.QImage.Format_RGB16) self._image.fill(QtCore.Qt.white) def pixmap(self): return QtGui.QPixmap.fromImage(self._image) def drawrect(self, row, col): painter = QtGui.QPainter(self._image) painter.fillRect( (col + self.border) * self.box_size, (row + self.border) * self.box_size, self.box_size, self.box_size, QtCore.Qt.black, ) def save(self, stream, kind=None): pass class QRCodeDialog(QtWidgets.QDialog): """ A dialog showing a QR code. """ def __init__(self, common, title, text): super(QRCodeDialog, self).__init__() self.common = common self.common.log("QrCode", "__init__") self.qr_label_title = QtWidgets.QLabel(self) self.qr_label_title.setText(title) self.qr_label_title.setAlignment(QtCore.Qt.AlignCenter) self.qr_label = QtWidgets.QLabel(self) self.qr_label.setPixmap(qrcode.make(text, image_factory=Image).pixmap()) self.qr_label.setScaledContents(True) self.qr_label.setFixedSize(350, 350) self.setWindowTitle(strings._("gui_qr_code_dialog_title")) self.setWindowIcon(QtGui.QIcon(GuiCommon.get_resource_path("images/logo.png"))) layout = QtWidgets.QVBoxLayout(self) layout.addWidget(self.qr_label_title) layout.addWidget(self.qr_label) self.exec() onionshare-onionshare-26fcdc5/desktop/org.onionshare.OnionShare.appdata.xml000066400000000000000000000026651521174352300273370ustar00rootroot00000000000000 org.onionshare.OnionShare CC0-1.0 GPL-3.0 OnionShare

    Securely and anonymously share files, host websites, and chat with friends

    OnionShare is an open source tool that lets you securely and anonymously share files, host websites, and chat with friends using the Tor network.

    org.onionshare.OnionShare.desktop https://raw.githubusercontent.com/onionshare/onionshare/main/docs/source/_static/screenshots/tabs.png Types of services that OnionShare supports https://github.com/onionshare/onionshare/issues/ https://onionshare.org/ https://onionshare.org/ https://github.com/onionshare/onionshare Micah Lee micah@micahflee.com onionshare-onionshare-26fcdc5/desktop/org.onionshare.OnionShare.desktop000066400000000000000000000004051521174352300265650ustar00rootroot00000000000000[Desktop Entry] Name=OnionShare Exec=onionshare Terminal=false Type=Application Icon=org.onionshare.OnionShare Categories=Network;FileTransfer; Keywords=tor;anonymity;privacy;onion service;file sharing;file hosting; StartupNotify=true StartupWMClass=onionshare onionshare-onionshare-26fcdc5/desktop/org.onionshare.OnionShare.svg000066400000000000000000004716551521174352300257360ustar00rootroot00000000000000 ]> eJzsvfuSHEd25vkE8Q65f8ise226FOGX8IjesTWrq7bX1FJbtzQj2dgYDSKhFkYkQAPB1vQ+/X6/ 73hkRlZlAaDIJns0qCBAVIZnXNyPn+t3zvmL/+M3v/vF9Rdv/unlL/LVeBj+4i9u37588e7N218e /OnhV19++e03797y0c9++/PD1K5GDbr+1fJZH/hfXr795tWb1788JF3gatLJB779s7sXr1//8XD3 7ddfvvyfPz/87Oc68Xev3n35Uqe+fPP7N1ff/OH3P99up+/fvXinU+kv619O62H9ZZ0Pv/k1p1+8 /sOLb7559f/p5DTnJeuzmzffvv7i1evf37z5n788/GJKtR1SG9vhFymnQ245acz/8+q3L795MnC+ WnLNKbV5rtVfuirLlKa2lnVOvsBuRFm42rQfoivfvfn8269evn73m7dvPn/5zTe3b7588/abXx5u //ji9eHXL36vMy8O//jyyy/f/Nvh5ssXn//roMmqnz28+vKl5uWrF+8OU2YKr381pc9uvn315Rd/ 8+1X//RSM1aLP86f+ZJ//42upcvybz5un/3qK33yu5fv3umNdEOW4bd/dbN/DH3o42f/7bcvf//K q6aZ/e8/75d9++brr168/ddvfrC54Kp/9/Krr7/U2nmOUx2vqr7q/+1/6WM1CX0tppTO77+eX/zw i7ws+/uvh1zPHzGueVqOl3949fLffnn4mzevX8acX79997sgnFLGMf6OM7/99suXb//+9at3mouZ j9aY9F+/+eLllxp//P7Dly881z6m098x4O9evP39y3citDdffvvOe2DZ7qBF/esXf3wJZUxxg7/9 +uXrv3vzX/yMv0hzmq7mluuyLlNu66GUMl3lrF+WlEtdDuOVJq6uVTS/lDavIpt1PkzjNB2mxQ+h QVMaj882Hf/uj8ANud32HE0E8xuR0N++ffX7V69/OXmSawni+qu3r7440daUdO15+5/vcFWnlZ9l XNNcp/KRn7TqT9axzJmN+hGfxHRp5t+9e/m6T5/2yu2vd7Q/Xv36d3qd+9df3L75iuX/Br4gon+t /SD2EueO//YZff3br2Nq/PtnopTfvH31mmsOf+Mzy2e/+fJbnfqrt2++/fpXr//5zfCz4IL/5eXn YnUipi8Of/tP/0O/iKN5Px7+7u2Lz3UB/X4cc/Xi1dc/f+/l9HJvXx7ipL7pX7f/f/jbdy//WZzk 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 dcuLY5p+87ef3xz5XW9tzT8H354c+Wu/ODv85n8f/ey/yc3it18dHZzc8KvfHb/+5suj88Oj04u1 9rc948vzox+Pj36yR5y8ndj0q7Of3t46bmsvYW99fPR29Q6kOEOaBukssd9be/C3Y+vzfx6/vPi+ PoakKtX7BIzE8v4f/s+j4+++v7jrBV8cvbr4xlbEH87PTu9s/LezN1faXlkJv3/2q8//1H7z+9OX 9Zd8znz+5i9np1/aUr6w1by355efH31nd1v74tlf3vBN7988P3/39vvxPr/+y9FPi/phMTS/edYs Prf//8dPz5TT8e5ZWHz+5pkKsvW///jZPvwv++P/2aWfFmnx58X/+b/N4iW/+erZHkHUhf7zevkB TlFg315whQ9U9dx62X7yYv0+L56d8iq8w1fPAIyE5ybZQU38j2JhcuNJMU7CEiJfhOATuXMgEqlw fF+kVLFLKo3LtGnXUdjNWFUy4HriyaLZr5XnNfmkXfzj85t74F1VGXu+1LGvr7QfPIHuavt6ubZf fRG7fRksry/fZrx87f5QoZLAeOX+4+Vr9xcVeLx2//Ey7f/u68YW2qVVM2kxhSmLKbx3MVGhTIKv 3hqU5uW71suEIAlXv6g9y7dcG3/+4ua7bt8iS/vYlGu9UcejaLKHq51sVXqd1i57z+GL9AVQTK1Z rIajVdotJvWlIcprawrORm4oc7+/9vh6WY9Hh8R0W13mnVilmXeK2bNQL10ETjwJDO3S5dWEXHkP yrMp3r3yHuNlfw98nsN6a+5NWcdAVi96C7Rgly5efo/l5dvfA+V+3DNr71Ev+3tk9P31yz5I2uX6 C6qdyxcvvcfq8pX3iCsxub4fVpfH27y4chmGyKBlEWXjp/oeQWO01g+/9sWVTvvVDxAIfz89PXh9 9HKhq4iGRXtdKtx6uoTm/ccLZmJRxSm7ae3wuPbFeAEkiH7tgLnt+urg8Re0f/5rO4SDCUkt1Z4s c4AYMinYywuZIGpX9wll430IHTytpbveqK6q6/fKAiZzWNR0270uNxp3ytVm7DpKMZ1+8vWNz7vc 5ta38sLpDpLe2N32Vpcb3fpWUEoVnghq0G2vdbkR92JFvm+BkaVUzF5/fXWFjV+c3Lxum0vzcnOj a3f6/tl/2hr9/56NWuIWLlMBF1AjAstF/55leqlRnS6KvUlmGCdR9QfFmhEmvu1eVw== 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 onionshare-onionshare-26fcdc5/desktop/package/000077500000000000000000000000001521174352300215675ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/package/Entitlements.plist000066400000000000000000000031141521174352300253160ustar00rootroot00000000000000 com.apple.security.app-sandbox com.apple.security.cs.allow-unsigned-executable-memory com.apple.security.network.server com.apple.security.network.client com.apple.security.files.user-selected.read-write com.apple.security.temporary-exception.files.absolute-path.read-only /private/etc/apache2/mime.types com.apple.security.temporary-exception.files.home-relative-path.read-only /Library/Application Support/TorBrowser-Data/Tor/control_auth_cookie com.apple.security.temporary-exception.files.home-relative-path.read-write /OnionShare/ onionshare-onionshare-26fcdc5/desktop/package/dialog.bmp000066400000000000000000022617521521174352300235450ustar00rootroot00000000000000BMc |8 `c   BGRsƺ¼vĻĹs}øʾxĶǽõȽƿŽƻhhh^^^uuueeehhhZZZpppjjjmmmyyyvvvZZZrrrrrr^^^eeeooo{{{pppccczzzqqqhhhhhhcccjjjttt}}}bbblll~~~yyybbbqqqkkknnnqqqvvvbbb}}}jjjuuu¿۵լծծӮԹӨӮ˫Ҷ˩~~~Ŀ~ĺľ~ǿ¶uɽɹȷ}zſǺȷǻǹǺƼ˽Ǿ¸nnnjjjmmmrrruuurrrnnntttyyynnn|||ppp|||nnn~~~yyyjjjxxxwww~~~hhhxxxpppmmmuuu{{{k€€ծ{ttџ̗LjٹuppȌϝyssʐўѧzss}ww|uu}}֫̚ҫΞ|vv~xx}vw}}О۷ܾ|uv}ww~xx~۶޿}vv~xx~xxyy}vv}ww~xx}ww}}zss~wx~xx~xx}}yyy~zz||w~suw}s}{u{xxttuĺ}}s}uù}xƽ~xx~yyyy~wx~xyzz||zy{||}}}}}}||{||}~~}z~~~¶~~}|~|{~}|~~}~~|}~yz~yyzy~~|uv~yw~~}~yx}ww||}}~{xxyss|vv~xx||onionshare-onionshare-26fcdc5/desktop/package/license.rtf000066400000000000000000001105101521174352300237240ustar00rootroot00000000000000{\rtf1\ansi\ansicpg1252\deff0\nouicompat{\fonttbl{\f0\fswiss\fcharset0 Helvetica;}{\f1\fswiss Helvetica;}{\f2\fnil Courier;}} {\colortbl ;\red0\green0\blue255;} {\*\generator Riched20 10.0.19041}\viewkind4\uc1 \pard\sa180\b\f0\fs24\lang1033 OnionShare is free and open source software and is developed by Micah Lee, et al.\f1\lang9\par \fs28 GNU GENERAL PUBLIC LICENSE\par \b0\fs24 Version 3, 29 June 2007\par Copyright \f0\'a9 2007 Free Software Foundation, Inc. <{{\field{\*\fldinst{HYPERLINK "https://fsf.org/"}}{\fldrslt{https://fsf.org/\ul0\cf0}}}}\f0\fs24 >\par \f1 Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.\par \b\fs28 Preamble\par \b0\fs24 The GNU General Public License is a free, copyleft license for software and other kinds of works.\par The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is 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. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.\par 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.\par To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.\par For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\par Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.\par For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.\par Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.\par Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.\par The precise terms and conditions for copying, distribution and modification follow.\par \b\fs28 TERMS AND CONDITIONS\par \fs24 0. Definitions.\par \b0\ldblquote This License\rdblquote refers to version 3 of the GNU General Public License.\par \ldblquote Copyright\rdblquote also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.\par \ldblquote The Program\rdblquote refers to any copyrightable work licensed under this License. Each licensee is addressed as \ldblquote you\rdblquote . \ldblquote Licensees\rdblquote and \ldblquote recipients\rdblquote may be individuals or organizations.\par To \ldblquote modify\rdblquote 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 \ldblquote modified version\rdblquote of the earlier work or a work \ldblquote based on\rdblquote the earlier work.\par A \ldblquote covered work\rdblquote means either the unmodified Program or a work based on the Program.\par To \ldblquote propagate\rdblquote 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.\par To \ldblquote convey\rdblquote 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.\par An interactive user interface displays \ldblquote Appropriate Legal Notices\rdblquote 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.\par \b 1. Source Code.\par \b0 The \ldblquote source code\rdblquote for a work means the preferred form of the work for making modifications to it. \ldblquote Object code\rdblquote means any non-source form of a work.\par A \ldblquote Standard Interface\rdblquote 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.\par The \ldblquote System Libraries\rdblquote 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 \ldblquote Major Component\rdblquote , 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.\par The \ldblquote Corresponding Source\rdblquote 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.\par The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.\par The Corresponding Source for a work in source code form is that same work.\par \b 2. Basic Permissions.\par \b0 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.\par 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.\par Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.\par \b 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\par \b0 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.\par 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.\par \b 4. Conveying Verbatim Copies.\par \b0 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.\par 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.\par \b 5. Conveying Modified Source Versions.\par \b0 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:\par \pard\fi-360\li360\tx360\bullet\tab a) The work must carry prominent notices stating that you modified it, and giving a relevant date.\par \bullet\tab 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 \ldblquote keep intact all notices\rdblquote .\par \bullet\tab 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.\par \pard\fi-360\li360\sa180\tx360\bullet\tab 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.\par \pard\sa180 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 \ldblquote aggregate\rdblquote 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.\par \b 6. Conveying Non-Source Forms.\par \b0 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:\par \pard\fi-360\li360\tx360\bullet\tab 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.\par \bullet\tab 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.\par \bullet\tab 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.\par \bullet\tab 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.\par \pard\fi-360\li360\sa180\tx360\bullet\tab 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.\par \pard\sa180 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.\par A \ldblquote User Product\rdblquote is either (1) a \ldblquote consumer product\rdblquote , 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, \ldblquote normally used\rdblquote 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.\par \ldblquote Installation Information\rdblquote 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.\par 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).\par 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.\par 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.\par \b 7. Additional Terms.\par \b0\ldblquote Additional permissions\rdblquote 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.\par 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.\par 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:\par \pard\fi-360\li360\tx360\bullet\tab a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or\par \bullet\tab 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\par \bullet\tab 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\par \bullet\tab d) Limiting the use for publicity purposes of names of licensors or authors of the material; or\par \bullet\tab e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or\par \pard\fi-360\li360\sa180\tx360\bullet\tab 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.\par \pard\sa180 All other non-permissive additional terms are considered \ldblquote further restrictions\rdblquote 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.\par 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.\par 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.\par \b 8. Termination.\par \b0 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).\par 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.\par 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.\par 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.\par \b 9. Acceptance Not Required for Having Copies.\par \b0 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.\par \b 10. Automatic Licensing of Downstream Recipients.\par \b0 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.\par An \ldblquote entity transaction\rdblquote 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.\par 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.\par \b 11. Patents.\par \b0 A \ldblquote contributor\rdblquote 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 \ldblquote contributor version\rdblquote .\par A contributor's \ldblquote essential patent claims\rdblquote 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, \ldblquote control\rdblquote includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.\par 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.\par In the following three paragraphs, a \ldblquote patent license\rdblquote 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 \ldblquote grant\rdblquote such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.\par 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. \ldblquote Knowingly relying\rdblquote 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.\par 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.\par A patent license is \ldblquote discriminatory\rdblquote 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.\par 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.\par \b 12. No Surrender of Others' Freedom.\par \b0 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.\par \b 13. Use with the GNU Affero General Public License.\par \b0 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 Affero 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 special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.\par \b 14. Revised Versions of this License.\par \b0 The Free Software Foundation may publish revised and/or new versions of the GNU 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.\par Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License \ldblquote or any later version\rdblquote 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 General Public License, you may choose any version ever published by the Free Software Foundation.\par If the Program specifies that a proxy can decide which future versions of the GNU 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.\par 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.\par \b 15. Disclaimer of Warranty.\par \b0 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 \ldblquote AS IS\rdblquote 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.\par \b 16. Limitation of Liability.\par \b0 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.\par \b 17. Interpretation of Sections 15 and 16.\par \b0 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.\par END OF TERMS AND CONDITIONS\par \b\fs28 How to Apply These Terms to Your New Programs\par \b0\fs24 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.\par 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 \ldblquote copyright\rdblquote line and a pointer to where the full notice is found.\par \f2 \line Copyright (C) \line\line This program is free software: you can redistribute it and/or modify\line it under the terms of the GNU General Public License as published by\line the Free Software Foundation, either version 3 of the License, or\line (at your option) any later version.\line\line This program is distributed in the hope that it will be useful,\line but WITHOUT ANY WARRANTY; without even the implied warranty of\line MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\line GNU General Public License for more details.\line\line You should have received a copy of the GNU General Public License\line along with this program. If not, see <{{\field{\*\fldinst{HYPERLINK "https://www.gnu.org/licenses/"}}{\fldrslt{https://www.gnu.org/licenses/\ul0\cf0}}}}\f2\fs24 >.\par \f1 Also add information on how to contact you by electronic and paper mail.\par If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:\par \f2 Copyright (C) \line This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\line This is free software, and you are welcome to redistribute it\line under certain conditions; type `show c' for details.\par \f1 The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an \ldblquote about box\rdblquote .\par You should also get your employer (if you work as a programmer) or school, if any, to sign a \ldblquote copyright disclaimer\rdblquote for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <{{\field{\*\fldinst{HYPERLINK "https://www.gnu.org/licenses/"}}{\fldrslt{https://www.gnu.org/licenses/\ul0\cf0}}}}\f1\fs24 >.\par The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <{{\field{\*\fldinst{HYPERLINK "https://www.gnu.org/licenses/why-not-lgpl.html"}}{\fldrslt{https://www.gnu.org/licenses/why-not-lgpl.html\ul0\cf0}}}}\f1\fs24 >.\par } onionshare-onionshare-26fcdc5/desktop/package/onionshare-cli.py000066400000000000000000000000551521174352300250530ustar00rootroot00000000000000import onionshare_cli onionshare_cli.main() onionshare-onionshare-26fcdc5/desktop/package/onionshare.py000066400000000000000000000000451521174352300243050ustar00rootroot00000000000000import onionshare onionshare.main() onionshare-onionshare-26fcdc5/desktop/poetry.lock000066400000000000000000007255461521174352300224130ustar00rootroot00000000000000# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "backports-zstd" version = "1.5.0" description = "Backport of compression.zstd" optional = false python-versions = "<3.14,>=3.10" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "backports_zstd-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09045a00d9dad12dab49e029b26c197637b882cf4adc737a373404ba2aaabbca"}, {file = "backports_zstd-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e51edd66db6855bee020c951ca5c2e816777bfe77f87742fbbfae9a32d482fec"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:73ff4ceb7e28538455e0a44f53e05a731bbdb9bfe2cab4a1637dd1f0093732e3"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9526d69c8fbef03e04d74b33946e23f806399cb49e51550bb21d757fb2ce869"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5e24ee1e1bbb4549a2ad63695b4a5776596aa171fdaf7c1e178e61e351faf0a9"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ebfbf7307d618d68deef905d3d6655339d4ce187e176023bff8fbd44ec1e20d0"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b82506a4da0977754335c727752411bbba1fe476a8662d96161218f275fba859"}, {file = "backports_zstd-1.5.0-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4cf8355cdfa7a2cba9c51655d56e6be39c751799286b142640be30fef2301a70"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f7de15f3871d21d6e761c5a309618b069fee5f225e64e4406956ac0209dc6917"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:624825b9c290e6089cd9955d88da04b085528fe213adf3e4e8be5c0fffef6c65"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:7088a75f96d8f6b0d3523ec3a99d1472ce03c3524b2f7b485b80e115ef20055f"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:97f4d29e99538b11313cbc7a6d9b3c2ce0d69fdc497699ab74953d0d5949ab88"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8b4e17632759a45a7d0c4cf31968d8d033eefbe1a3d81d8aaf519558371c3359"}, {file = "backports_zstd-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0075195c79c0508bc7313a3402b187bd9d27d4f9a376e8e2caac0fc2baeacbdf"}, {file = "backports_zstd-1.5.0-cp310-cp310-win32.whl", hash = "sha256:11c694c9eef69c19a52df94466d4fd5c8b1bdfbaad350e95adc883b40d8b3be2"}, {file = "backports_zstd-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:c1ea900765329a515020e4e66c65a826657cc1f110770cac3f71ec01b43f2d25"}, {file = "backports_zstd-1.5.0-cp310-cp310-win_arm64.whl", hash = "sha256:0c473387025e233d123f401d09a17a57e0b9af2ec2423aae7f50f1c806887cb3"}, {file = "backports_zstd-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fbaa5502617dc4f04327c7a2951f0fcdca7aaef93ddf32c15dc8b620208174fa"}, {file = "backports_zstd-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:204f00d62e95aab987c7c019452b2373bdefb17252443765f2ede7f15b6e669a"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:2c77c0d4c330afd26d2a98f3d689ab922ec3f046014a1614ddcaad437666ac05"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6bb2f2d2c07358edeaa251cf804b993e9f0d5d93af8a7ea2414d80ff3c105e95"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb89f554abcebcb2c487024e63be8059083775c5fd351fec0cc2dc3e9f528714"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ea969758af743000d822fc3a69dc9de059bbbb8d07d2f13e06ff49ac63cce74f"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:775ad82d268923639bc924013fc61561df376c148506b241f0f80718b5bb3a2f"}, {file = "backports_zstd-1.5.0-cp311-cp311-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:663128370bbc2ebcc436b8977bc434a7bf29919d92d91fee05ed6fb0fa807646"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:572c76832e9a24da4084befa52c23f4c03fede2aa250ae6250cbc5a11b980f69"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9410bcbcd3afd787a15a276d68f954d1703788c780faa421183a61d39da8b862"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0fab15e6895bef621041dd82d6306ffa24889257dd902c4b98b88e4260b3465d"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ffde637b6d0082f1c3356657002469cf199c7c12d50d9822a55b13425c778d3"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c01d377c1489cb2230bf6a9ff01c73c42863cc96ee648c49923d4f6d4ea4e2d5"}, {file = "backports_zstd-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4080bb9c8a51bb2bf8caf8018d78278cd49eb924cb06a54f56a411095e2ac912"}, {file = "backports_zstd-1.5.0-cp311-cp311-win32.whl", hash = "sha256:9f4fe3fd82c8c6e8a9fdc5c71f92f9fe2442d02e7f59fddef25a955e189e3f38"}, {file = "backports_zstd-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:e7c0372fa036751109604c70a8c87e59faaacc195d519c8cb9e0e527ee2b5478"}, {file = "backports_zstd-1.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:264a66137555bb4648f7e64cfc514d820758072684f373269fcdd2e8d4a90306"}, {file = "backports_zstd-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1858cacdb3e50105a1b60acdc3dd5b18650077d12dce243e19d5c88e8172bd71"}, {file = "backports_zstd-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ccffc0a1974ecc2cc42afa4c15f56d036a4b2bae0abc46e6ba9b3358d9b1c037"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:ab3430ab4d4ac3fb1bc1e4174d137731e51363b6abd5e51a1599690fe9c7d61d"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c737c1cb4a10c2d0f6cba9a347522858094f0a737b4558c67a777bcaa4a795cd"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0379c66510681a6b2780d3f3ef2cff54d01204b52448d64bde1855d40f856a04"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7c7474b291e264c9609358d3875cf539623f7a65339c2b533020992b1a4c095b"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bb73c22444617bc5a3abf32dd27b3f2085898cfe3b95e6855300e9189898a3bd"}, {file = "backports_zstd-1.5.0-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6cd7f6c33afd89354f74469e315e72754e3040f91f7b685061e225d9e36e3e8e"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2106309071f279b38d3663c55c7fed192733b4f332b50eb3fa707e54bad6967a"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:56fffa80be74cb11ac843333bbdc56e466c87967706886b3efd6b16d83830d90"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5e8b8251eec80e67e30ec79dfc5b3b1ada069b9ac48b56b102f3e2c6f8281062"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:f334dd17ffead361aa9090e40151bd123507ce213a62733121b7145c6711cbde"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:78cbfd061255fef6de5070a54e0f9c00e8aabad5c99dd2ad884a3a7d1acc09ae"}, {file = "backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2f55d70df44f49d599e20033013bc1ae705202735c45d4bca8eb963b225e15fd"}, {file = "backports_zstd-1.5.0-cp312-cp312-win32.whl", hash = "sha256:a8b096e0383a3bcab34f8c97b79e1a52051189d11258bbc2bc1145997a15dd1d"}, {file = "backports_zstd-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e2802899ba4ef1a062ffe4bb1292c5df32011a54b4c3004c54f46ec975f39554"}, {file = "backports_zstd-1.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:3c0353e66942afbd45518788cfbd1e9e117828ceb390fa50517f46f291850d8e"}, {file = "backports_zstd-1.5.0-cp313-cp313-android_21_arm64_v8a.whl", hash = "sha256:02a57ee8598dd863c0b11c7af00042ce6bc045bf6f4249fa4c322c62614ca1fd"}, {file = "backports_zstd-1.5.0-cp313-cp313-android_21_x86_64.whl", hash = "sha256:c56c11eb3173d540e1fb0216f7ab477cbd3a204eca41f5f329059ee8a5d2ad47"}, {file = "backports_zstd-1.5.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:ef98f632026aa8e6ce05d786977092798efbe78677aa71219f22d31787809c90"}, {file = "backports_zstd-1.5.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:c3712300b18f9d07f788b03594b2f34dfad89d77df96938a640c5007522a6b69"}, {file = "backports_zstd-1.5.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:bdbc75d1f54df70b65bcfbc8aa0cac21475f79665bb045960af606dc07b56090"}, {file = "backports_zstd-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93d306300d25e59f1cbe98cda494bf295be03a20e8b2c5602ee5ddc03ded29f2"}, {file = "backports_zstd-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:305d2e4ae9a595d0fd9d5bea5a7a2163306c6c4dcc5eec35ecd5008219d4580e"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:c8f0967bf8d806b250fb1e905a6b8190e7ae83656d5308989243f84e01fa3774"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:76b7314ca9a253171e3e9524960e9e6411997323cf10aecbbc330faa7a90278d"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b1d0bf16bba86b1071731ced389f184e8de61c1afcafa584244f7f726632f92f"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:96709d27d406008575ef759405169d538040156704b457d8c0ac035127a46b67"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5737402c29b2bd5bc661d4cde08aed531ed326f2b59a7ad98dc07650dc99a2c9"}, {file = "backports_zstd-1.5.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2b65f37ddd375114dbf84658e7dd168e10f5a93394940bfefa7fafc2d3234450"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4fae7825dde4f81c28b4c66b1e997f893e296c3f1668351952b3ed085eb9f8cd"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3aa10e77c0e712d2dfb950910b50591c2fb11f0f1328814e23acc0b4950766df"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:518b2ef54ce0fee6d29379cfd64ef66e639456f1b18943466e929b19677f135f"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:673a1e5fdaa6cb0c7a967eb33066b6dd564871b3498a93e11e2972998047d11f"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:1277c07ff2d731586aa05aebd946a1b30184620d886a735dd5d5bf94a4a1061e"}, {file = "backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aff334c7c38b4aea2a899f3138a99c1d58f0686ad7815c74bff506ecf4333296"}, {file = "backports_zstd-1.5.0-cp313-cp313-win32.whl", hash = "sha256:b932834c4d85360f46d1e7fbf3eee1e26ba594e0eb5c3ee1281e89bc1d48d06f"}, {file = "backports_zstd-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:c71dfbeced720326a8917a6edf921c568dc2396228c6432205c6d7e7fe7f3707"}, {file = "backports_zstd-1.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:7b5798b20ffff71ee4620a01f56fe0b50271724b4251db08c90a069446cc4752"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9685586eb67fa2e59eab8027d48e8275ce90e404b6dc737b508f741853ba6cb7"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a68ab446d007d34e12f5a812e6f7d1c120a3d15cb5d4e62b7568926a6da6fb7"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:627973d4375a42500a66cc2ea912f6223249a6cdfeb56cc340b0d20b5a3475d0"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c077639e99de02a679dca9c6a189f60a76e7d0096977c0ebd070c31de8df57a"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ac2b3895fc9b1f0b0e71bffa179b48930dc27643b7e4885869afd295e7dfe1e"}, {file = "backports_zstd-1.5.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:41b23cbd72f503aedcaaaa23d55d2d98d449e5938154d2b3f57832c73b286cee"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0ca2d4ac4901eada2cfb86fda692e5d4a1e09485d9f2ec5777dc6cd3154b3b46"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:20796211a623ec6e0061cef4d7cca760e9e0a0a951bb30dc9ba89ed4a3fea5e4"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:5232cd2a58c60da4ceb0e09e42dbc579b92dda4a9301a756af0c738223a23487"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:012d88a9ae08f331e1adc03dfbda4ff2ae7f76ea62455975827b215677a11aec"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cbb7d79f8e43b6e0e17616961e425b9f8b32d9933e1db69242baa6e21f44a978"}, {file = "backports_zstd-1.5.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6172dcdd664ef243e55a35e6b45f1c866767c61043f0ddcd908abd14df662065"}, {file = "backports_zstd-1.5.0.tar.gz", hash = "sha256:a5e622a82eb183b4fbe18032755ce0a15fa9a82f2adb9b621620b91247aaedb7"}, ] [[package]] name = "bidict" version = "0.23.1" description = "The bidirectional mapping library for Python." optional = false python-versions = ">=3.8" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "bidict-0.23.1-py3-none-any.whl", hash = "sha256:5dae8d4d79b552a71cbabc7deb25dfe8ce710b17ff41711e13010ead2abfc3e5"}, {file = "bidict-0.23.1.tar.gz", hash = "sha256:03069d763bc387bbd20e7d49914e75fc4132a41937fa3405417e1a5a2d006d71"}, ] [[package]] name = "black" version = "26.5.1" description = "The uncompromising code formatter." optional = false python-versions = ">=3.10" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "black-26.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9942db8888e06943c5dde66ca0037dcff82a2a4ec1ad0ada9e0d2ee9d9823893"}, {file = "black-26.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:89c93167a74d3a75dfaa38a5c7cca015537d5820dd7f17d63267d674a61cae90"}, {file = "black-26.5.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22f2cd76d069cc54c71f10360744ba8983fbb616903b4304a85b734915c8e1b4"}, {file = "black-26.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:87ed5c6f450580a2f6790bc7cbfb016dfc73bc750249762268a3695361315eef"}, {file = "black-26.5.1-cp310-cp310-win_arm64.whl", hash = "sha256:58b4bd92cf88aacf83d88479c8f9caee044b1ec55f2451a337354a7ea2590a22"}, {file = "black-26.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:96ae2c733b2aabdd9986e2c5df628ff3473676cd1c5faded1ff496cf6d74083c"}, {file = "black-26.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0e48b87e03bf109288e55cfceadcfa15ff5470aca2851a851950ed2926f450d7"}, {file = "black-26.5.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5119fa92ae61f786e8c3662fd60aece1d0a2dd5cca5d0c79417a95e7a4272a59"}, {file = "black-26.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:30d3c14661f2792e9142cce3eeeb1cbc175b3eb5f733be0c8eeb99651e52b0c3"}, {file = "black-26.5.1-cp311-cp311-win_arm64.whl", hash = "sha256:1ef92b76f7733f282fd096ea406200b5a286c42947412b0eaff3a74e3616cefe"}, {file = "black-26.5.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4ad6fa01f941920f54f2bbb35f3df7673428a0ef98a0b0840c2eaef3b110efa8"}, {file = "black-26.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3915f256e75a2d7cf88d8953d37f780455dc586cc72dee059c528fe77f581217"}, {file = "black-26.5.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d98d4137277c75dfb898ec8d846c4fd68ba1e9cf77f95e2865c203dc18f4c3d"}, {file = "black-26.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:a1dca32d9f1784af512a13410ec204c6f7f0aa9797a111c42e1c03449821c264"}, {file = "black-26.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:1037d5ac7b7b310b2632ad867ec8d0e4c4819dcdb0b820f63135da746a24e418"}, {file = "black-26.5.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2b36cf2ddf5566e205f6535f782a62194a184d33e175b64ae8c40b1737522be3"}, {file = "black-26.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f7ea64ebfa01b50f693508fc39f875e264446d3b097088f84f203b9d09618a0"}, {file = "black-26.5.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecb3e624844c798144e9bd986954e0adc81d8911a1f30f375e1252fe26e8c294"}, {file = "black-26.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:e1a26503279b6b310669fb0b219c39e4820b77e8189fe80f522bb511f247db0a"}, {file = "black-26.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:5c34b25da232ead53a6f335b76dbea124f4d152ad568b9080d6f944bc2b34b52"}, {file = "black-26.5.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e88976690a64b0af98312ca958415849cb42423423c5f2ee74af4b49a97a2168"}, {file = "black-26.5.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32d5ea7f6c8bdfa6e648326ebca1f02b0764e2a029edc6f8dce2627e19d468c3"}, {file = "black-26.5.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ea8d16dc41655aa113cd64665e7219446cd7e4ff2248d7178eaa905190c86b18"}, {file = "black-26.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:577f21094ea469ef92ec1adaf2c9441a226d2144d01a5be2fa823cecf6543e50"}, {file = "black-26.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:ed1a20af114c301a0269bf01163d51dbef72737fd65f850001e7cbe7f3c7abae"}, {file = "black-26.5.1-py3-none-any.whl", hash = "sha256:4ed7f7da04046d2e488437170797d3b4a4ad83906683bcb7dfc68b673bbce5e2"}, {file = "black-26.5.1.tar.gz", hash = "sha256:dd321f668053961824bcc1be1cc1df748b2d7e4fa28086b08331e577b0100a73"}, ] [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" packaging = ">=22.0" pathspec = ">=1.0.0" platformdirs = ">=2" pytokens = ">=0.4.0,<0.5.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] d = ["aiohttp (>=3.10)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2) ; sys_platform != \"win32\"", "winloop (>=0.5.0) ; sys_platform == \"win32\""] [[package]] name = "blinker" version = "1.9.0" description = "Fast, simple object-to-object and broadcast signaling" optional = false python-versions = ">=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc"}, {file = "blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf"}, ] [[package]] name = "brotli" version = "1.2.0" description = "Python bindings for the Brotli compression library" optional = false python-versions = "*" groups = ["main"] markers = "platform_python_implementation != \"PyPy\" and (platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\")" files = [ {file = "brotli-1.2.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:99cfa69813d79492f0e5d52a20fd18395bc82e671d5d40bd5a91d13e75e468e8"}, {file = "brotli-1.2.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:3ebe801e0f4e56d17cd386ca6600573e3706ce1845376307f5d2cbd32149b69a"}, {file = "brotli-1.2.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:a387225a67f619bf16bd504c37655930f910eb03675730fc2ad69d3d8b5e7e92"}, {file = "brotli-1.2.0-cp27-cp27m-win32.whl", hash = "sha256:b908d1a7b28bc72dfb743be0d4d3f8931f8309f810af66c906ae6cd4127c93cb"}, {file = "brotli-1.2.0-cp27-cp27m-win_amd64.whl", hash = "sha256:d206a36b4140fbb5373bf1eb73fb9de589bb06afd0d22376de23c5e91d0ab35f"}, {file = "brotli-1.2.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7e9053f5fb4e0dfab89243079b3e217f2aea4085e4d58c5c06115fc34823707f"}, {file = "brotli-1.2.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:4735a10f738cb5516905a121f32b24ce196ab82cfc1e4ba2e3ad1b371085fd46"}, {file = "brotli-1.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b90b767916ac44e93a8e28ce6adf8d551e43affb512f2377c732d486ac6514e"}, {file = "brotli-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6be67c19e0b0c56365c6a76e393b932fb0e78b3b56b711d180dd7013cb1fd984"}, {file = "brotli-1.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0bbd5b5ccd157ae7913750476d48099aaf507a79841c0d04a9db4415b14842de"}, {file = "brotli-1.2.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3f3c908bcc404c90c77d5a073e55271a0a498f4e0756e48127c35d91cf155947"}, {file = "brotli-1.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1b557b29782a643420e08d75aea889462a4a8796e9a6cf5621ab05a3f7da8ef2"}, {file = "brotli-1.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81da1b229b1889f25adadc929aeb9dbc4e922bd18561b65b08dd9343cfccca84"}, {file = "brotli-1.2.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ff09cd8c5eec3b9d02d2408db41be150d8891c5566addce57513bf546e3d6c6d"}, {file = "brotli-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a1778532b978d2536e79c05dac2d8cd857f6c55cd0c95ace5b03740824e0e2f1"}, {file = "brotli-1.2.0-cp310-cp310-win32.whl", hash = "sha256:b232029d100d393ae3c603c8ffd7e3fe6f798c5e28ddca5feabb8e8fdb732997"}, {file = "brotli-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:ef87b8ab2704da227e83a246356a2b179ef826f550f794b2c52cddb4efbd0196"}, {file = "brotli-1.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:15b33fe93cedc4caaff8a0bd1eb7e3dab1c61bb22a0bf5bdfdfd97cd7da79744"}, {file = "brotli-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:898be2be399c221d2671d29eed26b6b2713a02c2119168ed914e7d00ceadb56f"}, {file = "brotli-1.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:350c8348f0e76fff0a0fd6c26755d2653863279d086d3aa2c290a6a7251135dd"}, {file = "brotli-1.2.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2e1ad3fda65ae0d93fec742a128d72e145c9c7a99ee2fcd667785d99eb25a7fe"}, {file = "brotli-1.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:40d918bce2b427a0c4ba189df7a006ac0c7277c180aee4617d99e9ccaaf59e6a"}, {file = "brotli-1.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2a7f1d03727130fc875448b65b127a9ec5d06d19d0148e7554384229706f9d1b"}, {file = "brotli-1.2.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9c79f57faa25d97900bfb119480806d783fba83cd09ee0b33c17623935b05fa3"}, {file = "brotli-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:844a8ceb8483fefafc412f85c14f2aae2fb69567bf2a0de53cdb88b73e7c43ae"}, {file = "brotli-1.2.0-cp311-cp311-win32.whl", hash = "sha256:aa47441fa3026543513139cb8926a92a8e305ee9c71a6209ef7a97d91640ea03"}, {file = "brotli-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:022426c9e99fd65d9475dce5c195526f04bb8be8907607e27e747893f6ee3e24"}, {file = "brotli-1.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:35d382625778834a7f3061b15423919aa03e4f5da34ac8e02c074e4b75ab4f84"}, {file = "brotli-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a61c06b334bd99bc5ae84f1eeb36bfe01400264b3c352f968c6e30a10f9d08b"}, {file = "brotli-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:acec55bb7c90f1dfc476126f9711a8e81c9af7fb617409a9ee2953115343f08d"}, {file = "brotli-1.2.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:260d3692396e1895c5034f204f0db022c056f9e2ac841593a4cf9426e2a3faca"}, {file = "brotli-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:072e7624b1fc4d601036ab3f4f27942ef772887e876beff0301d261210bca97f"}, {file = "brotli-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adedc4a67e15327dfdd04884873c6d5a01d3e3b6f61406f99b1ed4865a2f6d28"}, {file = "brotli-1.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7a47ce5c2288702e09dc22a44d0ee6152f2c7eda97b3c8482d826a1f3cfc7da7"}, {file = "brotli-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:af43b8711a8264bb4e7d6d9a6d004c3a2019c04c01127a868709ec29962b6036"}, {file = "brotli-1.2.0-cp312-cp312-win32.whl", hash = "sha256:e99befa0b48f3cd293dafeacdd0d191804d105d279e0b387a32054c1180f3161"}, {file = "brotli-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:b35c13ce241abdd44cb8ca70683f20c0c079728a36a996297adb5334adfc1c44"}, {file = "brotli-1.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9e5825ba2c9998375530504578fd4d5d1059d09621a02065d1b6bfc41a8e05ab"}, {file = "brotli-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0cf8c3b8ba93d496b2fae778039e2f5ecc7cff99df84df337ca31d8f2252896c"}, {file = "brotli-1.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8565e3cdc1808b1a34714b553b262c5de5fbda202285782173ec137fd13709f"}, {file = "brotli-1.2.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:26e8d3ecb0ee458a9804f47f21b74845cc823fd1bb19f02272be70774f56e2a6"}, {file = "brotli-1.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67a91c5187e1eec76a61625c77a6c8c785650f5b576ca732bd33ef58b0dff49c"}, {file = "brotli-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ecdb3b6dc36e6d6e14d3a1bdc6c1057c8cbf80db04031d566eb6080ce283a48"}, {file = "brotli-1.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3e1b35d56856f3ed326b140d3c6d9db91740f22e14b06e840fe4bb1923439a18"}, {file = "brotli-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54a50a9dad16b32136b2241ddea9e4df159b41247b2ce6aac0b3276a66a8f1e5"}, {file = "brotli-1.2.0-cp313-cp313-win32.whl", hash = "sha256:1b1d6a4efedd53671c793be6dd760fcf2107da3a52331ad9ea429edf0902f27a"}, {file = "brotli-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:b63daa43d82f0cdabf98dee215b375b4058cce72871fd07934f179885aad16e8"}, {file = "brotli-1.2.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:6c12dad5cd04530323e723787ff762bac749a7b256a5bece32b2243dd5c27b21"}, {file = "brotli-1.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3219bd9e69868e57183316ee19c84e03e8f8b5a1d1f2667e1aa8c2f91cb061ac"}, {file = "brotli-1.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:963a08f3bebd8b75ac57661045402da15991468a621f014be54e50f53a58d19e"}, {file = "brotli-1.2.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9322b9f8656782414b37e6af884146869d46ab85158201d82bab9abbcb971dc7"}, {file = "brotli-1.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cf9cba6f5b78a2071ec6fb1e7bd39acf35071d90a81231d67e92d637776a6a63"}, {file = "brotli-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7547369c4392b47d30a3467fe8c3330b4f2e0f7730e45e3103d7d636678a808b"}, {file = "brotli-1.2.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1530af5c3c275b8524f2e24841cbe2599d74462455e9bae5109e9ff42e9361"}, {file = "brotli-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d2d085ded05278d1c7f65560aae97b3160aeb2ea2c0b3e26204856beccb60888"}, {file = "brotli-1.2.0-cp314-cp314-win32.whl", hash = "sha256:832c115a020e463c2f67664560449a7bea26b0c1fdd690352addad6d0a08714d"}, {file = "brotli-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:e7c0af964e0b4e3412a0ebf341ea26ec767fa0b4cf81abb5e897c9338b5ad6a3"}, {file = "brotli-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:82676c2781ecf0ab23833796062786db04648b7aae8be139f6b8065e5e7b1518"}, {file = "brotli-1.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c16ab1ef7bb55651f5836e8e62db1f711d55b82ea08c3b8083ff037157171a69"}, {file = "brotli-1.2.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e85190da223337a6b7431d92c799fca3e2982abd44e7b8dec69938dcc81c8e9e"}, {file = "brotli-1.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d8c05b1dfb61af28ef37624385b0029df902ca896a639881f594060b30ffc9a7"}, {file = "brotli-1.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:465a0d012b3d3e4f1d6146ea019b5c11e3e87f03d1676da1cc3833462e672fb0"}, {file = "brotli-1.2.0-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:96fbe82a58cdb2f872fa5d87dedc8477a12993626c446de794ea025bbda625ea"}, {file = "brotli-1.2.0-cp36-cp36m-musllinux_1_2_i686.whl", hash = "sha256:1b71754d5b6eda54d16fbbed7fce2d8bc6c052a1b91a35c320247946ee103502"}, {file = "brotli-1.2.0-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:66c02c187ad250513c2f4fce973ef402d22f80e0adce734ee4e4efd657b6cb64"}, {file = "brotli-1.2.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:ba76177fd318ab7b3b9bf6522be5e84c2ae798754b6cc028665490f6e66b5533"}, {file = "brotli-1.2.0-cp36-cp36m-win32.whl", hash = "sha256:c1702888c9f3383cc2f09eb3e88b8babf5965a54afb79649458ec7c3c7a63e96"}, {file = "brotli-1.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f8d635cafbbb0c61327f942df2e3f474dde1cff16c3cd0580564774eaba1ee13"}, {file = "brotli-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e80a28f2b150774844c8b454dd288be90d76ba6109670fe33d7ff54d96eb5cb8"}, {file = "brotli-1.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b1b799f45da91292ffaa21a473ab3a3054fa78560e8ff67082a185274431c8"}, {file = "brotli-1.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29b7e6716ee4ea0c59e3b241f682204105f7da084d6254ec61886508efeb43bc"}, {file = "brotli-1.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:640fe199048f24c474ec6f3eae67c48d286de12911110437a36a87d7c89573a6"}, {file = "brotli-1.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:92edab1e2fd6cd5ca605f57d4545b6599ced5dea0fd90b2bcdf8b247a12bd190"}, {file = "brotli-1.2.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7274942e69b17f9cef76691bcf38f2b2d4c8a5f5dba6ec10958363dcb3308a0a"}, {file = "brotli-1.2.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:a56ef534b66a749759ebd091c19c03ef81eb8cd96f0d1d16b59127eaf1b97a12"}, {file = "brotli-1.2.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:5732eff8973dd995549a18ecbd8acd692ac611c5c0bb3f59fa3541ae27b33be3"}, {file = "brotli-1.2.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:598e88c736f63a0efec8363f9eb34e5b5536b7b6b1821e401afcb501d881f59a"}, {file = "brotli-1.2.0-cp37-cp37m-win32.whl", hash = "sha256:7ad8cec81f34edf44a1c6a7edf28e7b7806dfb8886e371d95dcf789ccd4e4982"}, {file = "brotli-1.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:865cedc7c7c303df5fad14a57bc5db1d4f4f9b2b4d0a7523ddd206f00c121a16"}, {file = "brotli-1.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ac27a70bda257ae3f380ec8310b0a06680236bea547756c277b5dfe55a2452a8"}, {file = "brotli-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e813da3d2d865e9793ef681d3a6b66fa4b7c19244a45b817d0cceda67e615990"}, {file = "brotli-1.2.0-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9fe11467c42c133f38d42289d0861b6b4f9da31e8087ca2c0d7ebb4543625526"}, {file = "brotli-1.2.0-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c0d6770111d1879881432f81c369de5cde6e9467be7c682a983747ec800544e2"}, {file = "brotli-1.2.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:eda5a6d042c698e28bda2507a89b16555b9aa954ef1d750e1c20473481aff675"}, {file = "brotli-1.2.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3173e1e57cebb6d1de186e46b5680afbd82fd4301d7b2465beebe83ed317066d"}, {file = "brotli-1.2.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:71a66c1c9be66595d628467401d5976158c97888c2c9379c034e1e2312c5b4f5"}, {file = "brotli-1.2.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:1e68cdf321ad05797ee41d1d09169e09d40fdf51a725bb148bff892ce04583d7"}, {file = "brotli-1.2.0-cp38-cp38-win32.whl", hash = "sha256:f16dace5e4d3596eaeb8af334b4d2c820d34b8278da633ce4a00020b2eac981c"}, {file = "brotli-1.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:14ef29fc5f310d34fc7696426071067462c9292ed98b5ff5a27ac70a200e5470"}, {file = "brotli-1.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8d4f47f284bdd28629481c97b5f29ad67544fa258d9091a6ed1fda47c7347cd1"}, {file = "brotli-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2881416badd2a88a7a14d981c103a52a23a276a553a8aacc1346c2ff47c8dc17"}, {file = "brotli-1.2.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d39b54b968f4b49b5e845758e202b1035f948b0561ff5e6385e855c96625971"}, {file = "brotli-1.2.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:95db242754c21a88a79e01504912e537808504465974ebb92931cfca2510469e"}, {file = "brotli-1.2.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bba6e7e6cfe1e6cb6eb0b7c2736a6059461de1fa2c0ad26cf845de6c078d16c8"}, {file = "brotli-1.2.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:88ef7d55b7bcf3331572634c3fd0ed327d237ceb9be6066810d39020a3ebac7a"}, {file = "brotli-1.2.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:7fa18d65a213abcfbb2f6cafbb4c58863a8bd6f2103d65203c520ac117d1944b"}, {file = "brotli-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:09ac247501d1909e9ee47d309be760c89c990defbb2e0240845c892ea5ff0de4"}, {file = "brotli-1.2.0-cp39-cp39-win32.whl", hash = "sha256:c25332657dee6052ca470626f18349fc1fe8855a56218e19bd7a8c6ad4952c49"}, {file = "brotli-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:1ce223652fd4ed3eb2b7f78fbea31c52314baecfac68db44037bb4167062a937"}, {file = "brotli-1.2.0.tar.gz", hash = "sha256:e310f77e41941c13340a95976fe66a8a95b01e783d430eeaf7a2f87e0a57dd0a"}, ] [[package]] name = "brotlicffi" version = "1.2.0.1" description = "Python CFFI bindings to the Brotli library" optional = false python-versions = ">=3.8" groups = ["main"] markers = "platform_python_implementation == \"PyPy\" and (platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\")" files = [ {file = "brotlicffi-1.2.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c85e65913cf2b79c57a3fdd05b98d9731d9255dc0cb696b09376cc091b9cddd"}, {file = "brotlicffi-1.2.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:535f2d05d0273408abc13fc0eebb467afac17b0ad85090c8913690d40207dac5"}, {file = "brotlicffi-1.2.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce17eb798ca59ecec67a9bb3fd7a4304e120d1cd02953ce522d959b9a84d58ac"}, {file = "brotlicffi-1.2.0.1-cp314-cp314t-win32.whl", hash = "sha256:3c9544f83cb715d95d7eab3af4adbbef8b2093ad6382288a83b3a25feb1a57ec"}, {file = "brotlicffi-1.2.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:625f8115d32ae9c0740d01ea51518437c3fbaa3e78d41cb18459f6f7ac326000"}, {file = "brotlicffi-1.2.0.1-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:91ba5f0ccc040f6ff8f7efaf839f797723d03ed46acb8ae9408f99ffd2572cf4"}, {file = "brotlicffi-1.2.0.1-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be9a670c6811af30a4bd42d7116dc5895d3b41beaa8ed8a89050447a0181f5ce"}, {file = "brotlicffi-1.2.0.1-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3314a3476f59e5443f9f72a6dff16edc0c3463c9b318feaef04ae3e4683f5a"}, {file = "brotlicffi-1.2.0.1-cp38-abi3-win32.whl", hash = "sha256:82ea52e2b5d3145b6c406ebd3efb0d55db718b7ad996bd70c62cec0439de1187"}, {file = "brotlicffi-1.2.0.1-cp38-abi3-win_amd64.whl", hash = "sha256:da2e82a08e7778b8bc539d27ca03cdd684113e81394bfaaad8d0dfc6a17ddede"}, {file = "brotlicffi-1.2.0.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e015af99584c6db1490a69a210c765953e473e63adc2d891ac3062a737c9e851"}, {file = "brotlicffi-1.2.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:37cb587d32bf7168e2218c455e22e409ad1f3157c6c71945879a311f3e6b6abf"}, {file = "brotlicffi-1.2.0.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d6ba65dd528892b4d9960beba2ae011a753620bcfc66cf6fa3cee18d7b0baa4"}, {file = "brotlicffi-1.2.0.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f2a5575653b0672638ba039b82fda56854934d7a6a24d4b8b5033f73ab43cbc1"}, {file = "brotlicffi-1.2.0.1.tar.gz", hash = "sha256:c20d5c596278307ad06414a6d95a892377ea274a5c6b790c2548c009385d621c"}, ] [package.dependencies] cffi = [ {version = ">=1.0.0", markers = "python_version < \"3.13\""}, {version = ">=1.17.0", markers = "python_version >= \"3.13\""}, ] [[package]] name = "cabarchive" version = "0.2.5" description = "A pure-python library for creating and extracting cab files" optional = false python-versions = "*" groups = ["dev"] markers = "sys_platform == \"win32\"" files = [ {file = "cabarchive-0.2.5-py3-none-any.whl", hash = "sha256:6d95d83145625898143d732dc0aa0443e53b4262fe9f282f3db5cdedfaf31e01"}, {file = "cabarchive-0.2.5.tar.gz", hash = "sha256:b508b1cad890857e55f3f7a2027ca7bedb9dc05de5eff07f8289f9546200a7aa"}, ] [[package]] name = "certifi" version = "2026.5.20" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897"}, {file = "certifi-2026.5.20.tar.gz", hash = "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d"}, ] [[package]] name = "cffi" version = "2.0.0" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44"}, {file = "cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49"}, {file = "cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453"}, {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495"}, {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5"}, {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb"}, {file = "cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a"}, {file = "cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739"}, {file = "cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe"}, {file = "cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c"}, {file = "cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26"}, {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9"}, {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414"}, {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743"}, {file = "cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5"}, {file = "cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5"}, {file = "cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d"}, {file = "cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d"}, {file = "cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c"}, {file = "cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba"}, {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94"}, {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187"}, {file = "cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18"}, {file = "cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5"}, {file = "cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6"}, {file = "cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb"}, {file = "cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca"}, {file = "cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26"}, {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c"}, {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b"}, {file = "cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27"}, {file = "cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75"}, {file = "cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91"}, {file = "cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5"}, {file = "cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775"}, {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205"}, {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1"}, {file = "cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f"}, {file = "cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25"}, {file = "cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad"}, {file = "cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9"}, {file = "cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592"}, {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512"}, {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4"}, {file = "cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e"}, {file = "cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6"}, {file = "cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9"}, {file = "cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf"}, {file = "cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7"}, {file = "cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63"}, {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2"}, {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65"}, {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322"}, {file = "cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a"}, {file = "cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9"}, {file = "cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529"}, ] [package.dependencies] pycparser = {version = "*", markers = "implementation_name != \"PyPy\""} [[package]] name = "charset-normalizer" version = "3.4.7" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153"}, {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616"}, {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a"}, {file = "charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374"}, {file = "charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943"}, {file = "charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008"}, {file = "charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265"}, {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c"}, {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d"}, {file = "charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad"}, {file = "charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00"}, {file = "charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1"}, {file = "charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb"}, {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464"}, {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49"}, {file = "charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c"}, {file = "charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6"}, {file = "charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d"}, {file = "charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215"}, {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48"}, {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a"}, {file = "charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e"}, {file = "charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110"}, {file = "charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b"}, {file = "charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae"}, {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44"}, {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72"}, {file = "charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10"}, {file = "charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f"}, {file = "charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c"}, {file = "charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d"}, {file = "charset_normalizer-3.4.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e5f4d355f0a2b1a31bc3edec6795b46324349c9cb25eed068049e4f472fb4259"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:16d971e29578a5e97d7117866d15889a4a07befe0e87e703ed63cd90cb348c01"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dca4bbc466a95ba9c0234ef56d7dd9509f63da22274589ebd4ed7f1f4d4c54e3"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e80c8378d8f3d83cd3164da1ad2df9e37a666cdde7b1cb2298ed0b558064be30"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36836d6ff945a00b88ba1e4572d721e60b5b8c98c155d465f56ad19d68f23734"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux_2_31_armv7l.whl", hash = "sha256:bd9b23791fe793e4968dba0c447e12f78e425c59fc0e3b97f6450f4781f3ee60"}, {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aef65cd602a6d0e0ff6f9930fcb1c8fec60dd2cfcb6facaf4bdb0e5873042db0"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:82b271f5137d07749f7bf32f70b17ab6eaabedd297e75dce75081a24f76eb545"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:1efde3cae86c8c273f1eb3b287be7d8499420cf2fe7585c41d370d3e790054a5"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:c593052c465475e64bbfe5dbd81680f64a67fdc752c56d7a0ae205dc8aeefe0f"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:af21eb4409a119e365397b2adbaca4c9ccab56543a65d5dbd9f920d6ac29f686"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:84c018e49c3bf790f9c2771c45e9313a08c2c2a6342b162cd650258b57817706"}, {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dd915403e231e6b1809fe9b6d9fc55cf8fb5e02765ac625d9cd623342a7905d7"}, {file = "charset_normalizer-3.4.7-cp38-cp38-win32.whl", hash = "sha256:320ade88cfb846b8cd6b4ddf5ee9e80ee0c1f52401f2456b84ae1ae6a1a5f207"}, {file = "charset_normalizer-3.4.7-cp38-cp38-win_amd64.whl", hash = "sha256:1dc8b0ea451d6e69735094606991f32867807881400f808a106ee1d963c46a83"}, {file = "charset_normalizer-3.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:177a0ba5f0211d488e295aaf82707237e331c24788d8d76c96c5a41594723217"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e0d51f618228538a3e8f46bd246f87a6cd030565e015803691603f55e12afb5"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:14265bfe1f09498b9d8ec91e9ec9fa52775edf90fcbde092b25f4a33d444fea9"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:87fad7d9ba98c86bcb41b2dc8dbb326619be2562af1f8ff50776a39e55721c5a"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f22dec1690b584cea26fade98b2435c132c1b5f68e39f5a0b7627cd7ae31f1dc"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux_2_31_armv7l.whl", hash = "sha256:d61f00a0869d77422d9b2aba989e2d24afa6ffd552af442e0e58de4f35ea6d00"}, {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6370e8686f662e6a3941ee48ed4742317cafbe5707e36406e9df792cdb535776"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a6c5863edfbe888d9eff9c8b8087354e27618d9da76425c119293f11712a6319"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:ed065083d0898c9d5b4bbec7b026fd755ff7454e6e8b73a67f8c744b13986e24"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2cd4a60d0e2fb04537162c62bbbb4182f53541fe0ede35cdf270a1c1e723cc42"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:813c0e0132266c08eb87469a642cb30aaff57c5f426255419572aaeceeaa7bf4"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:07d9e39b01743c3717745f4c530a6349eadbfa043c7577eef86c502c15df2c67"}, {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c0f081d69a6e58272819b70288d3221a6ee64b98df852631c80f293514d3b274"}, {file = "charset_normalizer-3.4.7-cp39-cp39-win32.whl", hash = "sha256:8751d2787c9131302398b11e6c8068053dcb55d5a8964e114b6e196cf16cb366"}, {file = "charset_normalizer-3.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:12a6fff75f6bc66711b73a2f0addfc4c8c15a20e805146a02d147a318962c444"}, {file = "charset_normalizer-3.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:bb8cc7534f51d9a017b93e3e85b260924f909601c3df002bcdb58ddb4dc41a5c"}, {file = "charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d"}, {file = "charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5"}, ] [[package]] name = "click" version = "8.4.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" groups = ["main", "dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2"}, {file = "click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] markers = {main = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"", dev = "(platform_system == \"Windows\" or sys_platform == \"win32\") and (platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\")"} [[package]] name = "cx-freeze" version = "8.6.4" description = "Create standalone executables from Python scripts" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "cx_freeze-8.6.4-py3-none-any.whl", hash = "sha256:37f1ac07d1c2f5e6e28eaf71bc24cb8300045d5e9998447fdc9662471ce6df88"}, {file = "cx_freeze-8.6.4.tar.gz", hash = "sha256:16227706ad06b4b96f77c48980e2b363f0302c971f66c6b05567fd63a27596a4"}, ] [package.dependencies] dmgbuild = {version = ">=1.6.1", markers = "sys_platform == \"darwin\""} filelock = {version = ">=3.20.3", markers = "sys_platform == \"linux\""} freeze-core = ">=0.6.1" lief = {version = ">=0.15.1,<0.18", markers = "sys_platform == \"win32\""} packaging = ">=25.0" patchelf = {version = ">=0.16.1,<0.18", markers = "sys_platform == \"linux\" and (platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\")"} python-msilib = {version = ">=0.4.1", markers = "sys_platform == \"win32\" and python_version >= \"3.13\""} setuptools = ">=78.1.1,<83.0" tomli = {version = ">=2.0.1", markers = "python_version == \"3.10\""} [[package]] name = "cython" version = "3.2.5" description = "The Cython compiler for writing C extensions in the Python language." optional = false python-versions = ">=3.8" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "cython-3.2.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:220e8b160b2a4ddc362ad8a8c2ab885aa7156099702cdc48f6518a5de921b553"}, {file = "cython-3.2.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f4e722ceab6d795b4682d693656218671c873d4aa74119c54a2b62de0e7c48ce"}, {file = "cython-3.2.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b4bfb00baef07106a1e5e7252ace18de91225322f7fa29970995aea7c380fa21"}, {file = "cython-3.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:45baf00cb8b222a2ca7e9c48add5dac3ceb6e65be4f591150a6b6767ce1f86b0"}, {file = "cython-3.2.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5887c24ebd19604b7a76d8ea57446cb562a590f7f2557e5954a69aae38b3195e"}, {file = "cython-3.2.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56c97c5e43782ec9d9e66c465e253d2ccde0c578c364c46445efe484965524f0"}, {file = "cython-3.2.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:75f5295dc1b32d084fec598f9507e6f264311d78c07da640bc9a05dc47f7ac2c"}, {file = "cython-3.2.5-cp311-cp311-win_amd64.whl", hash = "sha256:b8bc1325cf3e4394cc08a3c1ea7fa24f02f405eef0e8c156d5055f6f9a7a1565"}, {file = "cython-3.2.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eb38b89e5a8eb2508a1a0832063826b0703dfb02be84e4aa34b8818ce0ca50fe"}, {file = "cython-3.2.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c80e1e5cba5b4b9890364e9360939fc298c474f25754bb4bb861270d24bda6d6"}, {file = "cython-3.2.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e2c976ee96da4deff50506c7882ccebb4a932fc178ef27eb42bfde959839"}, {file = "cython-3.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:29243859d6824e2d33bae92fc83d591c3671b6d9ac1b757fa264b894ae906c2b"}, {file = "cython-3.2.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5d7a60835345a8bd29d3aa57070880cc3ce017ea0ade7b9f771ce4bf539b1f"}, {file = "cython-3.2.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9b564f67b01bffa2521f475794b49f2787709cec1f91d5935a38eba37f2b359"}, {file = "cython-3.2.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0a81220817ff954eddf4512a5b82089094a2f523eb1dc4ad555efd6f07b009b4"}, {file = "cython-3.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:3795237ab49753647e329181b140c424e8aa97543074f171f8d2c45e5014a06e"}, {file = "cython-3.2.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a636c8b7824f3cb587eb2fdde59d8f4a14d433565508081cc290198e37567910"}, {file = "cython-3.2.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69cd71b90d4e0f142fd15b2353982c3f9171fc5e613001f16bcb366ffb29004b"}, {file = "cython-3.2.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3864da4ca2ebe4660d8f672f2143b02840bf3045655222f6090486171c84298f"}, {file = "cython-3.2.5-cp314-cp314-win_amd64.whl", hash = "sha256:605c447188aecf2941709f53a2ce44862be256e54601c01b38ab710d83db8047"}, {file = "cython-3.2.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3a423468ee77c3c5b26494f57d9c52e9318991fb7142f4c49fb01b99373e8d6"}, {file = "cython-3.2.5-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cce98a9011ac6a2560b3587db22912bd0138267669ec567b0d57eddd2d741b8b"}, {file = "cython-3.2.5-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:561613ddd1ee83088eb126e80a5a7d73ee6eb82e0b1aea09afbe170287e5e27f"}, {file = "cython-3.2.5-cp38-cp38-win_amd64.whl", hash = "sha256:677bb60fd8f5949e26c0a7898983967dbbb65f7628481d8480956b85ca766554"}, {file = "cython-3.2.5-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:224149d18d980e6ea5001b70fc7ce096c1891d59035dfa9cc5ede50f55804913"}, {file = "cython-3.2.5-cp39-abi3-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:992a50e90d01813333752f374a4405863113059ec67102ab8d6a431a171ee328"}, {file = "cython-3.2.5-cp39-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8d7b81e6a52a84a02993f01aa5873786ba1dd593c892d93d5fe9866da0bad297"}, {file = "cython-3.2.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:34d21aeb08477c9173e8be7a566b19e880a7c8109ec6bb47a4b20cb680141114"}, {file = "cython-3.2.5-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:c4c79e697db55f082a2d3ba97702e71881d5bb1f56f0a80fa338e69101e4c59b"}, {file = "cython-3.2.5-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:39acb30eba78ba6d995d5cf3d97d57d450663d93aac6f8b93753d2b89d768c60"}, {file = "cython-3.2.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:382122de8d6b6024fc374fabc3a2b14ba5860ed981c25055ed14fe44278b9dc7"}, {file = "cython-3.2.5-cp39-abi3-win32.whl", hash = "sha256:0bc29c7f870b09efdb1f583fbec9592b33af81a7ce273b89c8f5163d7572d5c1"}, {file = "cython-3.2.5-cp39-abi3-win_arm64.whl", hash = "sha256:85b2944c3eddfc230f9082720195a2e9f869908e5a8b3185be1be832755ee7fc"}, {file = "cython-3.2.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:91cb5b9ff599612737b3fd0dddcd401acdf904b78c2caf8cd1049501d0a53f2d"}, {file = "cython-3.2.5-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:268aecadcabcdad9f773b8a5694746e0b9ee7894b56b84e2e3a2ccb6c929ea79"}, {file = "cython-3.2.5-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05c22cd606ac8d14a9cf17e48668bb37734c803978bf4d793c7f11ef54c4451f"}, {file = "cython-3.2.5-cp39-cp39-win_amd64.whl", hash = "sha256:3e5e519bad217a0b96fc281666720ed7d339da618acaa012bea712980b8fe6c9"}, {file = "cython-3.2.5-py3-none-any.whl", hash = "sha256:dc1c8cebb7df5bce37f5f8dc1e5bf04313272a5973d50a55c0ec76c83812911b"}, {file = "cython-3.2.5.tar.gz", hash = "sha256:3dd42e4cf36ad15f265bdfec2337cc00c688c8eb6d374ffd13bb19437c27bba1"}, ] [[package]] name = "dmgbuild" version = "1.6.7" description = "macOS command line utility to build disk images" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "sys_platform == \"darwin\"" files = [ {file = "dmgbuild-1.6.7-py3-none-any.whl", hash = "sha256:37ee5771c377beb3203d9164aae8046ffed8531c06edf9227f5788b3c599b1bf"}, {file = "dmgbuild-1.6.7.tar.gz", hash = "sha256:676b17acd448899f6d4a83b2184e0657480444ecb6ac9c4922889efad9e5dbfb"}, ] [package.dependencies] ds_store = ">=1.1.0" mac_alias = ">=2.0.1" [package.extras] badge-icons = ["pyobjc-framework-Quartz (>=3.0.4)"] [[package]] name = "dnspython" version = "2.8.0" description = "DNS toolkit" optional = false python-versions = ">=3.10" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af"}, {file = "dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f"}, ] [package.extras] dev = ["black (>=25.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "hypercorn (>=0.17.0)", "mypy (>=1.17)", "pylint (>=3)", "pytest (>=8.4)", "pytest-cov (>=6.2.0)", "quart-trio (>=0.12.0)", "sphinx (>=8.2.0)", "sphinx-rtd-theme (>=3.0.0)", "twine (>=6.1.0)", "wheel (>=0.45.0)"] dnssec = ["cryptography (>=45)"] doh = ["h2 (>=4.2.0)", "httpcore (>=1.0.0)", "httpx (>=0.28.0)"] doq = ["aioquic (>=1.2.0)"] idna = ["idna (>=3.10)"] trio = ["trio (>=0.30)"] wmi = ["wmi (>=1.5.1) ; platform_system == \"Windows\""] [[package]] name = "ds-store" version = "1.3.2" description = "Manipulate Finder .DS_Store files from Python" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "sys_platform == \"darwin\"" files = [ {file = "ds_store-1.3.2-py3-none-any.whl", hash = "sha256:3b37332d9f8c18ff04c385d2933b66a1d84950071364f94bfc5f5a3ab1fb361e"}, {file = "ds_store-1.3.2.tar.gz", hash = "sha256:e4da49df901123481a85b9250945f2aac054a0f0c29352cd2cc858c536cdd364"}, ] [package.dependencies] mac_alias = ">=2.2.2" [[package]] name = "eventlet" version = "0.41.0" description = "Highly concurrent networking library" optional = false python-versions = ">=3.10" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "eventlet-0.41.0-py3-none-any.whl", hash = "sha256:bc22396093cb4119ff7007776be6a5348a613ccd42eeb0f9519853a6efcbcabe"}, {file = "eventlet-0.41.0.tar.gz", hash = "sha256:35df85f0ccd3e73effb6fd9f1ceae46b500b966c7da1817289c323a307bd397b"}, ] [package.dependencies] dnspython = ">=1.15.0" greenlet = ">=1.0" [package.extras] dev = ["black", "build", "commitizen", "isort", "pip-tools", "pre-commit", "twine"] [[package]] name = "exceptiongroup" version = "1.3.1" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["dev"] markers = "python_version < \"3.11\" and (platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\")" files = [ {file = "exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598"}, {file = "exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219"}, ] [package.dependencies] typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} [package.extras] test = ["pytest (>=6)"] [[package]] name = "filelock" version = "3.29.0" description = "A platform independent file lock." optional = false python-versions = ">=3.10" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "filelock-3.29.0-py3-none-any.whl", hash = "sha256:96f5f6344709aa1572bbf631c640e4ebeeb519e08da902c39a001882f30ac258"}, {file = "filelock-3.29.0.tar.gz", hash = "sha256:69974355e960702e789734cb4871f884ea6fe50bd8404051a3530bc07809cf90"}, ] [[package]] name = "flask" version = "3.1.3" description = "A simple framework for building complex web applications." optional = false python-versions = ">=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "flask-3.1.3-py3-none-any.whl", hash = "sha256:f4bcbefc124291925f1a26446da31a5178f9483862233b23c0c96a20701f670c"}, {file = "flask-3.1.3.tar.gz", hash = "sha256:0ef0e52b8a9cd932855379197dd8f94047b359ca0a78695144304cb45f87c9eb"}, ] [package.dependencies] blinker = ">=1.9.0" click = ">=8.1.3" itsdangerous = ">=2.2.0" jinja2 = ">=3.1.2" markupsafe = ">=2.1.1" werkzeug = ">=3.1.0" [package.extras] async = ["asgiref (>=3.2)"] dotenv = ["python-dotenv"] [[package]] name = "flask-compress" version = "1.24" description = "Compress responses in your Flask app with gzip, deflate, brotli or zstandard." optional = false python-versions = ">=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "flask_compress-1.24-py3-none-any.whl", hash = "sha256:1e63668eb6e3242bd4f6ad98825a924e3984409be90c125477893d586007d00c"}, {file = "flask_compress-1.24.tar.gz", hash = "sha256:14097cefe59ecb3e466d52a6aeb62f34f125a9f7dadf1f33a53e430ce4a50f31"}, ] [package.dependencies] "backports.zstd" = {version = "*", markers = "python_version < \"3.14\""} brotli = {version = "*", markers = "platform_python_implementation != \"PyPy\""} brotlicffi = {version = "*", markers = "platform_python_implementation == \"PyPy\""} flask = "*" [[package]] name = "flask-socketio" version = "5.6.1" description = "Socket.IO integration for Flask applications" optional = false python-versions = ">=3.8" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "flask_socketio-5.6.1-py3-none-any.whl", hash = "sha256:51a3f71b28b4476c650829607e3a993e076034db6c3cc31f718f0a4b45939d42"}, {file = "flask_socketio-5.6.1.tar.gz", hash = "sha256:fe5bd995c3ed4da9a98f335d0d830fa1a19d84a64789f6265642a671fdacaeac"}, ] [package.dependencies] blinker = "*" click = "*" flask = ">=2.1.0" jinja2 = "*" python-socketio = ">=5.12.0" werkzeug = "*" [package.extras] dev = ["flask-login", "flask-session", "pytest", "pytest-cov", "redis", "tox"] docs = ["furo", "sphinx"] [[package]] name = "freeze-core" version = "0.6.1" description = "Core dependency for cx_Freeze" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "freeze_core-0.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:52f31c454c3a9a063ab1ea49fa2ceca22b2046a3cae838b0753cd99589edb484"}, {file = "freeze_core-0.6.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cf262d8907385ae6cafeca054b9c05cdb360e1646a0fb67248bf614296cd3c07"}, {file = "freeze_core-0.6.1-cp310-cp310-win32.whl", hash = "sha256:2e80cc5c2cfd52baeff9ce2d3cdee549cae594d242d5c88ffe6bc99986e50f11"}, {file = "freeze_core-0.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:74a93871bc08104ab6c382cc70bc96ac15a16e62ddf13f28721616e87857c948"}, {file = "freeze_core-0.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5512d1430e445d5511900c07cca35d2ccb1ab109b9a0e7117a163cc5d10bc8fb"}, {file = "freeze_core-0.6.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:38a125a88437585c2c119beb9f4dacb2f4d43bcd636dc126bf198a1a5271224d"}, {file = "freeze_core-0.6.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:75ae95e29440970115c6467fddd56ff0349ef7c0d633c22118c14fc6a7a09824"}, {file = "freeze_core-0.6.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c699bd210e438d176793d78a13f8eebceb7a5c046cf319ec67d37f3ade8ee19"}, {file = "freeze_core-0.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1e5a83273ea3f1ba5675bbc90e8ef6fb9c84b4c704ecb99fc00aa72ac609051f"}, {file = "freeze_core-0.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cd74353a0c1cdcf3497072b3f06884ac9c9a3966f20f43a3be665e53c5abdbe1"}, {file = "freeze_core-0.6.1-cp311-cp311-win32.whl", hash = "sha256:ffdbff036c06612e7bcc47d9f83d34717099611986e07637c39f01ab1c28ca18"}, {file = "freeze_core-0.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:3848872c2113ed2c636dfd0da2c917d58d150dfc44d56d43ec3f10b8f9da2fb9"}, {file = "freeze_core-0.6.1-cp311-cp311-win_arm64.whl", hash = "sha256:0c683acd149c9f22d0574880f64b225e07b430612fd98dbad7e1d3f2261ab30d"}, {file = "freeze_core-0.6.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3dd8adf9d6acb4c44785f3f3e317f3ba8a494bda7c14e24da096602bb687dc29"}, {file = "freeze_core-0.6.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:12f838b25d21eac6f1cc254e9325daa3949da0bb06ad28aa9a4ea26b88b8eaa9"}, {file = "freeze_core-0.6.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:71b249ce8bd393a75a47e87c2705e45dd5ff6ab12af1a663f78e1c29d48a96c6"}, {file = "freeze_core-0.6.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:26caca8bab204d9b1f9dff35560e1bd403ddaedb0b6f4215eacc0550ed7fb59d"}, {file = "freeze_core-0.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:665b7dabd8be0566122bd311b0a6c90813eb6c21b8c1e8006c092186aff858ec"}, {file = "freeze_core-0.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be128cb726c62c806a77c32855a9706c24b4fbfc018b6f0a0b0268fabdd4cfca"}, {file = "freeze_core-0.6.1-cp312-cp312-win32.whl", hash = "sha256:58b237d75fc88051c99e7a6201068a118b20df4f72a1375cdb7aa3ca728c2d00"}, {file = "freeze_core-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c95b6d5e7b490582d81fad84bc54e6144dc581ff9f36e10f2c221373ac9e1ca"}, {file = "freeze_core-0.6.1-cp312-cp312-win_arm64.whl", hash = "sha256:4379f1145d329a2232435cef7f8ea3342aa5e24dfe2db003a3df18751ab02627"}, {file = "freeze_core-0.6.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:fa2a186ca05672160e20f4a566090b35c47fd8d542922011f16a341c240ed5e4"}, {file = "freeze_core-0.6.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e612bab462ae284cf277f210f5635951309ec360c1aa3f71010512005511d099"}, {file = "freeze_core-0.6.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:4baa5ea7ba5e802de724ac9cf2a42a4888e8f5510ecca944a9005cf223ec6d63"}, {file = "freeze_core-0.6.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f5d27a6e6adeb544880e60c13432ae346abd5be8fd843b663e867e168826c524"}, {file = "freeze_core-0.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b544c6ea15b65364a87c22566c06e9f11ac2ee861f3d4d7ff7fc9679287e7954"}, {file = "freeze_core-0.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ac1ca1897e08aab3e377d513f87724ccf1649f0c71c3aad4ff3ee640577b34d4"}, {file = "freeze_core-0.6.1-cp313-cp313-win32.whl", hash = "sha256:06d16f47c4c218c90514d915f3dda161ed6dcd7dcb9ad147db51e7b057eb27ee"}, {file = "freeze_core-0.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:b3e1e4940c459a72ab6b3151ac9ad4a692550980ef1deb11b760e49e65e6cd9b"}, {file = "freeze_core-0.6.1-cp313-cp313-win_arm64.whl", hash = "sha256:54d8a89df1bd34dc10f7f5d95d9d4c326652a7a83ebfc06d2bfe0415580c6fec"}, {file = "freeze_core-0.6.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:134f3811dd21ea86cff52ad94f4c241405aa51e74fac9fba4a15d6ea9c886ed8"}, {file = "freeze_core-0.6.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fb37cadba23e8e6c16622aa6ddf630dbf27e06739fb7c8cc2532f50c3a48563a"}, {file = "freeze_core-0.6.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:d6a44251d55f9fc1d4b20486e3a73c1d8bd13cd7998eca5c87622e22a3f0f258"}, {file = "freeze_core-0.6.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ccd31f02d3f5b4492bb647859939a906f0c1b3615101a935beae75c81a3eafe6"}, {file = "freeze_core-0.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ddcf1f706f887fb39d181a2a2709a3b6c75ba3f86d8fcdfa49b81f9ed159ecc0"}, {file = "freeze_core-0.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:079c4ffc500212382d3a131fd2e691e8103b2cdaca40f6fcff475e35cef86cd8"}, {file = "freeze_core-0.6.1-cp313-cp313t-win32.whl", hash = "sha256:19b1f39e3b27aae437f08ad2429f1ef276f4839576e1c6cc242456c426c1239a"}, {file = "freeze_core-0.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:ca65c4d3c5191da679653f35151671d84418713343c3b20563b658533e625f33"}, {file = "freeze_core-0.6.1-cp313-cp313t-win_arm64.whl", hash = "sha256:d2d51ecb6e4e646ba5fae75bd36b036f6bf9b483cb702b38922b4598f2ba9fa6"}, {file = "freeze_core-0.6.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:bcc743c9d1050f676eed05c821b02030f8e50bf35d38619a40627a5ce8a64f4e"}, {file = "freeze_core-0.6.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:074d26fb9c3d4da2a5dc93a70d3353456316b4dea2055bad98bf4e45e79899e9"}, {file = "freeze_core-0.6.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7e72b5232308369cf20ee8f4519daab7458ca00a93b310922f867effc57762fa"}, {file = "freeze_core-0.6.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2055268857aabcb9f0e7e951f1dffc236830348fd7307a0dd0f92122c91ff8b9"}, {file = "freeze_core-0.6.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c050f70064085acf1a7c29e51ae15b42bf6741c1d71656c1ea49fca0fdded0e7"}, {file = "freeze_core-0.6.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7586d30f1abd2b5aebf6e88ca6262f360dbbd249908e6bfc33534d1ac8438627"}, {file = "freeze_core-0.6.1-cp314-cp314-win32.whl", hash = "sha256:a823721f8b07de0700feef2342ad45f685c044193e480c81d483ab6f8b911d89"}, {file = "freeze_core-0.6.1-cp314-cp314-win_amd64.whl", hash = "sha256:5bfb220a525fa130864b3eb6ebc9f44002d6fec74df82d9366f9dafc89513c20"}, {file = "freeze_core-0.6.1-cp314-cp314-win_arm64.whl", hash = "sha256:ae7162d863b73ff62f06e12185f62d57a0296da800523932ac62886950a72f85"}, {file = "freeze_core-0.6.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:4e34682706745f6eb347f6df9e59fc31d5c68666bb6f4257631872f4ffbd4bb1"}, {file = "freeze_core-0.6.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:21fd14fe82eaab8f7c2514fca3439f49c72061978615c364997912cf38572a18"}, {file = "freeze_core-0.6.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3e6c2980d0f2ae385e4fe9114e79723d64f85c53c4e49ff57231b1050bcf2c7c"}, {file = "freeze_core-0.6.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:913a1e4668cf56182aaa834783c29c9c13c717ee93c6039f2b840b6ce0f265d8"}, {file = "freeze_core-0.6.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1f7ae8d098fd961d7f3590cfcfb0f27a7e5cae1176e486238a73d91494ed7501"}, {file = "freeze_core-0.6.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:630fcd320c03a2f30d6b642eea3930915d770974bc4584cef1794ee3e5f1809f"}, {file = "freeze_core-0.6.1-cp314-cp314t-win32.whl", hash = "sha256:0b371c9d58393d22617f31696851dccdde7eef80cfffb99195168e27e6900701"}, {file = "freeze_core-0.6.1-cp314-cp314t-win_amd64.whl", hash = "sha256:3431b2b4ccf729b13ed87d165a313ac990241f4e98fc807f25c1e753edac0d6b"}, {file = "freeze_core-0.6.1-cp314-cp314t-win_arm64.whl", hash = "sha256:46f177017e9f9c75b0710a63597fe259f41f57221bbee3f00b66784642a52807"}, {file = "freeze_core-0.6.1.tar.gz", hash = "sha256:819642aa58b4e2c19e1ade025d9563e437c07c90fe6ac5c891e8ecee2044a2ef"}, ] [package.dependencies] cabarchive = {version = ">=0.2.4", markers = "sys_platform == \"win32\""} filelock = ">=3.20.3" striprtf = {version = ">=0.0.26", markers = "sys_platform == \"win32\""} [[package]] name = "gevent" version = "26.5.0" description = "Coroutine-based network library" optional = false python-versions = ">=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "gevent-26.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:2ba673dcbf7747513b58fa64ca7e9d6a828bc5c604d1552d23db89006d7911df"}, {file = "gevent-26.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:271b1474d81bb33036631adb16a35e5a1ee9dc414b05c999d6b01dc839a89975"}, {file = "gevent-26.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:cd3dc60581687e2618286108f8e2f820d8446be4b34131065011c066e911d39c"}, {file = "gevent-26.5.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:dc7fa28b2d627f8e87595f39043b6dec71e8e7fb97e685e5506c47cf3ff8cb2e"}, {file = "gevent-26.5.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:68c5fc21cef80268cdff88a4ae6c025fabb019b071f6f8ee4d20a7bccbddb873"}, {file = "gevent-26.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d325502eb0695708ef8c899f605573ed6847f3961f8159627dba267fbf3ce457"}, {file = "gevent-26.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a11daf3a588b932c8bf965fb18444c69aff48badec88435e988cf8d67137075a"}, {file = "gevent-26.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1101b5ef82a3fb178550cfd80f32293dc8dd2f3d0828292223ebba29d6f76e33"}, {file = "gevent-26.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:5233109ad4f3af16393ba9888f238919a05ce15ce68d6831ac8a0da8dfb750ae"}, {file = "gevent-26.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:3be804565168ffacebeb21af9f1cd689831a89f0f12fc0c3f423c730c3c9eb31"}, {file = "gevent-26.5.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:e80ad2a8a1e8bdaa5605e3bf4929e0cebf9ea7b8237c83362f7257698bb14280"}, {file = "gevent-26.5.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fe42c037253580a3386fce275f8a2a845e540f5a729916934a732f13d42e72cc"}, {file = "gevent-26.5.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:9f463c7d6f69d13b6fe8e3b832a6175a6e95328a940f38495d25496d1ae8ad88"}, {file = "gevent-26.5.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:96d5e96b1b14a4c1023dcfcc114533217f13febc3b6169254f23fc18d19fee29"}, {file = "gevent-26.5.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:bccff69c462e3650a0fd1d4e9cfc8b6effe15f3e9b1cad20a7bb5ce14b057efd"}, {file = "gevent-26.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f519139354d5ca7625df9ddb1b2ffada885c14abc5b4dbae3682e967ddf79669"}, {file = "gevent-26.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0bf57df54f1c66273bf3601c2a1e41b12138fe848933718369663bc54f177ca2"}, {file = "gevent-26.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e49ce0de007dfd7412edbc2b5d41cce33b049bb1b7086f50be5a09e601bde603"}, {file = "gevent-26.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:5c5ff29495a2eed2a244de8150f21893d6c1b15d8b4b5719ab4bbfa06db1e28f"}, {file = "gevent-26.5.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:9b4d3f34c913d1a6bec6d030365a517f3b527a9773b12e58cf56c3339bbe96e6"}, {file = "gevent-26.5.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:1d8da4e799431feeb4c9e441ac7431f0baabb9106976790d884289d08ac08359"}, {file = "gevent-26.5.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:51becdb4c30a8f45c1c028ad7a97bf5a1ed141f74b159a31aa9cc6aa1e6263a6"}, {file = "gevent-26.5.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:c42bbcd3d453b08ad8915fd3feaf3d44a3562cdf1c7b208f9837149711e16d9d"}, {file = "gevent-26.5.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bd3445e4fbeeb46690ed8efe94b8d1d46b14aa04af8866ae7a8da5997828d1c6"}, {file = "gevent-26.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b573d5b2826edc705f31f07da6889ad483a6a0d64944ebd8d32205f7c5bf46fb"}, {file = "gevent-26.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4d53b1b28f2082a151bded2850b53f6baed02f742d2a1584029e8bd42d457fb4"}, {file = "gevent-26.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:23569ce0c254eb821fc3dcfe250843dde8b3180b09bae9e222e41aa3fa4885b7"}, {file = "gevent-26.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:40cdcdb2e404b6c82b82a4576bdb33958f23fc2deb0d933e9e022b362001e647"}, {file = "gevent-26.5.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:75a0050e4b87f08ddee7e56f59e6014cd7fcdc3153046c09a847940515d12c85"}, {file = "gevent-26.5.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:fd1a0b83a04e19378d9466ae0ee2b5937cf1d7fbfdcb916b2aea82179a208574"}, {file = "gevent-26.5.0-cp314-cp314-manylinux_2_28_ppc64le.whl", hash = "sha256:4c964c15076e76391d523ec24202f579a2535f7e301a40efb1656ae046d3eb69"}, {file = "gevent-26.5.0-cp314-cp314-manylinux_2_28_s390x.whl", hash = "sha256:45d5438d1c84da5df7e832434627624709543630977332bb4e2d05ecca362cc9"}, {file = "gevent-26.5.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:354f35924113abc954819216c2a6ee16751958c615681e0490946e31b437bd2f"}, {file = "gevent-26.5.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a47cd2d32f6404212d374ad8014a3491d7477dcf0cc09c5a2308ad6d325fd663"}, {file = "gevent-26.5.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:032157cebdedb84f2f52cdd980f2f5f2623eed6a8f083aadf44b44c47f628642"}, {file = "gevent-26.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:9c414935ba5fc88359110968851d3616f119082c937390d00a1c0f4f59be814f"}, {file = "gevent-26.5.0-cp314-cp314-win_arm64.whl", hash = "sha256:2a0f5993a04b95a35b3a118b1a58ba272833f9b547b774001dea29f90620882f"}, {file = "gevent-26.5.0-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:2e117df896a2660c9ebd4e2b5afc02dfd6e2ddf9b495e787e67c72d105432b09"}, {file = "gevent-26.5.0-cp315-cp315-manylinux_2_28_aarch64.whl", hash = "sha256:af5ffe9c11ffb8a39b6bef2e8b722aa2043ae4980977915c6aa8c68b4bc26e46"}, {file = "gevent-26.5.0-cp315-cp315-manylinux_2_28_ppc64le.whl", hash = "sha256:7da34aef7e87c43dd3662e5785e79ed505c01399a7cb42876d2d8925969fd75f"}, {file = "gevent-26.5.0-cp315-cp315-manylinux_2_28_s390x.whl", hash = "sha256:1c6293a7046bcc6f3d8972a74b19cd7a4cfd02d3881edf0fcf827aa514bd247b"}, {file = "gevent-26.5.0-cp315-cp315-manylinux_2_28_x86_64.whl", hash = "sha256:d3bde0f140a275b2fa88e4b6516bda85551930e10bc2fd95e18c1b7d11cb780c"}, {file = "gevent-26.5.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:e29fb4b17d9958ec8cb7f6339a111b29bc23f2c2efbef86189d1248bb4862d17"}, {file = "gevent-26.5.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:b2239df2f7570efa03736678f3f053bb1bdd22a8a16cd28a2feb7d32ea5f533f"}, {file = "gevent-26.5.0-cp315-cp315-win_amd64.whl", hash = "sha256:aae214952fd38d27a42dc416bb70193962ec932384b63445d29bbb5817a1c042"}, {file = "gevent-26.5.0-cp315-cp315-win_arm64.whl", hash = "sha256:f7067564f139e33bf26a31ee3b13d168d76eb99a44b85ced626652b158baa80c"}, {file = "gevent-26.5.0.tar.gz", hash = "sha256:1655eb04c1e20d71b2aa4a3c7528162dd58ff6cc46a037af1f01f534c80fefba"}, ] [package.dependencies] cffi = {version = ">=1.17.1", markers = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\""} greenlet = {version = ">=3.2.2", markers = "platform_python_implementation == \"CPython\""} "zope.event" = "*" "zope.interface" = "*" [package.extras] dnspython = ["dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\""] docs = ["furo", "repoze.sphinx.autointerface", "sphinx", "sphinxcontrib-programoutput", "zope.schema"] monitor = ["psutil (>=6.0.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\""] recommended = ["cffi (>=1.17.1) ; platform_python_implementation == \"CPython\"", "dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\"", "psutil (>=6.0.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\""] test = ["cffi (>=1.17.1) ; platform_python_implementation == \"CPython\"", "coverage (>=5.0,<7.13) ; sys_platform != \"win32\"", "dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\"", "objgraph", "psutil (>=6.0.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\"", "requests"] [[package]] name = "gevent-websocket" version = "0.10.1" description = "Websocket handler for the gevent pywsgi server, a Python network library" optional = false python-versions = "*" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "gevent-websocket-0.10.1.tar.gz", hash = "sha256:7eaef32968290c9121f7c35b973e2cc302ffb076d018c9068d2f5ca8b2d85fb0"}, {file = "gevent_websocket-0.10.1-py3-none-any.whl", hash = "sha256:17b67d91282f8f4c973eba0551183fc84f56f1c90c8f6b6b30256f31f66f5242"}, ] [package.dependencies] gevent = "*" [[package]] name = "greenlet" version = "3.5.1" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.10" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "greenlet-3.5.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:7eacb17a9d41538a2bc4912eba5ef13823c83cb69e4d141d0813debe7163187f"}, {file = "greenlet-3.5.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e5cc9606aa5f4e0bde0d3bd502b44f743864c3ffa5cfa1011b1e30f5aa02366f"}, {file = "greenlet-3.5.1-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c3d35f87c7253b715d13d679e0783d845910144f282cb939fe1ba4ac8616269c"}, {file = "greenlet-3.5.1-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:00929c98ec525fd9bf075875d8c5f6a983a90906cdf78a66e6de2d8e466c2a19"}, {file = "greenlet-3.5.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:540dae7b956209af4d70a3be35927b4055f617763771e5e84a5255bea934d2f5"}, {file = "greenlet-3.5.1-cp310-cp310-manylinux_2_39_riscv64.whl", hash = "sha256:001775efe7b8e758861294c7a27c28af87f3f3f1c20468a2bc618c45b346c061"}, {file = "greenlet-3.5.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed8cdb691169715a9a492844a83246f090182247d1a5031dc78a403f68ba1e97"}, {file = "greenlet-3.5.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d59e840387076a51016777a9328b3f2c427c6f9208a6e958bad251be50a648d"}, {file = "greenlet-3.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:b9152fca4a6466e114aaec745ae61cba739903a109754a9d4e1262f01e9259b1"}, {file = "greenlet-3.5.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:73f78f9b9f0a5c06e5c946ba1e8e36f5114923b6be109ee618c54f079c3ea14f"}, {file = "greenlet-3.5.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a0cbed8bb44e23c5b199f888f4e4ce096b45ad9f25ff74a7ad0213875e936bb2"}, {file = "greenlet-3.5.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a203a8bd0acb0701653d3bbb26e404854a68674139ed5cbb778830f42b09bb33"}, {file = "greenlet-3.5.1-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ebeb75c81211f5c702576cf81f315e77e23cfdb2c7c6fcb9dd143e6de35c360"}, {file = "greenlet-3.5.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a271fcd66c74615cda6a964fda3f304267a12e50a084472218a39bb0376f563"}, {file = "greenlet-3.5.1-cp311-cp311-manylinux_2_39_riscv64.whl", hash = "sha256:017a544f0385d441e88714160d089d6900ef46c9eff9d99b6715a5ef2d127747"}, {file = "greenlet-3.5.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ded7b068c7c31c1a8657d4fd42d886b3e051ae29f88b80c5ff9d502257b0f071"}, {file = "greenlet-3.5.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0932b81d72f552ded9d810d00021b64d89f2195a91ce115b893f943b7a4ab3c"}, {file = "greenlet-3.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:88e300d136eac057b2397aa1cfd7328b4c87c7eb66a09c7bc6a1292234db474e"}, {file = "greenlet-3.5.1-cp311-cp311-win_arm64.whl", hash = "sha256:cc6ab7e555c8a112ad3a76e368e86e12a2754bcae1652a5602e133ec7b635523"}, {file = "greenlet-3.5.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:fa4f98af3a528f0c3fd592a26df7f376f93329c8f4d987f6bb979057af8bf5e2"}, {file = "greenlet-3.5.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffea73584b216150eab159b6d12348fb253e68757974de1e2c40d8a318ac89ed"}, {file = "greenlet-3.5.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1072b4f9edcc1e192d9283a66a3e68d6b84c561de33a83d7858beb9ba1effe10"}, {file = "greenlet-3.5.1-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:89101bfd5011e069be974903cb3a4e4523845e4ece2d62dcd8d358933c0ef249"}, {file = "greenlet-3.5.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:add5217d68b31130f0beca584d7fef4878327d2e31642b66618a14eef312b63b"}, {file = "greenlet-3.5.1-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:e6cd99ea59dd5d89f0c956606571d79bfe6f68c9eb7f4a4083a41a7f1587edee"}, {file = "greenlet-3.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a5ea42a752d47a145eae922b605cd1634665ac3d5ec1e72402d5048e8d60d207"}, {file = "greenlet-3.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5551170cf4f5ff5623e9af81323751979fee2c731e2287b61f73cd27257b823"}, {file = "greenlet-3.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c8bb982ad117d29478ef8f5533e97df21f1e2befd17a299257b0c96d1371c0b"}, {file = "greenlet-3.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:80eb4b04dadc4e67df3fae179a32c4706a3f495bc7f22fc8a81115d5f5512188"}, {file = "greenlet-3.5.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:51518ff74664078fc51bffcc6fc529b0df5ae58da192691cee765d45ce944a2b"}, {file = "greenlet-3.5.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ffdb3c0bb002c99cd8f298957e046c3dbf6006b5b7cdf11a4e19194624a0a0a"}, {file = "greenlet-3.5.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7715a5a2c3378ba602c3a440558261e13a820bb53a82693aacd7b7f6d964e283"}, {file = "greenlet-3.5.1-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d40a890035c0058cadbdc4af7569800fd28a0e527a0fdbb7b5f9418f176846ce"}, {file = "greenlet-3.5.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc71ff466927a201b08305acac451ebe1aedfcea002f62f1f2f2ac2ac1e6a135"}, {file = "greenlet-3.5.1-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:67821bb03e4e98664490edb787ff6af501194c29bbee0f5c1dfdcf1dc3d9d436"}, {file = "greenlet-3.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd443683db272ebaaca03af98c0b063ab30db70ea8a31a1559f35e3f7b744ccd"}, {file = "greenlet-3.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:089fff7a6ce8d9316d1f65ebc00273a56be258c1725b32b94de90a3a979557e1"}, {file = "greenlet-3.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:110a1ca7b49b014b097f6078272c3f4ed31af45b254de5228b79adba879f6af9"}, {file = "greenlet-3.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:f16ba1efc0715b680a18b8123d90dad887c6112ae3555b4b5c32c149540c6b4e"}, {file = "greenlet-3.5.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d8ab31c9de8651a2facdd5c5bb0011f2380dd1a7af78ce2adf4b56095294fc07"}, {file = "greenlet-3.5.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e300185139abc337ade480c327183adf42a875ac7181bfe66d7d4efea31fbea"}, {file = "greenlet-3.5.1-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7ffdb990dcaa0234cf9845aead5df2e3c3a8b6507d409274dd87e0d5ab05ffc2"}, {file = "greenlet-3.5.1-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c09df69dc1712d131332054a858a3e5cca400967fa3a672e2324fbb0971448c"}, {file = "greenlet-3.5.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f82b3597e9d83b63408affed0b48fd0f54935edac4302237b9a837be0dae33c"}, {file = "greenlet-3.5.1-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:a4764e0bfc6a4d114c865b32520805c16a990ef5f286a514413b05d5ecd6a23d"}, {file = "greenlet-3.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c0141e37414c10164e702b8fb1473304221ad98f71600850c6ef7ff4880feba0"}, {file = "greenlet-3.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:50ae25a67bea74ea41fb14b960bc532df73eb713417b2d61892dced82fe8d3bc"}, {file = "greenlet-3.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:8a17c42330e261299766b75ac1ea32caa437a9453c8f65d16a13140db378ecd3"}, {file = "greenlet-3.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:7b5f5fae05b8ac6d176a61b60c394a8cbdc2b5b91b81793066e68745cf165e54"}, {file = "greenlet-3.5.1-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:ea8da1e900d758d078810d4255d8c6aa572181896a31ec79d779eb79c3adc9ad"}, {file = "greenlet-3.5.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a19570c52a21420dcbc94e661994bc325c0b5b11304540fed514586da5dc8f2e"}, {file = "greenlet-3.5.1-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3d955c89b75eeca4723d7cc14135f393cd47c32e2a6cb4a8e4c6e760a26b0986"}, {file = "greenlet-3.5.1-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ea37d5a157eb9493820d3792ac4ece28619a394391d2b9f2f78057d396ff0f0f"}, {file = "greenlet-3.5.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2daaaebd1a5aa88c49045b6baf9310b3263796bd88db713edf37cf53e7bb4e"}, {file = "greenlet-3.5.1-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:8d8a23250ea3ec7b36de8fa4b541e9e2db3ee82915cc060ab0631609ad8b28de"}, {file = "greenlet-3.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3bfbd69cc349e43bf3a8ae1c85548ff0718efc887615c2db16c3833d7b0b072d"}, {file = "greenlet-3.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4378720dd888136c27215a0214d32a4d37c3852765d45bc37aad0623423cfd78"}, {file = "greenlet-3.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:45718441607f9325d948db98cbc691276059316d0358c188c246da4e1d4d23d2"}, {file = "greenlet-3.5.1-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:2baee5ca02031757ffe8cc3d69f0cc0aec7065ce362622da74f32d3bcab1c541"}, {file = "greenlet-3.5.1-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b1ec3274918a81d3ea778b9e75b56b72b33f300edb6cf7f3a7fe1dae56683de"}, {file = "greenlet-3.5.1-cp315-cp315-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:111e2390ffffc47d5840b01711dd7fac07d4c09283d0283e7f3264b14e284c64"}, {file = "greenlet-3.5.1-cp315-cp315-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:10a9a1c0bfbc93d41156ffcb90c75fbc05544054faf15dcc1fdf9765f8b607f0"}, {file = "greenlet-3.5.1-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e630136e905fe5ff43e86945ae41220b6d1470956a39220e708110ac48d01ea5"}, {file = "greenlet-3.5.1-cp315-cp315-manylinux_2_39_riscv64.whl", hash = "sha256:ef08c1567c78074b22d1a200183d52d04a14df447bf70bcbb6a3507a48e776fc"}, {file = "greenlet-3.5.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:975eac34b44a7077ca4d421348455b94f0f518246a7f14bc6d2fdcfe5b584368"}, {file = "greenlet-3.5.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:9ab3c3a0b2ae6198e67c898dad5215a49f9ae0d0081b3c3ec59f333e39eeca26"}, {file = "greenlet-3.5.1-cp315-cp315-win_amd64.whl", hash = "sha256:cbfc69be86e10dcfef5b1e6269d1d6926552aa89ee39e1de3353360c1b6989ab"}, {file = "greenlet-3.5.1-cp315-cp315-win_arm64.whl", hash = "sha256:92fd6d44ac5e5a887c8a5dc4a8ba0ba908527c31c12f78c6bc7dcfe8aab279f6"}, {file = "greenlet-3.5.1-cp315-cp315t-macosx_11_0_universal2.whl", hash = "sha256:a6fdf2433a5441ef9a95464f7c3e674775da1c8c1177fff311cee1acad4626ed"}, {file = "greenlet-3.5.1-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7546556f0d649f99f6a361098a55f761181bb2ea12ff150bb16d26092ad88244"}, {file = "greenlet-3.5.1-cp315-cp315t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d5ee3ea898009fa898f85f9982255d35278c477bebe185beca249cab42d4526c"}, {file = "greenlet-3.5.1-cp315-cp315t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a57b0d05a0448eed231d59c0ceb287dde984551e54cbc51ac2d4865712838e9c"}, {file = "greenlet-3.5.1-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5c81f74d204d3edd136ebfd50dce53acbb776995d721a0fe801626cfc93b8cd"}, {file = "greenlet-3.5.1-cp315-cp315t-manylinux_2_39_riscv64.whl", hash = "sha256:b0703c2cef53e01baec47f7a3868009913ad71ec678bbecb42a6f40895e4ce62"}, {file = "greenlet-3.5.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:2c18ef16bf6d4dd410e4dd52996888ea1497be26892fe5bbc73580aba4287b8e"}, {file = "greenlet-3.5.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:17d86354f0ae6b61bf9be5148d0dd34e06c3cb7c602c671f79f29ac3b150e659"}, {file = "greenlet-3.5.1-cp315-cp315t-win_amd64.whl", hash = "sha256:e7516cf6ae6b8a582c2770a0caed47b8a48373ed732c33d69a72913ae6ac923e"}, {file = "greenlet-3.5.1-cp315-cp315t-win_arm64.whl", hash = "sha256:5028648bf2253ec4745add746129d3904121fa7fe871a76bed23c5720573ce0a"}, {file = "greenlet-3.5.1.tar.gz", hash = "sha256:5a56aeb7d5d9cc4b3a735efb5095bd4b4f6f0e4f93e5ca876d0e2315137b7829"}, ] [package.extras] docs = ["Sphinx", "furo"] test = ["objgraph", "psutil", "setuptools"] [[package]] name = "h11" version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.8" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "idna" version = "3.17" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "idna-3.17-py3-none-any.whl", hash = "sha256:466e48829084efe2548012b855df21540b96f2e20e51bd124c851536556a592c"}, {file = "idna-3.17.tar.gz", hash = "sha256:5eb0cb53bc467c12eadcf6de83163ad8527cec9416f44b9b61b19caedad2b87f"}, ] [package.extras] all = ["mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] [[package]] name = "importlib-metadata" version = "9.0.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "importlib_metadata-9.0.0-py3-none-any.whl", hash = "sha256:2d21d1cc5a017bd0559e36150c21c830ab1dc304dedd1b7ea85d20f45ef3edd7"}, {file = "importlib_metadata-9.0.0.tar.gz", hash = "sha256:a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc"}, ] [package.dependencies] zipp = ">=3.20" [package.extras] check = ["pytest-checkdocs (>=2.14)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=3.4)"] perf = ["ipython"] test = ["packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] type = ["pytest-mypy (>=1.0.1) ; platform_python_implementation != \"PyPy\""] [[package]] name = "iniconfig" version = "2.3.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, ] [[package]] name = "itsdangerous" version = "2.2.0" description = "Safely pass data to untrusted environments and back." optional = false python-versions = ">=3.8" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, ] [[package]] name = "jinja2" version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] [[package]] name = "lief" version = "0.17.6" description = "Library to instrument executable formats" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "sys_platform == \"win32\"" files = [ {file = "lief-0.17.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:27cabac8f34885294b63e814952686453b59bce35ffb0c7d12e722adef389cd2"}, {file = "lief-0.17.6-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:c9cfcd463bbbe7cabb2fed9d22211ba1337775cf07f4d754da24c3c3f5c426d5"}, {file = "lief-0.17.6-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:12db9cce6644b11b1cfa5c228574ae52d37121d1a8380266b2b3eb0721aa5b98"}, {file = "lief-0.17.6-cp310-cp310-manylinux_2_28_i686.whl", hash = "sha256:f24fa49f0fe3f7d350aa87610fc5765890b18272c2aafaf720a10b2be0675154"}, {file = "lief-0.17.6-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3a0678eafed01245d98187815714bdd602f285b8c9a05a4982ff9ddf82360717"}, {file = "lief-0.17.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd673591c870bdedfd5e583c423fb67bbd99e00eb1852061f0dec6a918d4634"}, {file = "lief-0.17.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a6935a08a7b3285d0cf053d852fd739475fea15572b5559160a88d284987e995"}, {file = "lief-0.17.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dbe04dda79f5d17c5b2d1b381997d93aa039f59c7c52b9fe48d398dda9cce8ea"}, {file = "lief-0.17.6-cp310-cp310-win32.whl", hash = "sha256:17371938a85fcf64febb9eca77beb6537daa418fd3f86511e5ae402dc8bc2866"}, {file = "lief-0.17.6-cp310-cp310-win_amd64.whl", hash = "sha256:45fd98016f5743f81f635628c2efc25becda80caa22cfc03bd002f359bcb7f71"}, {file = "lief-0.17.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68cc28da07bd50a530590a56142c809a68035f29ace0b107046b0e0784650f50"}, {file = "lief-0.17.6-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:ba6fb4f5926f3631e0de13218bedce0cc6b229c7eb84fae095f0985385c8beb1"}, {file = "lief-0.17.6-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:6dce8652883b5b7fe06b5416807a8bc3cc4c1ab3e498512d242c38925e8a7d77"}, {file = "lief-0.17.6-cp311-cp311-manylinux_2_28_i686.whl", hash = "sha256:3ae021be2d65ea6f522884356c152ddf25d16674bab00240b04abe83c1cd5cb8"}, {file = "lief-0.17.6-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:94463d54bc5ecce9e3ae3855a084bacd5b473a23c1a080746bf54a0ed0339255"}, {file = "lief-0.17.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f471fa92430de76b84aa9d036d7fa7cd14256a81814fd3a055d156462fb5bb56"}, {file = "lief-0.17.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4e03969294b3be2728162fd3ce15f9f6d1571ba05f62abbb6aa9512c656e22c3"}, {file = "lief-0.17.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7b690c719abf67632701ff69e14a22610eef79100b51abc5e7fbdc70a3d19504"}, {file = "lief-0.17.6-cp311-cp311-win32.whl", hash = "sha256:fb8ea20af86b25b852d7fa4ba96cdaab2184b1a1529469786b2474dc2e1be446"}, {file = "lief-0.17.6-cp311-cp311-win_amd64.whl", hash = "sha256:347495918478606fc47d90a503791c308812f0a3ef5200b2c1e577e0bebd7c7e"}, {file = "lief-0.17.6-cp311-cp311-win_arm64.whl", hash = "sha256:1b8339f385b64bf9da42ac8f5d5fc4c9f4235c4d9d804e472ffe8f1fddc830cb"}, {file = "lief-0.17.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c5a19642e42578fe0b701bd86b10dd7e86d69c35c67d25ac1433f72410a7c2bb"}, {file = "lief-0.17.6-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:e1ded9ee9b5184b5753e4823343e3550a623d34f5407cb2f8d7918e17856d860"}, {file = "lief-0.17.6-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:e29552f52749249c9b05041d96d9156de20207d745916d599b4eb49ee7a8e1bf"}, {file = "lief-0.17.6-cp312-cp312-manylinux_2_28_i686.whl", hash = "sha256:e186ac1ea8a5f4729c4b8d2b7f2fe6c55dbf1eddd8bc15fa4d19ed08dfa6cc54"}, {file = "lief-0.17.6-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1df9b22f3851de7d0e86a8731ad07e47ca562ebe430605d90aecfcd6d20125d0"}, {file = "lief-0.17.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6484de5a7053c1b7022cb93f41450532f93daaf6b5ce6421c682b87fd2cd2122"}, {file = "lief-0.17.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:04b07e91213ce345febb4698efd310c6745f48190a1d7ce5dd0e7b306839362d"}, {file = "lief-0.17.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5df55be6cd29c654b8a205846d67637955063ad0cfd83875451f339cf623b101"}, {file = "lief-0.17.6-cp312-cp312-win32.whl", hash = "sha256:0aca84f35ec67854ffdb38a23b1848cb214df3e3f95eb7579bac3107e9f68cc8"}, {file = "lief-0.17.6-cp312-cp312-win_amd64.whl", hash = "sha256:5a34d651eb82e24a113f837b1a961d23e155be41d72bf39a37407854c6597a8b"}, {file = "lief-0.17.6-cp312-cp312-win_arm64.whl", hash = "sha256:234a422fe7158e755ac0acdd0bfdfd41f75392dad9dac147dd3b9c7a9f1a6811"}, {file = "lief-0.17.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7384abed26200f8c6cb50ca9cedac70e7452e85fe72e82d4c5e9050c78eff0ae"}, {file = "lief-0.17.6-cp313-cp313-macosx_11_0_x86_64.whl", hash = "sha256:7b7759b443745d0e5211d87723c0a84c4a74364ef6194cc8f8d315d98d117648"}, {file = "lief-0.17.6-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:3e59a64012a602772270aa1a930cff9c39cddca42f0ca5d7f1959f4dd951f38e"}, {file = "lief-0.17.6-cp313-cp313-manylinux_2_28_i686.whl", hash = "sha256:f764c77c848cf7478623e754099f50699d5e23b5bc4a34ce68cd20af7e0b5541"}, {file = "lief-0.17.6-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:520e5f8a7b1e2487630e27639751d9fb13c94205fed72d358a87994e44a73815"}, {file = "lief-0.17.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dbfe15d3d21d389857dac8cedc04f03f8ef98c5503e5e147a34480ecbf351826"}, {file = "lief-0.17.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de5716279c82640359fe59137ec0572a1ed9859051c1d901de593d6e0e99d9c8"}, {file = "lief-0.17.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ef618117ec33665697e3d1fe9c15fac8d6c42e2eeaf4aca9c31ea12fdb056c67"}, {file = "lief-0.17.6-cp313-cp313-win32.whl", hash = "sha256:2f669d5b4e63c6e66cac48e07d0f23436bf898ec9d0630016d23250e2eb43d28"}, {file = "lief-0.17.6-cp313-cp313-win_amd64.whl", hash = "sha256:51b6c5932d4f36d61fb17fe783d9e1bfba33ec1d72b3d07486c96e6f548781ff"}, {file = "lief-0.17.6-cp313-cp313-win_arm64.whl", hash = "sha256:6d4eb8adce400af52cc174ac5cbe40ab10b9df5824193975d12e2d4f85b298a3"}, {file = "lief-0.17.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:af39643ab79ae644d2063a2ef93de908e61a8f40e37b155683c477c1928e6c64"}, {file = "lief-0.17.6-cp314-cp314-macosx_11_0_x86_64.whl", hash = "sha256:c8129a70bc73e04fd9db4f49f386d4336a3a78ceef07c83ca74f9cf464c03c22"}, {file = "lief-0.17.6-cp314-cp314-manylinux2014_aarch64.whl", hash = "sha256:b5885e8a422066f3691b9707045b85d9728eaba621991def0b4e0044b0b0b063"}, {file = "lief-0.17.6-cp314-cp314-manylinux_2_28_i686.whl", hash = "sha256:6324add89c366607a6d652553e4cac6309e952ca638c24f38a8b00331f064a50"}, {file = "lief-0.17.6-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:365bf48528339a0d9a5c993b0a54f5c3bb8fcd11ca85797c79f9ae6179777492"}, {file = "lief-0.17.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:3bd852c4d934d9c8357d6b9491db85e6722bc0076249f8b23a205a8912a85ed5"}, {file = "lief-0.17.6-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:8561a156ccea562e200e5bde0db8070785e3194fcd0ddf9109c8470970978076"}, {file = "lief-0.17.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a74f792564a5e69915d08530618d79aa1fd8b5e7b72513fac765e1106c63f57a"}, {file = "lief-0.17.6-cp314-cp314-win32.whl", hash = "sha256:503fd8df6425a6c0386df9ca6e4f4ce29d07d268f0620ee1d4059eb4d48c2562"}, {file = "lief-0.17.6-cp314-cp314-win_amd64.whl", hash = "sha256:918ea953830ecf348e5a8d9cf0b1a178035d6d4032bf2a9aa1dc72483e06b3a1"}, {file = "lief-0.17.6-cp314-cp314-win_arm64.whl", hash = "sha256:7dcefa6467f0f0d75413a10e7869e488344347f0c67eff5bc49ec216714f0674"}, {file = "lief-0.17.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:70671623b9b1cf55a688d0365789dd048426075ff6368c42270b224605c4b078"}, {file = "lief-0.17.6-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:fc6541fdf8958e8bfadc91f8c79e6aa8e2cca74ac8bb2aaf74bf946057d7cf1d"}, {file = "lief-0.17.6-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:054e7a1b2dcfb2e62acbabef0be8d52d2adc6c1f9451700b988f08aadee3c024"}, {file = "lief-0.17.6-cp38-cp38-manylinux_2_28_i686.whl", hash = "sha256:04a6f26bd92a63af6860a270761fc2773a8b6b262cc9397b176c21c2c0cb5153"}, {file = "lief-0.17.6-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:88fb786338aeb4f6812ff6d079415e44f3696b826410b9504a9f710cc962ebe5"}, {file = "lief-0.17.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5ba237d5984262b383531c629432cba97552a13818624e0d2a0ce099f06be161"}, {file = "lief-0.17.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:0dec797538b9bfa2ef415532cec6ef7b739ef9d3dc5af0f848ba90d6e6045e31"}, {file = "lief-0.17.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:22a96028fd5fc7607b1b2213aa88ac13be89e50709b36d2a6fcd6fdb3333c3c4"}, {file = "lief-0.17.6-cp38-cp38-win32.whl", hash = "sha256:eaa294b19ab9cc7bcb18462b964cd3f12f294cba2f256a5b4588633a5c8fb172"}, {file = "lief-0.17.6-cp38-cp38-win_amd64.whl", hash = "sha256:2c3130841c30743f549a84606b2108e71819f5f7a6f9932baaa845841e83f1f9"}, {file = "lief-0.17.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e380832cc49a3f460b2b5ee672a6127db94fad0a1226cc8c66cbffa9bd09582"}, {file = "lief-0.17.6-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:41fc73285cce73f668dbc902b4ae7388a02cace7fe0c03603a1e42608f84003c"}, {file = "lief-0.17.6-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bd94782164176baee7f08a1e633376f26a5486edfd230c4a3fb351e49108bfd0"}, {file = "lief-0.17.6-cp39-cp39-manylinux_2_28_i686.whl", hash = "sha256:5fce8968fd47e103aa4df35e1efd0b61bde4921952d7cf0fd668facff648f3f5"}, {file = "lief-0.17.6-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:379efbaa54655fd7b423536ceddb255c52073ce341b908be25775d99578497e1"}, {file = "lief-0.17.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fccb2c1cc3e6e2e5395d73b13c0198b69afa8a80cd80ac5b121efffa00faf594"}, {file = "lief-0.17.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8f39f68a8d8666622aa0300b4f13b30c8bf91a1f0c2f6e3eb47af8813544719b"}, {file = "lief-0.17.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a2905d56f54eeb146682daf341dde14928d9f4d32ca047e995a4548a348ad3cd"}, {file = "lief-0.17.6-cp39-cp39-win32.whl", hash = "sha256:d5a936d3cec06e808e49e216076f47f25142184b593e5e4c31d6e068d4dc8f77"}, {file = "lief-0.17.6-cp39-cp39-win_amd64.whl", hash = "sha256:da6b97ae3d91a953a93def5dedfb61b098b204d3d4a75dcd592ad8570cb5a2ff"}, {file = "lief-0.17.6.tar.gz", hash = "sha256:c2164243f152e82c49b0ccd606155b758644f4b1ee221f0dbd4da055469a922f"}, ] [[package]] name = "mac-alias" version = "2.2.3" description = "Generate/parse macOS Alias records from Python" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "sys_platform == \"darwin\"" files = [ {file = "mac_alias-2.2.3-py3-none-any.whl", hash = "sha256:7362b521d2132ef92f606a37abfed5fcd849ceb2f28b6f9743e014b02af92f0d"}, {file = "mac_alias-2.2.3.tar.gz", hash = "sha256:1c7fa367687d66979f2ce4d1a8b2716cf1c9fb811741cab3cf3ca356555c2beb"}, ] [[package]] name = "markupsafe" version = "3.0.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559"}, {file = "markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419"}, {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695"}, {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591"}, {file = "markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c"}, {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f"}, {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6"}, {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1"}, {file = "markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa"}, {file = "markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8"}, {file = "markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1"}, {file = "markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad"}, {file = "markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a"}, {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50"}, {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf"}, {file = "markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f"}, {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a"}, {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115"}, {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a"}, {file = "markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19"}, {file = "markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01"}, {file = "markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c"}, {file = "markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e"}, {file = "markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce"}, {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d"}, {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d"}, {file = "markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a"}, {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b"}, {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f"}, {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b"}, {file = "markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d"}, {file = "markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c"}, {file = "markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f"}, {file = "markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795"}, {file = "markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219"}, {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6"}, {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676"}, {file = "markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9"}, {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1"}, {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc"}, {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12"}, {file = "markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed"}, {file = "markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5"}, {file = "markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485"}, {file = "markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73"}, {file = "markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37"}, {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19"}, {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025"}, {file = "markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6"}, {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f"}, {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb"}, {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009"}, {file = "markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354"}, {file = "markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218"}, {file = "markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287"}, {file = "markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe"}, {file = "markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026"}, {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737"}, {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97"}, {file = "markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d"}, {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda"}, {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf"}, {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe"}, {file = "markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9"}, {file = "markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581"}, {file = "markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4"}, {file = "markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab"}, {file = "markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175"}, {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634"}, {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50"}, {file = "markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e"}, {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5"}, {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523"}, {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc"}, {file = "markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d"}, {file = "markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9"}, {file = "markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa"}, {file = "markupsafe-3.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26"}, {file = "markupsafe-3.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc"}, {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c"}, {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42"}, {file = "markupsafe-3.0.3-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b"}, {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758"}, {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2"}, {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d"}, {file = "markupsafe-3.0.3-cp39-cp39-win32.whl", hash = "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7"}, {file = "markupsafe-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e"}, {file = "markupsafe-3.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8"}, {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"}, ] [[package]] name = "mypy-extensions" version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.8" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] [[package]] name = "onionshare-cli" version = "2.6.4" description = "OnionShare lets you securely and anonymously send and receive files. It works by starting a web server, making it accessible as a Tor onion service, and generating an unguessable web address so others can download files from you, or upload files to you. It does _not_ require setting up a separate server or using a third party file-sharing service." optional = false python-versions = ">=3.10,<3.14" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [] develop = true [package.dependencies] cffi = "^2" click = "*" colorama = "*" cython = "^3.0.2" eventlet = "*" flask = "3.1.3" flask-compress = "^1.24" flask-socketio = "^5.6" gevent = "^26.5.0" gevent-websocket = "*" packaging = ">=24" pkgconfig = "^1.6.0" psutil = "*" pynacl = "^1.6.2" pysocks = "*" qrcode = "^7.4.2" requests = {version = ">=2.32.3", extras = ["socks"]} setuptools = "^80" stem = "1.8.1" unidecode = "*" urllib3 = "^2.7" waitress = "^3.0.1" werkzeug = "3.1.6" wheel = "^0.46.2" [package.source] type = "directory" url = "../cli" [[package]] name = "packaging" version = "26.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["main", "dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e"}, {file = "packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661"}, ] [[package]] name = "patchelf" version = "0.17.2.4" description = "A small utility to modify the dynamic linker and RPATH of ELF executables." optional = false python-versions = ">=3.7" groups = ["dev"] markers = "sys_platform == \"linux\" and (platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\")" files = [ {file = "patchelf-0.17.2.4-py3-none-macosx_10_9_universal2.whl", hash = "sha256:343bb1b94e959f9070ca9607453b04390e36bbaa33c88640b989cefad0aa049e"}, {file = "patchelf-0.17.2.4-py3-none-manylinux1_i686.manylinux_2_5_i686.musllinux_1_1_i686.whl", hash = "sha256:09fd848d625a165fc7b7e07745508c24077129b019c4415a882938781d43adf8"}, {file = "patchelf-0.17.2.4-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.musllinux_1_1_x86_64.whl", hash = "sha256:d9b35ebfada70c02679ad036407d9724ffe1255122ba4ac5e4be5868618a5689"}, {file = "patchelf-0.17.2.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:2931a1b5b85f3549661898af7bf746afbda7903c7c9a967cfc998a3563f84fad"}, {file = "patchelf-0.17.2.4-py3-none-manylinux2014_armv7l.manylinux_2_17_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:ae44cb3c857d50f54b99e5697aa978726ada33a8a6129d4b8b7ffd28b996652d"}, {file = "patchelf-0.17.2.4-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.musllinux_1_1_ppc64le.whl", hash = "sha256:680a266a70f60a7a4f4c448482c5bdba80cc8e6bb155a49dcc24238ba49927b0"}, {file = "patchelf-0.17.2.4-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.musllinux_1_1_s390x.whl", hash = "sha256:d842b51f0401460f3b1f3a3a67d2c266a8f515a5adfbfa6e7b656cb3ac2ed8bc"}, {file = "patchelf-0.17.2.4-py3-none-manylinux_2_31_riscv64.musllinux_1_1_riscv64.whl", hash = "sha256:7076d9e127230982e20a81a6e2358d3343004667ba510d9f822d4fdee29b0d71"}, {file = "patchelf-0.17.2.4.tar.gz", hash = "sha256:970ee5cd8af33e5ea2099510b2f9013fa1b8d5cd763bf3fd3961281c18101a09"}, ] [package.extras] test = ["importlib_metadata (>=2.0)", "pytest (>=6.0)"] [[package]] name = "pathspec" version = "1.1.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189"}, {file = "pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a"}, ] [package.extras] hyperscan = ["hyperscan (>=0.7)"] optional = ["typing-extensions (>=4)"] re2 = ["google-re2 (>=1.1)"] [[package]] name = "pkgconfig" version = "1.6.0" description = "Interface Python with pkg-config" optional = false python-versions = "<4.0.0,>=3.9.0" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "pkgconfig-1.6.0-py3-none-any.whl", hash = "sha256:98e71754855e9563838d952a160eb577edabb57782e49853edb5381927e6bea1"}, {file = "pkgconfig-1.6.0.tar.gz", hash = "sha256:4a5a6631ce937fafac457104a40d558785a658bbdca5c49b6295bc3fd651907f"}, ] [[package]] name = "platformdirs" version = "4.10.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.10" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "platformdirs-4.10.0-py3-none-any.whl", hash = "sha256:fb516cdb12eb0d857d0cd85a7c57cea4d060bee4578d6cf5a14dfdf8cbf8784a"}, {file = "platformdirs-4.10.0.tar.gz", hash = "sha256:31e761a6a0ca04faf7353ea759bdba55652be214725111e5aac52dfa29d4bef7"}, ] [[package]] name = "pluggy" version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] dev = ["pre-commit", "tox"] testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "psutil" version = "7.2.2" description = "Cross-platform lib for process and system monitoring." optional = false python-versions = ">=3.6" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b"}, {file = "psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea"}, {file = "psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63"}, {file = "psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312"}, {file = "psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b"}, {file = "psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9"}, {file = "psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00"}, {file = "psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9"}, {file = "psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a"}, {file = "psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf"}, {file = "psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1"}, {file = "psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841"}, {file = "psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486"}, {file = "psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979"}, {file = "psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9"}, {file = "psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e"}, {file = "psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8"}, {file = "psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc"}, {file = "psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988"}, {file = "psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee"}, {file = "psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372"}, ] [package.extras] dev = ["abi3audit", "black", "check-manifest", "colorama ; os_name == \"nt\"", "coverage", "packaging", "psleak", "pylint", "pyperf", "pypinfo", "pyreadline3 ; os_name == \"nt\"", "pytest", "pytest-cov", "pytest-instafail", "pytest-xdist", "pywin32 ; os_name == \"nt\" and implementation_name != \"pypy\"", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "validate-pyproject[all]", "virtualenv", "vulture", "wheel", "wheel ; os_name == \"nt\" and implementation_name != \"pypy\"", "wmi ; os_name == \"nt\" and implementation_name != \"pypy\""] test = ["psleak", "pytest", "pytest-instafail", "pytest-xdist", "pywin32 ; os_name == \"nt\" and implementation_name != \"pypy\"", "setuptools", "wheel ; os_name == \"nt\" and implementation_name != \"pypy\"", "wmi ; os_name == \"nt\" and implementation_name != \"pypy\""] [[package]] name = "pycparser" version = "3.0" description = "C parser in Python" optional = false python-versions = ">=3.10" groups = ["main"] markers = "implementation_name != \"PyPy\" and (platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\")" files = [ {file = "pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992"}, {file = "pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29"}, ] [[package]] name = "pygments" version = "2.20.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176"}, {file = "pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f"}, ] [package.extras] windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pynacl" version = "1.6.2" description = "Python binding to the Networking and Cryptography (NaCl) library" optional = false python-versions = ">=3.8" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "pynacl-1.6.2-cp314-cp314t-macosx_10_10_universal2.whl", hash = "sha256:622d7b07cc5c02c666795792931b50c91f3ce3c2649762efb1ef0d5684c81594"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d071c6a9a4c94d79eb665db4ce5cedc537faf74f2355e4d502591d850d3913c0"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe9847ca47d287af41e82be1dd5e23023d3c31a951da134121ab02e42ac218c9"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:04316d1fc625d860b6c162fff704eb8426b1a8bcd3abacea11142cbd99a6b574"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44081faff368d6c5553ccf55322ef2819abb40e25afaec7e740f159f74813634"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:a9f9932d8d2811ce1a8ffa79dcbdf3970e7355b5c8eb0c1a881a57e7f7d96e88"}, {file = "pynacl-1.6.2-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:bc4a36b28dd72fb4845e5d8f9760610588a96d5a51f01d84d8c6ff9849968c14"}, {file = "pynacl-1.6.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3bffb6d0f6becacb6526f8f42adfb5efb26337056ee0831fb9a7044d1a964444"}, {file = "pynacl-1.6.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2fef529ef3ee487ad8113d287a593fa26f48ee3620d92ecc6f1d09ea38e0709b"}, {file = "pynacl-1.6.2-cp314-cp314t-win32.whl", hash = "sha256:a84bf1c20339d06dc0c85d9aea9637a24f718f375d861b2668b2f9f96fa51145"}, {file = "pynacl-1.6.2-cp314-cp314t-win_amd64.whl", hash = "sha256:320ef68a41c87547c91a8b58903c9caa641ab01e8512ce291085b5fe2fcb7590"}, {file = "pynacl-1.6.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d29bfe37e20e015a7d8b23cfc8bd6aa7909c92a1b8f41ee416bbb3e79ef182b2"}, {file = "pynacl-1.6.2-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:c949ea47e4206af7c8f604b8278093b674f7c79ed0d4719cc836902bf4517465"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8845c0631c0be43abdd865511c41eab235e0be69c81dc66a50911594198679b0"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:22de65bb9010a725b0dac248f353bb072969c94fa8d6b1f34b87d7953cf7bbe4"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:46065496ab748469cdd999246d17e301b2c24ae2fdf739132e580a0e94c94a87"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a66d6fb6ae7661c58995f9c6435bda2b1e68b54b598a6a10247bfcdadac996c"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:26bfcd00dcf2cf160f122186af731ae30ab120c18e8375684ec2670dccd28130"}, {file = "pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c8a231e36ec2cab018c4ad4358c386e36eede0319a0c41fed24f840b1dac59f6"}, {file = "pynacl-1.6.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:68be3a09455743ff9505491220b64440ced8973fe930f270c8e07ccfa25b1f9e"}, {file = "pynacl-1.6.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8b097553b380236d51ed11356c953bf8ce36a29a3e596e934ecabe76c985a577"}, {file = "pynacl-1.6.2-cp38-abi3-win32.whl", hash = "sha256:5811c72b473b2f38f7e2a3dc4f8642e3a3e9b5e7317266e4ced1fba85cae41aa"}, {file = "pynacl-1.6.2-cp38-abi3-win_amd64.whl", hash = "sha256:62985f233210dee6548c223301b6c25440852e13d59a8b81490203c3227c5ba0"}, {file = "pynacl-1.6.2-cp38-abi3-win_arm64.whl", hash = "sha256:834a43af110f743a754448463e8fd61259cd4ab5bbedcf70f9dabad1d28a394c"}, {file = "pynacl-1.6.2.tar.gz", hash = "sha256:018494d6d696ae03c7e656e5e74cdfd8ea1326962cc401bcf018f1ed8436811c"}, ] [package.dependencies] cffi = {version = ">=2.0.0", markers = "platform_python_implementation != \"PyPy\" and python_version >= \"3.9\""} [package.extras] docs = ["sphinx (<7)", "sphinx_rtd_theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=7.4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] [[package]] name = "pypng" version = "0.20220715.0" description = "Pure Python library for saving and loading PNG images" optional = false python-versions = "*" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "pypng-0.20220715.0-py3-none-any.whl", hash = "sha256:4a43e969b8f5aaafb2a415536c1a8ec7e341cd6a3f957fd5b5f32a4cfeed902c"}, {file = "pypng-0.20220715.0.tar.gz", hash = "sha256:739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1"}, ] [[package]] name = "pyside6" version = "6.8.2.1" description = "Python bindings for the Qt cross-platform application and UI framework" optional = false python-versions = "<3.14,>=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "PySide6-6.8.2.1-cp39-abi3-macosx_12_0_universal2.whl", hash = "sha256:3fcb551729f235475b2abe7d919027de54a65d850e744f60716f890202273720"}, {file = "PySide6-6.8.2.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:23d2a1a77b25459a049c4276b4e0bbfb375b73d3921061b1a16bcfa64e1fe517"}, {file = "PySide6-6.8.2.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:bfefa80a93db06dc64c0e7beef0377c9b8ca51e007cfc34575defe065af893b6"}, {file = "PySide6-6.8.2.1-cp39-abi3-win_amd64.whl", hash = "sha256:92361e41727910e3560ea5ba494fabecc76cd20892c9fcb2ced07619081c4e65"}, ] [package.dependencies] PySide6-Addons = "6.8.2.1" PySide6-Essentials = "6.8.2.1" shiboken6 = "6.8.2.1" [[package]] name = "pyside6-addons" version = "6.8.2.1" description = "Python bindings for the Qt cross-platform application and UI framework (Addons)" optional = false python-versions = "<3.14,>=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "PySide6_Addons-6.8.2.1-cp39-abi3-macosx_12_0_universal2.whl", hash = "sha256:5558816018042fecd0d782111ced529585a23ea9a010b518f8495764f578a01f"}, {file = "PySide6_Addons-6.8.2.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f3d85e676851ada8238bc76ebfacbee738fc0b35b3bc15c9765dd107b8ee6ec4"}, {file = "PySide6_Addons-6.8.2.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:d904179f16deeca4ba440b4ef78e8d54df2b994b46784ad9d53b741082f3b2a7"}, {file = "PySide6_Addons-6.8.2.1-cp39-abi3-win_amd64.whl", hash = "sha256:c761cc45022aa79d8419e671e7fb34a4a3e5b3826f1e68fcb819bd6e3a387fbb"}, ] [package.dependencies] PySide6-Essentials = "6.8.2.1" shiboken6 = "6.8.2.1" [[package]] name = "pyside6-essentials" version = "6.8.2.1" description = "Python bindings for the Qt cross-platform application and UI framework (Essentials)" optional = false python-versions = "<3.14,>=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "PySide6_Essentials-6.8.2.1-cp39-abi3-macosx_12_0_universal2.whl", hash = "sha256:ae5cc48f7e9a08e73e3ec2387ce245c8150e620b8d5a87548ebd4b8e3aeae49b"}, {file = "PySide6_Essentials-6.8.2.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5ab31e5395a4724102edd6e8ff980fa3f7cde2aa79050763a1dcc30bb914195a"}, {file = "PySide6_Essentials-6.8.2.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:7aed46f91d44399b4c713cf7387f5fb6f0114413fbcdbde493a528fb8e19f6ed"}, {file = "PySide6_Essentials-6.8.2.1-cp39-abi3-win_amd64.whl", hash = "sha256:18de224f09108998d194e60f2fb8a1e86367dd525dd8a6192598e80e6ada649e"}, ] [package.dependencies] shiboken6 = "6.8.2.1" [[package]] name = "pysocks" version = "1.7.1" description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"}, {file = "PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5"}, {file = "PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"}, ] [[package]] name = "pytest" version = "9.0.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9"}, {file = "pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c"}, ] [package.dependencies] colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} iniconfig = ">=1.0.1" packaging = ">=22" pluggy = ">=1.5,<2" pygments = ">=2.7.2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-faulthandler" version = "2.0.1" description = "py.test plugin that activates the fault handler module for tests (dummy package)" optional = false python-versions = "*" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "pytest-faulthandler-2.0.1.tar.gz", hash = "sha256:ed72bbce87ac344da81eb7d882196a457d4a1026a3da4a57154dacd85cd71ae5"}, {file = "pytest_faulthandler-2.0.1-py2.py3-none-any.whl", hash = "sha256:236430ba962fd1c910d670922be55fe5b25ea9bc3fc6561a0cafbb8759e7504d"}, ] [package.dependencies] pytest = ">=5.0" [[package]] name = "pytest-qt" version = "4.5.0" description = "pytest support for PyQt and PySide applications" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "pytest_qt-4.5.0-py3-none-any.whl", hash = "sha256:ed21ea9b861247f7d18090a26bfbda8fb51d7a8a7b6f776157426ff2ccf26eff"}, {file = "pytest_qt-4.5.0.tar.gz", hash = "sha256:51620e01c488f065d2036425cbc1cbcf8a6972295105fd285321eb47e66a319f"}, ] [package.dependencies] pluggy = ">=1.1" pytest = "*" typing_extensions = "*" [package.extras] dev = ["pre-commit", "tox"] doc = ["sphinx", "sphinx_rtd_theme"] [[package]] name = "python-engineio" version = "4.13.2" description = "Engine.IO server and client for Python" optional = false python-versions = ">=3.8" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "python_engineio-4.13.2-py3-none-any.whl", hash = "sha256:8c101cd170e400dc4e970cd523325cde22df8fc25140953f379327055d701a6b"}, {file = "python_engineio-4.13.2.tar.gz", hash = "sha256:a7732e99cfb7db6ed1aee31f18d7f73bbae086a92f31dee019bc646155d9684e"}, ] [package.dependencies] simple-websocket = ">=0.10.0" [package.extras] asyncio-client = ["aiohttp (>=3.11)"] client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] dev = ["tox"] docs = ["furo", "sphinx"] [[package]] name = "python-gnupg" version = "0.5.6" description = "A wrapper for the Gnu Privacy Guard (GPG or GnuPG)" optional = false python-versions = "*" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "python_gnupg-0.5.6-py2.py3-none-any.whl", hash = "sha256:b5050a55663d8ab9fcc8d97556d229af337a87a3ebebd7054cbd8b7e2043394a"}, {file = "python_gnupg-0.5.6.tar.gz", hash = "sha256:5743e96212d38923fc19083812dc127907e44dbd3bcf0db4d657e291d3c21eac"}, ] [[package]] name = "python-msilib" version = "0.6.0" description = "Read and write Microsoft Installer files" optional = false python-versions = ">=3.13" groups = ["dev"] markers = "sys_platform == \"win32\" and python_version >= \"3.13\"" files = [ {file = "python_msilib-0.6.0-cp313-cp313-win32.whl", hash = "sha256:1145ce1e0eaf2af2948a02147415c621323cb2b2ff118fccdac333941547c11b"}, {file = "python_msilib-0.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:41b83e39c622a79042b3d1745421ce3492b954d701d7aeaf942d974c31291431"}, {file = "python_msilib-0.6.0-cp313-cp313-win_arm64.whl", hash = "sha256:3ac47071f27755b11f9e01d7222c2babd84997410f4f0d96ded55c187b0b1fb8"}, {file = "python_msilib-0.6.0-cp314-cp314-win32.whl", hash = "sha256:8144e6249d12768e08844672175404b21a1f7ce4b7b6d539858a4f9ad6d6ca6c"}, {file = "python_msilib-0.6.0-cp314-cp314-win_amd64.whl", hash = "sha256:281421203401afef589321f16d92d7aea8e5cf35f0345e47174346a3dde24808"}, {file = "python_msilib-0.6.0-cp314-cp314-win_arm64.whl", hash = "sha256:c2fbc0d9388c937222f2ef717385aade5a3696bdc3b81150a0098c0cb79b58b9"}, {file = "python_msilib-0.6.0-cp314-cp314t-win32.whl", hash = "sha256:e511a1b4e247901416a39167090a5e58d1b65d1a5b401d0250dce983f4ab0980"}, {file = "python_msilib-0.6.0-cp314-cp314t-win_amd64.whl", hash = "sha256:848e7dd1fc61407d207fa4a2b7ac12b3a2de376d394a1d3f70ac4034bc9cd1a9"}, {file = "python_msilib-0.6.0-cp314-cp314t-win_arm64.whl", hash = "sha256:a645358b02e17b0de61ea3f1dcd9f5d6b738148b1f317e2e864a08e04eeb80f3"}, {file = "python_msilib-0.6.0.tar.gz", hash = "sha256:47a6c16aa8528b797bd81e71cc544505b5444543319dbaf12011123b750c9d3c"}, ] [[package]] name = "python-socketio" version = "5.16.2" description = "Socket.IO server and client for Python" optional = false python-versions = ">=3.8" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "python_socketio-5.16.2-py3-none-any.whl", hash = "sha256:bef2da3374fd533aed4297f57b4f6512b52aa51604cb0da2165f401291c5ca20"}, {file = "python_socketio-5.16.2.tar.gz", hash = "sha256:ad88c228d921646efa436c0a0df217e364ef30ec072df4041484e54d49c15989"}, ] [package.dependencies] bidict = ">=0.21.0" python-engineio = ">=4.13.2" [package.extras] asyncio-client = ["aiohttp (>=3.4)"] client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] dev = ["tox"] docs = ["furo", "sphinx"] [[package]] name = "pytokens" version = "0.4.1" description = "A Fast, spec compliant Python 3.14+ tokenizer that runs on older Pythons." optional = false python-versions = ">=3.8" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "pytokens-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a44ed93ea23415c54f3face3b65ef2b844d96aeb3455b8a69b3df6beab6acc5"}, {file = "pytokens-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:add8bf86b71a5d9fb5b89f023a80b791e04fba57960aa790cc6125f7f1d39dfe"}, {file = "pytokens-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:670d286910b531c7b7e3c0b453fd8156f250adb140146d234a82219459b9640c"}, {file = "pytokens-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4e691d7f5186bd2842c14813f79f8884bb03f5995f0575272009982c5ac6c0f7"}, {file = "pytokens-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:27b83ad28825978742beef057bfe406ad6ed524b2d28c252c5de7b4a6dd48fa2"}, {file = "pytokens-0.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d70e77c55ae8380c91c0c18dea05951482e263982911fc7410b1ffd1dadd3440"}, {file = "pytokens-0.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a58d057208cb9075c144950d789511220b07636dd2e4708d5645d24de666bdc"}, {file = "pytokens-0.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b49750419d300e2b5a3813cf229d4e5a4c728dae470bcc89867a9ad6f25a722d"}, {file = "pytokens-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9907d61f15bf7261d7e775bd5d7ee4d2930e04424bab1972591918497623a16"}, {file = "pytokens-0.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:ee44d0f85b803321710f9239f335aafe16553b39106384cef8e6de40cb4ef2f6"}, {file = "pytokens-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:140709331e846b728475786df8aeb27d24f48cbcf7bcd449f8de75cae7a45083"}, {file = "pytokens-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d6c4268598f762bc8e91f5dbf2ab2f61f7b95bdc07953b602db879b3c8c18e1"}, {file = "pytokens-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24afde1f53d95348b5a0eb19488661147285ca4dd7ed752bbc3e1c6242a304d1"}, {file = "pytokens-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5ad948d085ed6c16413eb5fec6b3e02fa00dc29a2534f088d3302c47eb59adf9"}, {file = "pytokens-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:3f901fe783e06e48e8cbdc82d631fca8f118333798193e026a50ce1b3757ea68"}, {file = "pytokens-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8bdb9d0ce90cbf99c525e75a2fa415144fd570a1ba987380190e8b786bc6ef9b"}, {file = "pytokens-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5502408cab1cb18e128570f8d598981c68a50d0cbd7c61312a90507cd3a1276f"}, {file = "pytokens-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29d1d8fb1030af4d231789959f21821ab6325e463f0503a61d204343c9b355d1"}, {file = "pytokens-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:970b08dd6b86058b6dc07efe9e98414f5102974716232d10f32ff39701e841c4"}, {file = "pytokens-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:9bd7d7f544d362576be74f9d5901a22f317efc20046efe2034dced238cbbfe78"}, {file = "pytokens-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4a14d5f5fc78ce85e426aa159489e2d5961acf0e47575e08f35584009178e321"}, {file = "pytokens-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f50fd18543be72da51dd505e2ed20d2228c74e0464e4262e4899797803d7fa"}, {file = "pytokens-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc74c035f9bfca0255c1af77ddd2d6ae8419012805453e4b0e7513e17904545d"}, {file = "pytokens-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f66a6bbe741bd431f6d741e617e0f39ec7257ca1f89089593479347cc4d13324"}, {file = "pytokens-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:b35d7e5ad269804f6697727702da3c517bb8a5228afa450ab0fa787732055fc9"}, {file = "pytokens-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8fcb9ba3709ff77e77f1c7022ff11d13553f3c30299a9fe246a166903e9091eb"}, {file = "pytokens-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79fc6b8699564e1f9b521582c35435f1bd32dd06822322ec44afdeba666d8cb3"}, {file = "pytokens-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d31b97b3de0f61571a124a00ffe9a81fb9939146c122c11060725bd5aea79975"}, {file = "pytokens-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:967cf6e3fd4adf7de8fc73cd3043754ae79c36475c1c11d514fc72cf5490094a"}, {file = "pytokens-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:584c80c24b078eec1e227079d56dc22ff755e0ba8654d8383b2c549107528918"}, {file = "pytokens-0.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:da5baeaf7116dced9c6bb76dc31ba04a2dc3695f3d9f74741d7910122b456edc"}, {file = "pytokens-0.4.1-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11edda0942da80ff58c4408407616a310adecae1ddd22eef8c692fe266fa5009"}, {file = "pytokens-0.4.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0fc71786e629cef478cbf29d7ea1923299181d0699dbe7c3c0f4a583811d9fc1"}, {file = "pytokens-0.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dcafc12c30dbaf1e2af0490978352e0c4041a7cde31f4f81435c2a5e8b9cabb6"}, {file = "pytokens-0.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:42f144f3aafa5d92bad964d471a581651e28b24434d184871bd02e3a0d956037"}, {file = "pytokens-0.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:34bcc734bd2f2d5fe3b34e7b3c0116bfb2397f2d9666139988e7a3eb5f7400e3"}, {file = "pytokens-0.4.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:941d4343bf27b605e9213b26bfa1c4bf197c9c599a9627eb7305b0defcfe40c1"}, {file = "pytokens-0.4.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3ad72b851e781478366288743198101e5eb34a414f1d5627cdd585ca3b25f1db"}, {file = "pytokens-0.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:682fa37ff4d8e95f7df6fe6fe6a431e8ed8e788023c6bcc0f0880a12eab80ad1"}, {file = "pytokens-0.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:30f51edd9bb7f85c748979384165601d028b84f7bd13fe14d3e065304093916a"}, {file = "pytokens-0.4.1-py3-none-any.whl", hash = "sha256:26cef14744a8385f35d0e095dc8b3a7583f6c953c2e3d269c7f82484bf5ad2de"}, {file = "pytokens-0.4.1.tar.gz", hash = "sha256:292052fe80923aae2260c073f822ceba21f3872ced9a68bb7953b348e561179a"}, ] [package.extras] dev = ["black", "build", "mypy", "pytest", "pytest-cov", "setuptools", "tox", "twine", "wheel"] [[package]] name = "qrcode" version = "7.4.2" description = "QR Code image generator" optional = false python-versions = ">=3.7" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "qrcode-7.4.2-py3-none-any.whl", hash = "sha256:581dca7a029bcb2deef5d01068e39093e80ef00b4a61098a2182eac59d01643a"}, {file = "qrcode-7.4.2.tar.gz", hash = "sha256:9dd969454827e127dbd93696b20747239e6d540e082937c90f14ac95b30f5845"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} pypng = "*" typing-extensions = "*" [package.extras] all = ["pillow (>=9.1.0)", "pytest", "pytest-cov", "tox", "zest.releaser[recommended]"] dev = ["pytest", "pytest-cov", "tox"] maintainer = ["zest.releaser[recommended]"] pil = ["pillow (>=9.1.0)"] test = ["coverage", "pytest"] [[package]] name = "requests" version = "2.34.2" description = "Python HTTP for Humans." optional = false python-versions = ">=3.10" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0"}, {file = "requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed"}, ] [package.dependencies] certifi = ">=2023.5.7" charset_normalizer = ">=2,<4" idna = ">=2.5,<4" PySocks = {version = ">=1.5.6,<1.5.7 || >1.5.7", optional = true, markers = "extra == \"socks\""} urllib3 = ">=1.26,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<8)"] [[package]] name = "setuptools" version = "80.10.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.9" groups = ["main", "dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "setuptools-80.10.2-py3-none-any.whl", hash = "sha256:95b30ddfb717250edb492926c92b5221f7ef3fbcc2b07579bcd4a27da21d0173"}, {file = "setuptools-80.10.2.tar.gz", hash = "sha256:8b0e9d10c784bf7d262c4e5ec5d4ec94127ce206e8738f29a437945fbc219b70"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "shiboken6" version = "6.8.2.1" description = "Python/C++ bindings helper module" optional = false python-versions = "<3.14,>=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "shiboken6-6.8.2.1-cp39-abi3-macosx_12_0_universal2.whl", hash = "sha256:d3dedeb3732ecfc920c9f97da769c0022a1c3bda99346a9eba56fbf093deaa75"}, {file = "shiboken6-6.8.2.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c83e90056f13d0872cc4d2b7bf60b6d6e3b1b172f1f91910c0ba5b641af01758"}, {file = "shiboken6-6.8.2.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:8592401423acc693f51dbbfae5e7493cc3ed6738be79daaf90afa07f4da5bb25"}, {file = "shiboken6-6.8.2.1-cp39-abi3-win_amd64.whl", hash = "sha256:1b751d47b759762b7ca31bad278d52eca4105d3028880d93979261ebbfba810c"}, ] [[package]] name = "simple-websocket" version = "1.1.0" description = "Simple WebSocket server and client for Python" optional = false python-versions = ">=3.6" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "simple_websocket-1.1.0-py3-none-any.whl", hash = "sha256:4af6069630a38ed6c561010f0e11a5bc0d4ca569b36306eb257cd9a192497c8c"}, {file = "simple_websocket-1.1.0.tar.gz", hash = "sha256:7939234e7aa067c534abdab3a9ed933ec9ce4691b0713c78acb195560aa52ae4"}, ] [package.dependencies] wsproto = "*" [package.extras] dev = ["flake8", "pytest", "pytest-cov", "tox"] docs = ["sphinx"] [[package]] name = "stem" version = "1.8.1" description = "Stem is a Python controller library that allows applications to interact with Tor (https://www.torproject.org/)." optional = false python-versions = "*" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "stem-1.8.1.tar.gz", hash = "sha256:81d43a7c668ba9d7bc1103b2e7a911e9d148294b373d27a59ae8da79ef7a3e2f"}, ] [[package]] name = "striprtf" version = "0.0.32" description = "A simple library to convert rtf to text" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "sys_platform == \"win32\"" files = [ {file = "striprtf-0.0.32-py3-none-any.whl", hash = "sha256:9f695fea9662cb4ffccf2b56286b3e77028c0a61e87258719584e681e0144869"}, {file = "striprtf-0.0.32.tar.gz", hash = "sha256:7f375a375d99a2700842173168c90c9b545cb244241ffc5d868ed9f6baf9155f"}, ] [package.extras] dev = ["build (>=1.0.0)", "pytest (>=7.0.0)", "twine (>=6.1.0)"] [[package]] name = "tomli" version = "2.4.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "python_version < \"3.11\" and (platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\")" files = [ {file = "tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30"}, {file = "tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a"}, {file = "tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076"}, {file = "tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9"}, {file = "tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c"}, {file = "tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc"}, {file = "tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049"}, {file = "tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e"}, {file = "tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece"}, {file = "tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a"}, {file = "tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085"}, {file = "tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9"}, {file = "tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5"}, {file = "tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585"}, {file = "tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1"}, {file = "tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917"}, {file = "tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9"}, {file = "tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257"}, {file = "tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54"}, {file = "tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a"}, {file = "tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897"}, {file = "tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f"}, {file = "tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d"}, {file = "tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5"}, {file = "tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd"}, {file = "tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36"}, {file = "tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd"}, {file = "tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf"}, {file = "tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac"}, {file = "tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662"}, {file = "tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853"}, {file = "tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15"}, {file = "tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba"}, {file = "tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6"}, {file = "tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7"}, {file = "tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232"}, {file = "tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4"}, {file = "tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c"}, {file = "tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d"}, {file = "tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41"}, {file = "tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c"}, {file = "tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f"}, {file = "tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8"}, {file = "tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26"}, {file = "tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396"}, {file = "tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe"}, {file = "tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f"}, ] [[package]] name = "typing-extensions" version = "4.15.0" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" groups = ["main", "dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] [[package]] name = "unidecode" version = "1.4.0" description = "ASCII transliterations of Unicode text" optional = false python-versions = ">=3.7" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021"}, {file = "Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23"}, ] [[package]] name = "urllib3" version = "2.7.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.10" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897"}, {file = "urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c"}, ] [package.extras] brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] [[package]] name = "waitress" version = "3.0.2" description = "Waitress WSGI server" optional = false python-versions = ">=3.9.0" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "waitress-3.0.2-py3-none-any.whl", hash = "sha256:c56d67fd6e87c2ee598b76abdd4e96cfad1f24cacdea5078d382b1f9d7b5ed2e"}, {file = "waitress-3.0.2.tar.gz", hash = "sha256:682aaaf2af0c44ada4abfb70ded36393f0e307f4ab9456a215ce0020baefc31f"}, ] [package.extras] docs = ["Sphinx (>=1.8.1)", "docutils", "pylons-sphinx-themes (>=1.0.9)"] testing = ["coverage (>=7.6.0)", "pytest", "pytest-cov"] [[package]] name = "werkzeug" version = "3.1.6" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "werkzeug-3.1.6-py3-none-any.whl", hash = "sha256:7ddf3357bb9564e407607f988f683d72038551200c704012bb9a4c523d42f131"}, {file = "werkzeug-3.1.6.tar.gz", hash = "sha256:210c6bede5a420a913956b4791a7f4d6843a43b6fcee4dfa08a65e93007d0d25"}, ] [package.dependencies] markupsafe = ">=2.1.1" [package.extras] watchdog = ["watchdog (>=2.3)"] [[package]] name = "wheel" version = "0.46.3" description = "Command line tool for manipulating wheel files" optional = false python-versions = ">=3.9" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "wheel-0.46.3-py3-none-any.whl", hash = "sha256:4b399d56c9d9338230118d705d9737a2a468ccca63d5e813e2a4fc7815d8bc4d"}, {file = "wheel-0.46.3.tar.gz", hash = "sha256:e3e79874b07d776c40bd6033f8ddf76a7dad46a7b8aa1b2787a83083519a1803"}, ] [package.dependencies] packaging = ">=24.0" [package.extras] test = ["pytest (>=6.0.0)", "setuptools (>=77)"] [[package]] name = "wsproto" version = "1.3.2" description = "Pure-Python WebSocket protocol implementation" optional = false python-versions = ">=3.10" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "wsproto-1.3.2-py3-none-any.whl", hash = "sha256:61eea322cdf56e8cc904bd3ad7573359a242ba65688716b0710a5eb12beab584"}, {file = "wsproto-1.3.2.tar.gz", hash = "sha256:b86885dcf294e15204919950f666e06ffc6c7c114ca900b060d6e16293528294"}, ] [package.dependencies] h11 = ">=0.16.0,<1" [[package]] name = "zipp" version = "4.1.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "zipp-4.1.0-py3-none-any.whl", hash = "sha256:25ad4e16390cd314347dd8f1de67a2ac538ae658ed4ab9db16029c07c188e97f"}, {file = "zipp-4.1.0.tar.gz", hash = "sha256:4cb57381f544315db7688e976e922a2b18cdb513d21cc194eb42232ba2a3e602"}, ] [package.extras] check = ["pytest-checkdocs (>=2.14)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=3.4)"] test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] type = ["pytest-mypy (>=1.0.1) ; platform_python_implementation != \"PyPy\""] [[package]] name = "zope-event" version = "6.2" description = "Very basic event publishing system" optional = false python-versions = ">=3.10" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "zope_event-6.2-py3-none-any.whl", hash = "sha256:5e755153ac4faf64c10a4b6dd3307680166a3edf65b38df22df592610f8fa874"}, {file = "zope_event-6.2.tar.gz", hash = "sha256:b97d5d6327067ee6b9dfcbdf606ade9ade70991e19c162e808ea39e5fcf0f8d3"}, ] [package.extras] docs = ["Sphinx"] test = ["zope.testrunner (>=6.4)"] [[package]] name = "zope-interface" version = "8.5" description = "Interfaces for Python" optional = false python-versions = ">=3.10" groups = ["main"] markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "zope_interface-8.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0c8aa2bf8f3911ef37b87deb1bbe225a310e6eb6522a16d77f5d8330c4f6fbe"}, {file = "zope_interface-8.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:efe234a0fafb4b6b1602e9be9245b97c2bf06d67c07af5a4bc3c0438978b555c"}, {file = "zope_interface-8.5-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:dabeb6fe1228d411994f300811edc6866fff0cdcbc9cef98a78f05ea0da42e37"}, {file = "zope_interface-8.5-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:147a9442dcc2b7339ecdb1be2b3cdb098e90462e39425054053ebfb50d99125a"}, {file = "zope_interface-8.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a17e681224267880707c9ec9e730ad9a1ad2d65c371256843efba6cf48711b58"}, {file = "zope_interface-8.5-cp310-cp310-win_amd64.whl", hash = "sha256:d178968a1a611df30549a717d1624cb38ca810347339e3e37b7baa6f6781a170"}, {file = "zope_interface-8.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:afc66ccaef2a3c0bef6ca02aad40d29a39276389dad16a8eac36f9f385e4d057"}, {file = "zope_interface-8.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c28044972187245d7a309e4699319bfdbd2ffcbf7176d1d4ddf5adffb2dea80f"}, {file = "zope_interface-8.5-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:03bbecc7982af713d7499d4084bc03916413d17ffd45f89009348cc0c1d9e376"}, {file = "zope_interface-8.5-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bf917009a4a7457c7290225a019f4a0aa706d96accd2cfdba2418d3bc1fcde2f"}, {file = "zope_interface-8.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:31cff25b2aaedb5267e6e77b1e9be6b0ec4f622032de8a069202b8ffacda7dc2"}, {file = "zope_interface-8.5-cp311-cp311-win_amd64.whl", hash = "sha256:17a3114bbdddb5e75e5784cdf318944636190cbbc72d357ef9fb1a8b0351f955"}, {file = "zope_interface-8.5-cp311-cp311-win_arm64.whl", hash = "sha256:aab6bb5bee10f38ea688b95ba054396b67f613552d2c8378be7fcb2d2fba7646"}, {file = "zope_interface-8.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8e6ee90c2e6de7c37058d5fa41f123c8b13a312db8d1e0fb5840d7f4bcdff9c9"}, {file = "zope_interface-8.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c1adc90d3576b3b4c4de4953e6002c37bef28b78d7fa54c1bbfd0c50f022fe7c"}, {file = "zope_interface-8.5-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:e6347b8d8d12c5eca6502450a92be30079b7acfade2c4f693efa0deb8871b06e"}, {file = "zope_interface-8.5-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5e970dabea777a24b0b0bbf9dae3ab75ce8b2d8e948edf4875627034b21f3560"}, {file = "zope_interface-8.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f0b48ccadaa9839e09ff81e969703cecb3f402c813bfe8b958652e699bea69f5"}, {file = "zope_interface-8.5-cp312-cp312-win_amd64.whl", hash = "sha256:e0e311f1277468c08fd59a2b41f71b43d25dff639789d364747acd1705c0df6e"}, {file = "zope_interface-8.5-cp312-cp312-win_arm64.whl", hash = "sha256:652b73107a04159ec6c020db6c1543d4f1e8f4d069bd2aac88a947820923517b"}, {file = "zope_interface-8.5-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:28e80457c134d1fa57a7d758004dece348654e1b1467ac22dcdc20fc1d127c52"}, {file = "zope_interface-8.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:09495ce9d559c06b70f2d4855b3e4f48a822a9ddc8be1d30c5b4e5be14ae1ace"}, {file = "zope_interface-8.5-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:7849ad8fa90763cc1087f4dda78ca3a233e950b3e08fac7079297c9cafbbd7bb"}, {file = "zope_interface-8.5-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5578c9421ca409a1f39f153d6f7803e4cde01da592ec75a9ac5e1b777d18d33b"}, {file = "zope_interface-8.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e1bd7d96b4ca5fa311f54c9eac16dce4886b428c1531dbe06067763ccdf123b4"}, {file = "zope_interface-8.5-cp313-cp313-win_amd64.whl", hash = "sha256:0c8123d2a4dfde2a613c7cb772605477724782c20bc2e0ad1d9435376a6a44a3"}, {file = "zope_interface-8.5-cp313-cp313-win_arm64.whl", hash = "sha256:6d02be14f3173c6c7288bc2fdf530090c01c3cf8764ad46c68024686f364278e"}, {file = "zope_interface-8.5-cp314-cp314-macosx_10_9_x86_64.whl", hash = "sha256:ffaecf013251a89d0de6feb49a46eba48ad8cbbf8a40aeb6045e459e7bec6784"}, {file = "zope_interface-8.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:126fa9d1c52295ae076d4cf968634f0a1826afa408a20808b57ff72877b8f69f"}, {file = "zope_interface-8.5-cp314-cp314-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:3090e3a663d20194756a59a272e0c8508b889341e31d5894223331fe6b4f9b21"}, {file = "zope_interface-8.5-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9342fb74e2afefdb081bf1df727d209ea56995c6e13f5a0540e6d7aff4beafb8"}, {file = "zope_interface-8.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6c54725d818f1b57a7efb8b16528326e1f3c257b602b32393fd255c45af8799d"}, {file = "zope_interface-8.5-cp314-cp314-win_amd64.whl", hash = "sha256:29d74febbae1afeb6834c4ccbf42e242a673c860060f09e53142825270456140"}, {file = "zope_interface-8.5-cp314-cp314-win_arm64.whl", hash = "sha256:633c8c49396f38df030340797c533e9fe460d1b5d1e42d88e55e938e525f548c"}, {file = "zope_interface-8.5-cp314-cp314t-macosx_10_9_x86_64.whl", hash = "sha256:133999820fdbae513c36c03d6f29ef87317aaa3edef39112222b155083664714"}, {file = "zope_interface-8.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8bd75c96966e573232f0599deaff717564828031c7f05563ccc1ac35c5ee0304"}, {file = "zope_interface-8.5-cp314-cp314t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:14b0e9799351d4c34fe99afd67f0cdd76e55ba15c66a98699d5fc22ea8241e08"}, {file = "zope_interface-8.5-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0cd6a732ac84b94eb1ef9222a117347a27efd294ee16810ffdf7ecd307677ed5"}, {file = "zope_interface-8.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:798b7c87d0e59a7d5d086d642208d0d8700ff0d55c4029134b3c479c3bfb110f"}, {file = "zope_interface-8.5-cp314-cp314t-win_amd64.whl", hash = "sha256:0fc3a9d45f114d27eaa1e53beeb144533689edca8a9f66505b1e8e8b3f075e42"}, {file = "zope_interface-8.5.tar.gz", hash = "sha256:7a3ba1c5877f0f3e3906b02ddf793abed2becc2948116414ce0e1dd820b68d6d"}, ] [package.extras] docs = ["Sphinx", "furo", "repoze.sphinx.autointerface"] test = ["coverage[toml]", "zope.event", "zope.testing"] testing = ["coverage[toml]", "zope.event", "zope.testing"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<3.14" content-hash = "1e1a57083969e5a32a6dc65b2d22b5fcd6ab8b19697041d66f51c79404cbca1f" onionshare-onionshare-26fcdc5/desktop/pyproject.toml000066400000000000000000000017241521174352300231140ustar00rootroot00000000000000[tool.poetry] name = "onionshare" version = "2.6.4" description = "OnionShare lets you securely and anonymously send and receive files. It works by starting a web server, making it accessible as a Tor onion service, and generating an unguessable web address so others can download files from you, or upload files to you. It does _not_ require setting up a separate server or using a third party file-sharing service." authors = ["Micah Lee "] license = "GPLv3+" [tool.poetry.dependencies] python = ">=3.10,<3.14" onionshare_cli = {path = "../cli", develop = true} PySide6 = "6.8.2.1" qrcode = "*" werkzeug = "3.1.6" python-gnupg = "*" [tool.poetry.group.dev.dependencies] click = "*" black = "*" pytest = "*" pytest-faulthandler = "*" pytest-qt = "*" cx_freeze = "*" importlib-metadata = "*" setuptools = "^80" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] onionshare = 'onionshare:main' onionshare-onionshare-26fcdc5/desktop/screenshots/000077500000000000000000000000001521174352300225345ustar00rootroot00000000000000onionshare-onionshare-26fcdc5/desktop/screenshots/appdata-onionshare-receive-client.png000066400000000000000000013015711521174352300317230ustar00rootroot00000000000000PNG  IHDR}VzTXtRaw profile type exifxڭirܸcr\ adv^Ub p3rsS|.Gq=)ߎ;>>"E=09^~\~ܵ{;Iwy=Pnr߃`Xa]<)$請$fFI'N};عϏ?c?{(O1zsyیB_^fD>B|E(sYWܞY&cF6hߐn8)x"1n"cd#1mϹ;[,p//9н* 8PHH'}iF% '̝q_!V ?j+=yNW|v{BĽ R 5c 8v3yL9.2J%7)Uӣ5-<_QRM@$+BܩYxTJ^F5\KUalVZm6^z>q$ :}1'7 =zrƜ+*kng]vm=hh֜u6O8ɧzgynnϬ=k9k5e,?YpkCIQX́7eʙ!)g~DDcA#Xnݏ1oWsJGRܯyMl> S.v}MlDcHk9Z7 5-#c|F9]Kg*Kf;w(+QNa~ L뱨Js0YT|BM;-tV9^kesk\ߙ㜮Z[$۷o30,Vock}B!>nZl;k>ux#X'+]f}_5H{ZZ>C v_3mY%÷[ڷY<#sJ\øt'Zm[KUpLȢG;U}o᪥.enAD3UK&B߭s&Xrf]-0M!S>s :EHзvz_ ?5BZhs S =uW)Pϐsȕͻ+{]pO`^)ԣѦJNAS~p<2Ӥṛxq]Z YsMn{ΔyGcU 衎h30 B@J͇P]|b]+I9-JylNi#`rL|O (ay4 X'-k =: QPgItӓDZ}jDϋA u zkj9nĎ~B[IkkEO *A L-^edmj`L:C)_ X!R6@I"8䦖  Ps[(\*VlX$]ow!Qr@c֦@s?-e%"tP6XVt\ԻTN" XiY@ԊSLȧ,)Сk^us9+1*?y -ݭss:)L7tpVHNQZ_/܄p)V3Tv 6 7f=+ -] [΋ RHg7e-a1eFA C&Rd{a^YP#E@8r@7@`I啷^nA,`\_Y~a]ֻK:굻A䕟7K@e*j4eS,c M(+w` Xg)!=B$f~P{aNby~';>3GW`HeĬ٤Bfa?h@!!$p7 ^Xy]zT$#xГ׉3`Fy 66P3WPc]Bcrz+Q1>12 #=(НǼѶ۝:%DFPLO0ZPb-^.2g@s 42{:NuHBdBІތH#ڐ$g-p06qO?|aCm h {!tfCrg_>A=XK>h*%PVG}"K=I #ҍM6U E{]K`2 bs $X1zԷy)'TL[<"иq* ytd`0'}#oJ,t!yX}l]w#Zl#j6"1 %" )a.>`|iӨ+ t8Ÿ]YVV9 { mEMsT@"~-q@H'o66HĜE;cF/p`M2D|V#,!;nY= 40!@i*X6]gT_jl@ dzN[:IqUBY O„@$!Iy g2 zA^vFjv^+!b[H@KBt$ez3jR!TOuTe6l*8VhB_$,ŮM@,ksZ&%Z&Fı0Oq‚Lin4XdF Qke탂C?Dɸ3 Zq[5[}@V3̨|ix Q[%FbSK#%EXl~nm{7M#R:?7v}5%cDŻCr1{<E,8|‚ĎI8mh#2WE雅F´gj T ){(^fƈEbx.1: qcEf\P\JI!7th#%;,C`Ƀ}NRaA>4n*FFf">8Q@ETuA1p$7;;0Xm  NF}!רiu,08ׁaJ+^G -1h8|MÜAЗ6voMc*lU,C]OΓ$IO_x~pg7m4y6AO>J=:?xPQdxѰqxa)Iu&ZskamABIA 9rڵ^r9E7CH2:-7\ߞ"MxDlA=.1!R;Zu.A\s&,A'RL0*ը-1)Z9 &F0RŠd*Ϲ"&UG؜5IC< h?ˁO)ՆHE$5) ˋOAD9[ymbQFsf &hl_U'G]j*'\&-Ŀ`ӣxԽ[=,xЗ@۾6B5DˑÀBA0w`T{F v0`yk4u3), lBw v.5g,{ l8OEeh^~`k'GCA %ggC9001|Dr*ꑓ?`n};Q Agi_P$=E?}@I94!8r"GuIE~(=W53n.*/uԞ=ő W$QdT䋍ھщà_mk-8})S6tmڤh>9 06 o ӼlHyvփ39g Rq{S[(K 0Zxm `q 8!ВdVA]xZ!v|Ku(Bz\Y7'FuH?Td@x!f|G"ZBzicDbVپ 'eq3= УjnPTofHgap >-\/`ƋD]-tq@A9wЅ wsk ~^jiS;ߵ<<:g'{XνuBOpiU#YI,hh$IP%6tN3+ʱ R˴@!0>";oz\L{ #&ظ3 @r9pW;WZtaro&L= ɏZE3D.N~^bf[$s(a9l QO  *K+$y?rc;-Fɾ6ǟ4g)+ѓ^ O׃P R* Ǒ2{IY?Smihh[eiTXtXML:com.adobe.xmp C0bKGD pHYs  tIME, IDATxyeEyUuadY$ ;**A( ƨq{5%1j^ A4(.l=s{`SιMtE[caAc@DQ!#sD:Z "^ת#֥SZ[kk}kuŏk&1X=cuX&}<佒5(]9^|.5ާ!RXÎhsqV9_Ktmgp̞=VcUUUUUUUUUUUUUU&'xո>,50& ˅)0 "8/|!~`V2 SH`a ؑf5s6)Sc&Bs=1< Bm&]w&C*o,`߾O''=gZ6>W\S8"YM}zͩc#f5o<`-h#w^a)L94e>SX,0Ƣmo2?D/k, #k%xc0?ϋgP|`X"%E!Oz-pz0/!M1502wΦuzFE֓@``9O3iuy-t O= J2Տ'w.>H|LZ)x+zEDhk׬yYh!$H+(4R%`v3(9@d4+p@&@yq-h#md8QS328gAɴOiHX8gsjGdZ8L0Api7[|mv]>;ĚM38q?5tFCiKJ,;N Ziqy!5ٕZʮ>JBָ(\~t0r_tO w⪪ߣBXfw;`a$חhvuįGǂ;.@÷Skr W2P֪TSKdVb:688HOeșl*ӕ~lbsG- 1f̮Mrp\Rc$;yl='GK`i0B-T,z#u"_+X)Y œ6!蛬2@m+bF{$XvEgL t;Cxp9Ð| -|mUUUUUUUUUUUUUU@Ӄ.m195'qtOfD67q"Rt0qlUFSt0hf'hiIh㏍''9mX ?ⵇlY}q NcԑiG(ƕ͹FŸ:ۼk\r۰̫t*ufPڶ\(+ Q?Tֺ|HB/Rsv7g9ǜeWqh͑޷JPaOl<"2taZY/̋Hm1bky{q[aN1e&Z 0 L1?DaiLbc~jl~ KqZQUUUUUUUUUUUUU4 @d܁ԘpBPn B%k*+4R p*b`d'1#OtzRG9ϕ:ѪS =5 +Gl@C=KĻF6;|4Et$h, z: iH噵o&N|>S]C$йyP@:)l-`,|!PMe7xPaٓt 8%FCTXYCI:Z-sF,jXWXUUUUUUUUUUUUUdAxf$!"SqaxTujY'̛ iqW\Dۀ<åcZ]UAPCC_:a6tjm c|4zuNqtz_bYǎS\Vr65M_ilt .&Um;HPf0dɒ:4Z)TmwhmPHo020jPr]FxxMl$^-B*T28g"q^2X4]Jy TČ p?BdA (Y:0iK6RZ qy],(\g-n?kkD9Kv}פa,3"1%s1.?.F6:䁋!v(C Rt٦(g~x!6]$:V5x)0 |C345~/Ⲓni %bYqM7][Ğ 'ƛDҍ~}9R@gyH&Kn>#y["u_s0P!󰪪j)v 00ٌ%Pwpk/1cMfTj&8ؐDG"sNӬx6סc"c\b%?=G*R]f^qY>l* ohv_R1No&^s=xߪnxֳ[ebi"b) S(if/҄1.Bf!>wd&[F(]TAAZp8=Ŏ7-y̞ê|Ls KE~$6EmDPm<Ma\-YM M`C4#7iᇰ0zf@01-UUUUUUUUUUUUUU  }‚&`kpcOY0_-tRP t BF]k/0?a9 潔\D0pOBt סFȅTs v`F15b! mb㙆b2C'vPKS +j{/.ae0x26ի@C.=MYoW#K)IR%%U-ֺ |Ly=6;T2ԭ6%ЉKnq桟aTWUUUUUUUUUUUUU=^e{,lߣl Xe <6KO9OvB NK!nt!˲[30 ^ !wHFX X5@NHz/">a&V^w_K9 kmJ{"q:w=1^#bŪ:; k{ "|AWJ-CJ+|P˛I,2D⇀i#A\l6a'_#Yv) o`iz8\ΜՓkB\鱆}eo?H.Yw(N h,L AyUUUUUUUUUUUUUպt^! ~͉ |4b')A.`.p y|gB [(S%#)isx4>%nkQtƸ\4 .1R"K/T6p6f]f ?t𕹘.3V >d#LF;(JؠcϐCw6?ݒ,|lRPP1j %&rFFL.+]PyEJ%"6) Z^Q҃EȦ,Q"p#Nc Ib@;lu|Ƈ%dpƍx#Xbב[aC|zPxB>WM4ku\nO7ݽj.|/Ƌv|SӿvSW7 >9x斷??Og{0iGrB;`ECc (ga=,l.~+xpal`wQUUUUU뮿a?x-[M f?_X|mv~ ,' [|7rSrG\/ͮ5OsG} $dfMaƪ15Y3 rB9xv`Ʀu WgP00s)hƩmɁB6+uQg&C8I.kaw"[)Ԑi^Is)|^bAf&2[ XL %͐*(ȼ=FL5偐bke _+J[f9פr3:M3 Zkoc&PNE\8.E 6jG~:MOTیXrE\@pj'7Չ$Xfx2;{،Ӷ-IE#n=1x{q.㠉qG>_y'ǞNaߋ%nwmly܀§_k@o??q]}>[%^{{>s|3qWo*zy3q={ikWsw>O;׵ 8i8ތ' nl3mA3X%?Y|Ig 8}[bC3>^[9gl?y$Eۏ·&x_O7Sw1ȔvKٿ[p3oꃠ6xG?uxa%={xNOv|7a+ߍv1&_<}n|q Zu]\wߟ p|UUUUUK|Տ0? M:@/zGS߇ŧ{.v6q@d8H!Wf +6ȼy011QDfsNC8K ΧO*ɀ.d T,3?] DנfE\ӏSˡ9ai2s_ٜm_g~ >8mY]ht.4@]0B{r-|,~P GzN]jh[o{OvImڹѠ->Mݹ#C2+Zi_פokaK4Ƚ鮙#dk.QpXzHo1x3~ǿy[+_wc-ngprAXV5Xb‹I8gr<at{ǥի-Y~v>q굄x}aV,}v!v='7qԋw*,_c1OA?qþ[y,{`-f|(^7g^us͏tp[aᡥGX ? Cz"le  =z@k ;77`Z:ELUUUUUc-رg+\}}(8Z{'~t} $luD7=y 5zޘ)@c~^}ғЧwc>/fɯx~|65W_m,_,ŗ_l<k&Av+}Zcc 8էO_)\; 4;ã\<أӾ:x?Ǚ/?9x5f~ѱj#z\󒰮q/ŵ__o:d.]_q=v4{E}}1nS{x¾bK0A IDATګ`~"7 Q\76}UUUUU4paX[6帮3xF6M6PDW9,Aa64c[,#;օR2VDhijVuh瞀nyk\Spdcxm>]{, иЕ%}dd]JbF.x^̂ ;#PAUuocM3B F`qYgJ 5Q|NrE_2>cf$r"X]@X?BwpJ;b_5fO BBzl^fI@S7+?@Ã9c=4eVҦM5j7G_eoKq K`[8s,Wݏ,ַӖ`->;;.->JY߸wM/Ģg/Jчp#bmp_%7{e3 ftEǾk_^p5:|=G`1h}<ĵ_뮿]c|}GQ_Z 7>n/{x}=X%U0S-oXvw]h-X *|u(Ŀ~q Q\{UUUUUa&7;)׺8!WDZL9EcCHFA1sqblb#;=vĢsP*οf㱂'n͵f0O f(jz}5 ~"}sΦ!69HIƨs9.!>8'},`F6)j-msNf궑h'xl>>߀l$ arr*ox sg18do4#EY\I-CM~%-n6P#P;Rn݂|lFQސCYlrsߟu|wvR}k7 P'nj)u'm{␃_+.fg|v0 L/5_j8L:x̣zO/Y?gtW;| 3,37}<W||l8^?{ pyWnaOtc96lq0{qާ_'.¿;߁+ | vaހq &^+_?|p+ /=H~_gy1K=خ_z]-k7lxA1Cڒ$;;=c0 AZϾ;_ܝRl3`"GͶ-{$B.. &P#;ZDF* O['1YysDC~`LVRK8K <գl \ҙ Wً%#M:.z 7++9%_ )<.Yg}35ATR֡m#ykc'|:c3{ښ*-]j{j/Ҩ42I{|C^s @!g?4Cž+D&R23說O=fs->/|7l{ڻ=Ѣ~[]psc@߬6]k+lTw9^ bO\ \s-,ko|yww~-0v%ގ5ol>}\p{~GTXߺdư`-0~Yw_m߻wy݋pߢO_L?#5ap+o7쎣"νdC?mǃ<ؚ(f:lhp`~v48zFaض(5D'/eGmϖ$h3D.?J4NLLM W7f$ =.}^0 dPJG8Y.(Y uQҹLj_jOm+֪G6#`\ ][̛e%4 g4P@$!T&9ʄW@AH1PL Q1\}N1N\@OBj?M&;x⚤Hcrr2=8+,`2{ d n.n;;C&bj js!`",UUUUUUA .؇psw'84~F񹯽 ҝӿ#9޼9a |y1X O."?Or  +qs 8\ |  bތs? KV.pEܷ^=~qW`"fs7?w`@hJoJ[ÚU?]h~how+;;_Wݱ K/)< . -3s΋1g=X:v:&p=o=C muU',PcEř_?<00h;~hbqh Xf6`zh= V 6wyx.獳w緹Cg2ϯUA9LqܘƁ!-Qk<$MWD ƖnGf.atX DLaEšaNc$)< ?L̢2Cf?i_S1x<ѩIj& FN8:R`L 2q2>upJ7$h|x4= Ch!A=\B`O7/-k6c`iĘǰ@olk tP\``Ac4YX.pI<F3>>)P0^3|d\#sgE8j3$Ն1XĜZԠpP"ұY8Vie0bKȪU[A$eYZiw?Tr̔1y!qrl7Tp5b}2NW늜j?h.uVmWoq)h\oz]DqR@L:XQ ,] %Go^"!߼2P tў5\UUUUUUUUUUUUUuov^zC'֬AcĚ0!P2RlL”> z|aWx?DN(Wm 3 \_Ϧ)^B'SMqףOfm,pa+JYMP#u(nGIѺ̔zT7 03S "w<S7+o1=hji"5Hů7 bbK.^d$KMj# VR}5k'` @LɶuN3dhkV-=1^>%tzHzWS ,uq(~?zQ[f^vP=]^UUUUUUUUUUUUUћ 6k6 >Ě5?Nc{19?s}azHdÍK& -!. cmuΠmCneN+f]c6̅-VFՍ¬+\/9踜Vi&S B(JTORQ4V4S1pȐOөuߏ\?fn3Vn]F9m*|0~fP}[t}C%"zfg8+O>-l6M@)P+KAi wt̥2UڸYF?lېu!bEWUUUUUUUUUUUUUUp=Lǯ!: c-&LO-ܹжֹыRtM^2~i ƝwMcRVtkE;阽8ۀ 1h![=VMiH78&LE$_c ?T2BЦ/6s2%׬a!0qx ]y1#*QZK+6츽D&d\(m 4Zgtrq#&rF-|[ؔ65$gFJ7Ċ2U`]atovdn#1_pDQ]r^. Q52}.RHYŭYUUUUUUUUUUUUUU5>,Z64 ^ v5xhC%07| IwKE{5mmS1$T;/zb$r O[mxYq)V&1Ȯ3ɠ9 Y0JKV]J4uFH8*JRU8V|.Ǥ{MB\ZTNOLJe7DS[o s-.H\jkPbܦF,*N'-soqʀF~3K3"IeAYA 2lŌ7 Qv2UR!Quc:n\ZˁF^3>oHKRN_&H̾UZRUUUUUUUUUUUUUn-|ܶOزG/k ?΍S A(t㮻ng=Htɋa$.#@oӉx _g X6K .feXcf3ц-^I&gUEFmP, &K:-|U;?m24nHS,vD-]U2*_M1*}SercSvʌzuHuQ/Fyޠkߙ;1km:p"P%ND%bpܧ`cÕLvEn㥍8>yh-JLS\˅Z|RJZ_ 3u%l̩t_&,N ^9I.&4|ClysFQP%i=T[(KK%P}6i#WnK&7><ȑxq&c._k:?GioB)hr7?esU`Gl/V[rAR 1\yM*pAY )4K !"=ތQ,F 9k\"Tl*X\f>Yļ6Go4CaɌ|@D TCzSo0KݪCx.oy4,o2kls!'A&RɨthD51@,,+lSR'4KFS܋}=y_y_s> Tƍ sPdBs"P+7XuLdvJ0ٽ(-+:[Z@HnIKίGFΛs.гFƚ4ӨhDG|2[#\䇃o )Ǎp 85"'-ᘫQ\ljY˃cLd ұ["oh۠܅ll̲\L%5m2IfP4,̨bqb6M ?C>'2JbY$;1^N9pr}2bmnw E-HbiBd'ն,3(_P> z0pRll~cJ]9:,Nr IS~`e:O.3'Q2Mg{k7,M8'_mZgJfg!4ޣmX7? @=]ޣ̹(O"' 8$3N83DN8Lڝp|rD\IH6m2- ,#n==."?m\/qX#QQu`MM3 x<"An.^dka`Y`&f*w |`nN[RyCY"/|#F3Ux]$!ԲD$:d96Y)|RKlamQh`D]IY4`$ƚEX܏toh2Iysp \? ;7h/@NCt[6 Cmdm`(6C.rݴ!>qE;<;ZgҘ58j4)J`Ī81"zfkeVpE4(ҍC\ea\)7ف9& ]5pjr:^`B1+11ᢐlV/(iFn~n e 'h*)(SE{Γ5sAn ѶF'"F-}Pl]!E l}Mm6z/ﲿ! `I\*@[pp!!HLUUUUUUUUUUUUUUզUXw_0(r /˹M+^l-7&Ar1)#T)3X<!&*bK ZccX4%$@4dM\B12 6tYz."DŽy_#RX$GU0Jҳ kMQ^ǎ񹘵dK #ʳU^#ü7LdUDY-&|q-cG(yf.ЛTW7Ee?nF\x^|HZ_-)Mw\ >1RR" #'IɥL~NF?ط4cNtDJLf|XLACo SSlUUUUUUUUUUUUU&sm 4mczT"3)0jf]=m}1g9-m5 IDATsV 7]x\6 +9=V-(]4͟?W5H1؈I%AiA`0%o<QEy׺L%~)̬,o+ vz]&w'ˎ4 &Ŗ-̛^ZGB1?%j<z+(n Us]na7/FihI:VK\UUUUUUUUUUUUUU 9ޤt- Z0+1Wnj IGl8TgPE$@M49<3&`mm^["{b k ,DZv*-B6z.6F~B l/ 3YD?KlCFqXMRm¹FA;vq%&dfe"YuCbvpD3؅Nγ> PNxHNus hNd/TrFmV*gƛ5_H8d@6+7Ǫf-0^iPp -sfb#:5-hbd(ԉs0eX>:DlUUUUUUUUUUUUU&8=/Ns6`Bbu8$&ż+ q_d!k]b`ed,иc}LOP*-w"th01dן64= jWGIL(xT~_ TׄO>Rfcq_IZJ$e0 œ,s!`=%Fq} G(8Д@_dc:jA_C&^C2ma0H Ĺ tySKPhYbݴUepcf:!$795.)Cb`X[C>T]V;NVV[xygf]o:^UUUUUUUUUUUUUU#%eF 44[0nC@$4K@c+}G @u4I!0c?äRF5!h} |!(dԱC>ZLOsc$nAʨn&^jȬ4o;#xěOYT<c~W8X8mżͱrJtd"3R)N+DEG`zDaX(U1nFx K,B@Ѝ-(,fͶK)P8и>DǠ"i/dHD9nL  i^卩Ehv{ʭ&e1ʶمn~{Ǟ{K.}qݵ}x晸k77ч[3ڵkg^߇wa0=O~3~mo;z>Xܓxguw%Ks?k{ӵkbҥ1;=xZG o/o7x%ƪ8$cC2_WB,JG-]a'f[-QX߮E1hzЌCbeE &4WYD$a0s1x;R! 2> ku38+ 'Li4&Xۃ5dm!R.LB`w7FGy||t^!l0 #kȂ`kq~5-bmy)!gF m(ė@mQYu@ zW@xE]D l3Qe~zkUD3E#MCtӰu$$NߔZ||5|øWH׵f\c:/$yEmW\~9N{k0Ͱjsmgsُ=!/9|K_̞=Gy$uê+q7֟6 /,b ߍs>zkn9#6*#B b!VO'!?*S5S5= h 0q}0?= ی#ci[^?6?%Ҽoи1+1!ZCv< ~SHϹdRC1M4 .ȤXtPtӯaX=@FIKWf+._qh1U07thO3&̀$v P/)J&/5P2R\ gExǙmii$}gh0^&˘!ί2rl, e |.,"LH\2 $>XJ*ţW>•9V|0t ;'346 sJ6N<Xtq*i#}];n喍Ny+qaᒋ/.>w衇bzz:;on 6~e>XlYK;tw Zr%`{H'WX;飯Z?dNP*z c #8AҒ,KGu8ZXۃ_0Xq B>ȏcz1ALؙ~à~.bWp8X3I.4@= TN-YNӰDAR%Bł% Ò px^O~r1Z4Mb3u9A .M$"4n6i "p X3kp,o=@FưEFc憒deI(_+sst7n2AN2vT2+t#1$^F-gwHHf[{ps戭ɐ!".j_ /lT js &^6ٜ3w.N~˱Z \pnKM'l=Sӎ;bTZgs {o}v/xzkLOOnŋfbwܗse'EO~2f͚{^pn&|<|9q}eg%ݖg|>nagxM^bv‡N?k֬9瞋=yQc=Cᜳ6ltfϞ\=>=lɯx'9%KK睇_qnj~pzSu߳18qcwNJ+p;^ZZOYkzm*6D^c\c3ݘP*5Z8OEcv4hf/l88 0 CN1L16g 8 o ВԤ" &; Mm1@a @PYk p֦M7 ׸82- ama:듟Z Ӡ1‡a98M#5kB XB|; #ra$M!`z S@N;s/ :ln=B H>Cmje҈T HWJ28fC̻dçkBRNCw|?9Z{sTU˄@*>bAnn!-KkWvѦ>Pqm "@4 o$y㜳^k9ZD{~ǨQUs+ErLZq(\h9OHJ#q9^2RxDZ-Gxԅ_vJFa?80yMɹ3\SKF(^S_˓/e^}pȑ;=~qn&~G믻2}/xe_Ws= {.>q#\ѣGxQz=:#G+~?5w>̋^b^W}?<9 ]^W WU=]K_wogj]|&u^D^}7󪪪mrBkB2=Y@1 Ke)dȣ~/% L`tԂ5 $K3aFZl?s *&V Bp2#D8X2k\FR} όBGc m}S2ƀnWX]Cp9"b6q@JSZK@ 0*hzS+!xmYps*wEb\tcf y, k-ә~2nJq牌aY#:0 ,6Aw]@,RFA¬JrYXx-2BC`{drfAڋO=b% P|vm.6O'yk߀5yOC.Hܨs kaٶA9\szK/o|y}9󬳸袋x0/.ԧr铟h~/e#:,^WX,X,oozPg>?y'{1o{Ts9=zW~iO{OzғQ哟$oy=\r%tqW\q_&[Պ7 {ZSלmO:OxiUW]g?Y{_B~w]>Os-pYg +^\~9sa/iЗsݛ|O|ӟEUXUUUUUUUuoe=K@Y8}H*TƦfRbd}DrIu24T*D=B,* nET9iqM cdUO=8 W%h]^A"f 44rT0$id#V"1@=Q)=jr१c0hk.* h OwBf/`!yW 149 Z̑5$&EacX]W_944MCK?5(=".O7ĩWn#n1k$eO'pHe^kM3Cc!ԙW䥿kXE/~W]W}([]Ƕ^#)RB2e3\XDs~{̶AW`[Q!;)q_S<|S(L g"-9yt?޿Ϥcǎk ,Żh⟣W]u]^:t |uͷw %&Ox|w߿3:lbo4MÑG+ﶉ}??/{z>я&Pu nqo38c`:|Kys!.B~W~J~i8sx#7/.y׼fm``Z38 lvcx{.4Ms|Oq_/?wog ٥iYGb6&tiKE-tW ୻SNzccb@UfЕb0dt R[9%fF,ƙu#ɹw뭷 ?kÜ)\ ̽qF# Cs*yf6,e?$^V2=OlT%Ɣ(uGxgmeRVR his>}D1'?rT cC]q~B8p]qgU3 G6?jnG=Gr?-o~3}_bSpr IDAT??kNĘǺS]]╯z~:O~k@+xz+"ַ^鞾#G~,syxaMҡC _jV%{.?s?.tyܟk@oM>O*!"9>m4 δm]U''.Lz$,.(FҜh@,3icǚHW IQkZX7gss*}âD wl!FbTf{|M)L!RXcm*N<_C\s%p?J>kx#< >Orѣ\СC;vn^K-_r/9眵:,n}k}stn wT *2CM"JA X1il-mb h,mAc7;88>Lu7;1Gw5aÂ;X7O=3N?_C籹u`46Ncs,8g3ƹӘ1?D̈avv!fbƹ!:-nmz1M*_NT3!#:!E"e_ +k[DBtifMMiPǴۘ LD0EM 0\bY¢j0EԮff74jǀLc r:): ]bqC=8/9P+E|dž\'Ď36?C*{Ėmv(кRf%퇋{2FQ:D<CҒ5g`4R:l]-2Cx(Cט& ޗ ZX(bO7rM71<ƪu(_m4=0__>>c GXeq6sƙg|g>;?pƙgO?{[ug}6L}ϻE]Ew;g5\ã( ]tgy&[_r Qz9xr]^r?f33iyϗ||׻֧=>NiާÜyY|EXk.O~2is7qo/?T~#/k-Ozғ*>p᫪V'H8q8b|7FXqHv^`a&mղ#݁ٻ'hrpiyyM~{wwt9s=)N;N^8Q紳P0XL.vuC$@l2;1LSj7 Š3t4}]vf [Xq]U[!t],1#cR9dEȘ}tШ Y}q60J@B~qKPH2`3MAbjam#\̍hGCqY&%ñ FE\0yciui곸SdhL$F KL{K Mk0$s4mrL7bL.QusT{ _ղ T\bl~Wx3?C;/|??sW]|1_|]~W^:w\ve|}cx\l뾎|Krꫯ>){O??Y'?)=\>Z+8t/z9!%|S˯u<~PUz~{nikmo}+iyϼ/~yk_{<͵~0w\Gq1? UUUUUUUUWfчm*`\j5 vQk&"6fs\ Ib ۠q-Q{일-e8<D<_A `Z0'clLըJdPih [Xc1G?6#b6kEjE;A]IDZK߯Hq$ KwḌҨ@4t]sg}קuU~>i{Of@rQ*:IJs0V]_4ACk6ͦ31ZQ6rbiO2ORئ;c olMSuz_0[ 1n;:cجAS[⤍7EJ|O:;Ddھ'fw8I0kx0K~;As8peƲ.U^s~VUMt!e^ VUUݵk_蘭rbs91(<xKf, 6` SŲ_\CukXU׊f^r̟3rCɍi5p%DK4!ߧ஘1hLs$PgC&)MnX#a O̯ٚ8ml ybNri;pKB TnuYفh86!\jS^w* ,1 RHKqs#|tkmš8>4w9-)MJ#o|Yvkn2oڦ<@@ 40N\2p?cYH pӇoM~>>@9?o?؇z3G?_zϸ}VﵪGm'sv'1Ws8Xv!A8kRTXMc4L;NY/\sMeέw\O1a=n $sʳ m>8YHgeZ DAzbp&8|i9!d+ܓx%ZWX_&`AuI=`m*EB\hqҨw1QC8`}I3`bc:!j*~5jv:5)A38U].#G)ŸF D*0[$66L \v2%]yxTU C1N" \:c(ɘTu 0s/+n2 #e#T-&ԘrtR2BOp4L!PɚgqJ;RX2m]^UWUUUUUUUUUUUUU=Z,|=K~4hr]@r6"ۤQdaEߝؿl<;C?54lA1ivIA(N怋14Cf(m2KX1`ޜFX8'n%@6Xt}-F2XcG!~Awi14aV:Wk$9}.hQq|Hy"mHĵ{{`3Mn=U B832ZuaX[ScנLXfGZSWr\<+q.6Zx!@rq c$X+ׁPm ruhY 8Q&?D;Gn؂$h*TB*[,A;DP)Z svc #a-6(g[bBsk* )'K. PA."IѼ d֠m0ڱ"-f 8/- .RΉ~?&(Ptu"l3^nN[ZCN8N9QqZ2~}tY˸=ñGp:=3o` SMgcfmDa>b91LZS! $\5g Jlbm$FT: sYt~m.*nAXt]''ò;$"-Уd#cԢjP88ǚ9j" vaAKYs&cF }ۇp+e"̮>blC ji-ju߯ka4F|DUb@snybf}j8Z d*nH&dq͹SoA!R[J;Dn #)&RnaԤm641VXqpsd[ʔ|ZFzЍ;K 5هҕ}}Y7ʌSJ>ʵ^onBDk먈Cr}HSrE ж[x ! 4B0#H۶. /ٹnA;'nGh;nh-5<:ɬ%<i1l-mBafM*hD"X2`/GhX4VK^Ҷ-!Dvβ˅XD!'bbb(i}}{"=h`w\c0v a0M{1=M=@n>|1 Vص~7wC:3sqk7\덷f- k1icm(L`>CnNqr>f%FuNaX >o79%\w@=uwjq^W_)^)3%7?|u[#C;9ur~zf"Nმy-qβ:q+1.1:ݷn@EmAna['6:v~#nM !O9kWMEvl`F(F 0C#lն 1nb$5?#C+py,jt'L1%&w? 5xU0..lBȯ yaP$V1 E Ӵm:gk>KqY&\rB'^ hٞDUvB dDq 󩍺7}l ^. c^fpǛT'h5:K0d& Ō,cyGڜZgc""V}C}.3JJbm ")4sIkCVr,fQ &=ֺ7#Ae*%3ئٍfD%S .-ɍq, WBLQ`|(!{vCD 3K l4ü:WtFъJ[( l~~u#l+;w23ka~3 7DÝZS}ތN0GԻKȴe ǛGOn,o:Gq;ϭ]^g&L==3N?A۶*ub':tBMT4%(2ow;8It:Ip3lAv,6Cmi=(x(a1U8/ƵtyV^(,%ެ1H1;0VCcO= x֠CRc<MT,\%c :r$8FbLf пP] B6si`y}9Oc !DiLulncŇj6~)q69JT1nX,Pa4܂q(8 QǨn&"rB'Nd\9]p! 1jgi!r2.EeIw Kܼrd[ H >ʄ2c3Xc9]sdoA /zD݄Q4bpx7GM열YPX65M-D|l?h7~;@: Bnr4b1h.( 1u+CgᩎͶ%} Tabl^>*fX!Dwg[fΙ5f#"tu+V]wZ$2 \ > 3bkXg>N3CȋRщ99tQMsM/@83gޞi-/-qS۩ohK"22TYqM5uNcЫXG&\ I@SIsdp_!hP'ks Kw:Zcrj~T0L{ct.8c5up[+8m+6kժDG`/IrȄX?a R,:M9{]Xa9|(&F*m j  6a+$n! i!qDRnTPC,!`!A@~BtI%$ Ӱo¹{4*Q9:LJJZl=vct>Ҹc ]Q IDATEIrAs\8 fHɊ0T$ewX76֥2COJD4*\ۊujr].J\8szX7T1¸VN|7m]w;b= [`r֢關t-)CaFz¥$:587L6t\iw8K@.9 T a},3 '.{;IIQJ㱖/#M q:@ᦞzd+٪Y֚GBG8؈;BKԈ|YXBf&W:6,1mD1(}`&D hL)Uc܋14F uw~s[D"}߳yQ,= iF]׍#2iۆ[%cS|8m繇kM1;,fh*Ĩ xN.KnM7@0ULԝ#zzipm̰Tԯ 2;xݏmf(Zl\aG+_"mǬ&蒓'oN0w(;c>;5%? 1rVU=  D#h:kgbb#fV 1fhpHyV7i\x&wN4T"*X0ݪ: Ƣal3UlFB dx0PڀZ%s 3g _&q6clS,yyi292.zYN܌6|^%HLH@f2LSB&mم66>Ǭ#i]v1W%)jij9ugyMsg\ VUUUUUUUUUUUUUU=+|`h 3K*hDH34 0jAaAcBUچu-N'#vX=Q3v#m8~-l?-DM=cbN|u.{"02~Y,w$FI35%5st@wG;wc-q|a4*E B0\)T̿#"B ɀC0q"()"UJ"f$C\fNQ%$ɌGF 1 eM @plqd~N )z58 QiYũpozX@2p'7 J^:ZƔ.+0& -sMbqNcB)zA#! QxXfi"B1l"ܥ8,.us. _xn3ɨ$ֲpsz o-hW{vB0b2!u}m̀r3G`Q~uvIC4),[[gu4-KP8AdB$G,.t,NZh)j܌9HAAƍ ApnF `ʘxLYq.?8L`a{4MCu*Ǵ h&% f%4|aIqs@gd"Qq pOUolC db׸~qCJ1q\)*18nx1V*Cu|HZh!$SMzm2L'޼B :kcrz4 !o0Z%f,C I$I? 0G#9QBX2R3\7k`h~}(}}|}>yy̹O'qqG'wUCU?ͨ[.B!6-6igԼHj7Qlqc~NWv##O߯fsaxd-G>Gv%3MK{K5r$!ti_}bQ#3mmc)(Fl\~}G! %FCP* BZ'U*XZMӬJmAe2ӰGҨt~:6fLZGRz#B虵-,V18B4rk}:'\viaXs:!jZ`&CX7`I4R<`0éSpzZ58umM@-kcPED !ީeښ\P9@J]YX;R'u)JA'qj[ _:Nڟow=o~7{̷4 :>>şxogLWUU}uW}U݄#2 i`$',{BZ 4)شVf1sTDL"^q( T4gt hq,tǏUw4&}NF!"35s͓#AATA TY`m'F43qk3"CɐҤf3V@`QDuc &6q'68kiOd^fI b1XYKxv]Ě fM)辔2q.A;.m~04qS_9xFic Sivܢv+]7y,t\rqnO+Θ?@Ԓ8 ]޼NpBj-sǡmx|8"moɓ, 4碝D%Cс85,х9PRfo 6- >p ~kq5!<_ʷ_k>s?[/:{wvv?}x{[ .=\z7ߧo?uwwoo`\o>yYZ7-a!]Ywt+i7EMu.Aý27(_x:? ?>0Go~7Yyռozt݊<#/yɽٟy./ˇ;&!뿞|>G>kE0UwނDm.pdaOm}i[-iR73V|0u݂Ȋu:ֶXb ѡ7ֺ D+ؘF#xKiK x{=Fn/x!xء"q@{%ń84k-}Ѵ-67 '8D376Ϯt_#شWDyO?srS𖿰-s-c[ț a@.9s7c.AL ItpļF 1Y(bID4$3}֡$\s67L!`jr5kfh1.+s {S[33TkYq 4n'> MN'x*~s󎜇G~#y[^O~O7)s~/~^ρ#{ι\v/rM_|l}{Oy Oo;pw^1-ٟW{|g|w֍ߚ?.OB\@#`[%7KfI2 :0siÂ("NbcZMX¹^#s 3ٌah1CL$>i [!H!v[c MNj̭=lKhcv`X] s;=F;8K{OKݭ,Wwfe{ƈ! >1b^_2v{ewA>tށ  :QԠ8bP{g-A"0^Aq ѥpg\Ìzpx @N?ꜽ{>}J]{s*(6e~u9Hi>16ۑ ,R)|E=MV2_ .-ͬ[8kSS'NraHVF(s|^J~UC7x5;jѣo_X,8p?#/.{Pڵ{~Vi/{?q ǹxۮO=>?p%ۿ+潿Nݷ_űcǸ_?sB{G||# `OriQUUUUUUUUUUU_Bu%,.ZDd@5h"PXoQR-:h,ȆFk,GA0f_l6Fk:h9!tPB 1 Bg1GuW+ߌ1XMj CŬvjvAyf5"!Zr+BiĀ-GAcZa6-fD9O# n1`>Ł,Gݎ@CqF#U-i- T&&e$J,WIS6#TKqhg+&ƈ{t4Rc̦HnlQ㋵+=Љj 1,Ѯ@*9 3-Sz@R ## d>(e2 [(cYd7FcTɽ0|REaB,NT N]^cO\,L 2O K󍽂M#~_I_qg~5=<~spn?Foi]O~ǽK5X/Ot1~e+_+ 08{_ɗ~Mo:c_㎺\UUUUUUUUUHB9&\nVZ kvN'Wu4mCts.z`/JinaT4  4rZi )sF#IXBxEZkM̨,J)y#)\`F=qV',!cDDK|rD1*=8LLf Jm 04v2qΡ{5'h(1H7MipOBN:A*󞾷yqe ćN%F11F KOqԥXO)%`Q%.DhQG8J̗ ( D7;dCexX3 H L~Ȥ7 X&Oc7I"w`+I sOj8 InmX+n S8X !S*S(yc xWE~jGux;^y=Ygpe}:Os w}.z!{˞{3,O/2?W{n9~RJ.}|۷;\x!wq7/c)4 W^sGT+>_?CUUUUUUUUUU#G:Jwwc =J uу4d:B !"ć4!٠c T%S["dZ%DKpғTUSuޣI ٤%үGӚEV-Q=|7?c[Hic JC@*9QiOF4{f7 zʜMZS\w'_qi#9!1RZć%9 Zk!FfI05 >x_CQ)sJL&4>v\JibHӰ"宽t[K$1/:uӞZIqÕqշĘcyB>6]\Rz*\qڥ@Hȱڸp}|ᓟÜz֩y~t>v8y:^<7ͨ?ǁsa6ן˷rc7|BDܟv_ͱ˷wpE/7̥^:{^{ W^y%}d>sҗ P=^v״8kU".ZVdjv$"G1ѬEsEh{2f'mh0F7 i >?&;0bJ#iصDTQ y~xMw|Ǖ_ͳ> 1r&.Wқj6n im!,3),%134kݐtY(Zl#ΐqAԌәg{l{c?ӚlbZ#C$ڔ, v܅aK)LD8'Wىa0!1t $)"c7l#t;\_:BD1ZbSq:70B2 0Ġǥ0¦yh)dM>}Kr : [}m 3?O_ϞO3/87ɛ`~Lk8s7],n /{^bk^ ?Qtݒn</q{Ws.x;zY[[СC|>+>ѣ\{5 ~ok_y(Nyo: r)%પY-PR@PXgݵ6ѳnβ42( 1, C-]wЂvNT8D T A ѺEHkRJRi=B!>y&㯉08SPGJ6R!)@EIt[K !k NI.MpaŠ4vS8LaG9eT~qv0 ET!<.-fmK  rlڂ'FIEʆuC<HwVouU'F7 U$P4RBaXj(kI0+@_;V#sDauk kO}xxLJF<2 GBD4\蓹o#x?q`&:Fw)⎏`ʴ1 #G.~uQG?`T't?{=ǎEk;}x泞|s//|!ַbIOz^/7կ+_u:xOugy&Ui6+xOz1kr)FUUUUUUUUUUU}#9*31xoAh))F,48PNPmZFI/4t\LIbp#B({'&}@q+O+\!Jɑ ^)Rx"GL"h|iXg#m66B% }*KKeO$ZLc.1!+eZmĹO{R'ge&XJ%cfX{Ddyg]bK2'G㠫x4w'.GCc^H+_(ICqIHs (kXAŊM hn.=M(lnNq8nbQrbA)=Zo~Jpq VCz7W%`DxVLIrKdʋuz_ ;E(w_o Ժ9/{O{w`|>_>?R^F[z =Q'_rGBZ,%gẎc" nhQB lAx5Udh;4 .~3Ivx[}Bp+ # ƱWןzPJ5ݔR!Bm"׺A0ǘfpD`clw>ߜ0bup z<6!<1̞;P c   y]0(Y())+^o'rŷ<׾:\X 09qXr{o3Tl-Q[VƼ`c qf5rJԉ8=P`-~ݻooG0kn[[KNZ[ټgmt*^U۲{?1tw D!oJ!X6`[p2Uu%e% } BhhN )a ov(D `A zB$uaQz6p#5&l9C*˄7m\KM7JhJ¤$h-"= T{xك'N (20vlydf4!%1\È9f4 ; )<"v`4z6 V,Rk특iTzJL_5&H|yOŰV;sJ:Цih?(ecjcb''ḒXb5WV}f=B FX1ԡ#y]&ݳ0\sz#rђ50J)%λܑ8.Z\~1BZN׏Lcoa]OO)x9\K{+~Veo]u zzDA!̡_"TTszhLCpA BF'G0f= 812HDC{QjY#:>lhmX,6ܺzV%[ɀ!GuLL}b&$$hXRb]6)rl݂;(>xf OA]5Hq⾅HCB9IfAX#Df.aѴRr;ȽNU1 }osn%UZ@tw0hT[qM$|W\IFT.Aqz!?J0}"MK!pmLv)J]DZ!Nc̀du酼=ӡ1nwwY*!LfW\%;vF7xqr,vtr/S?a 2^{ZtS/Rj(<ڬ1t8gGEsmZ1x|#v(զ1fL2()MgHit);|tOgm4iPaΑ#_"F'ʺ|Vs8H%(c58o2l?8V o.MJ1 $ko`SrdʌepHZX Ӛ5XQI mO%!#ާ`;l!w6A1z`A,[rM 4H2GI9pVF2yY!uxQ%%0$d߷V ">tZ·b$sǑJ#Hi++*o1SJuva?OJ۫!뽝80+ t+}nlO39"A'.F&.r#ڬ&T-sz| A% ~2R ЬO`YQb7ܺƬa>X\(ߦۃ.Sdʕl1W%.ڙ)R bI>Tsڴ,̮c¥*.4+H#K'H!:  FdnnnJQ|ӛ1mZǑJO|<2[[ʋc頛B6S80AY^ a&Z@N?y S7rLIi9"^ _ Nï,^]5؛G% f@́{ 5C'eEXIE 8p~b7-2+D&Pbqܺ~zTG@ ;HJ l F&6nqOݬ#ڶv [hedtk~:%FJ}v7Bt 1ۦ1#N>b&Y!=EI>`ETu N%dj)Bui<#x$:w&R8o 5JsBam2ե>(F+)NRmzoLٔ7 nRJCr4A a-ى(y#%F drs2Xt-BOa8'\_uxyyb"JWR|1h  (%@GΓS3C8JqI#ME7*/`Oeم7.[C#aiXnMAunz=BY] L#,,B5܏rBV=B=ٹ ]UUUUUUUUUUUUUU(ƈb0LɠELh)ͨFh"\u(9w PXn@!hT 2v8Q lN>O"Ď-ѢrUDlvwGA sj/$DOC9:#RĥA(ކ5 VD +1"?4iA9TbxQڜOVhz؎heJf&#uقj%,0&e!Ө%Y 5#IF6Hq]'&͵\v87 N],E`& @U!ibɓO D`wn̰*CC]r2jYRbq ђ0}z BIaGIk;3)2M;pI@_r0s !U\ ,cUUUUUUUUUUUUUU~I,"9IC>`ypt_@h:VO-Q]]xoB1k7-Hz1hie4:d70wtcZl f<.hYMcn | h*}LN+BD˦9Y7/ 19nҨZFZC1fzrq;8p~ecZ }ֹ87@AM,M)јU:^O܁ٕGhW6F6d DVKNP72sqe7-ޖVNr񥔬ښcY|![zCMV!81r;9LJ'.Z]1#̥ۯ܏1awqzF@VxF IDATnD_U!҅WoBUUUUUUUUUUU& qȝ4k  >bX;JBY#ʒof32x!.|w:ARG w/4Y#-P.^IH.s wZ'W琜V)Q9VK|<صZfZ A+]J]ǡ# aֈP8"- Dtxk؇s\B : 7 awgXk3;o6 *ϋ1d"s y3дlDCAiDu+cÛ)F$c_> 7Jݸ"EpmX~#B8R8͘Liae ڞWx[I #S r[^)By%W'r_ ,O+jXPN W) !U7+{UU?ns&TUUUUUUUUUUp3-NJ|JH )(Zc:.Z#Xhb D)Ӱ+CG" d[;bhQ9 M"@*w%ϵhRloqZSADFp.02, &򬵧8MGTzAD}h@ڴ :o݇V1uï0@``Ȧ|ʤɭITqxbfHKK qseKC00`A&2pa#ESK/-v҉\V Jg-_W x: Vrw_.L xΏ!3 Fbox Ϳmw)5%+jr^:)%u uI\ ]9r'\G:`,qb8cpVBU E$ !4C3@ i8Z7DiאD|n4JMåJ'gZ ODkBa\5:+c39!1D$1 Tk-DhRy`5@ @k<~(9_vBz@Zns}A f*(3GcE ny/[ m9O%2A6/јEÇHR4HNކ(E*!KjR`cڻq{949&ldmYΥec y8pWJł勅:HJ,j-sO1 ֤iWi'kӈ@3 t1wR9'E9αP#4Q7A[b&0?!={5=; ؔith~&G8Z2'Z#Çsw\.r1vڍ1li޽{1&B ~KyYs;rKBM1u̮S8y7=cֶ{PReCV"TJtF{GEw@^H~j6GuLS3#:Xnb''dzG Xpu]XO[F!nlEd]' BXM =l TKJ!K|  cdu Ņmh: H4 J! ,GIC;+!G+MȌ.S4BR-'q.ݬ2|;Ww` j{P>~VN8 < f919EQloY.0i̢ߦ؃ 4h GRsT|Psx1MrEtpؾm $6$8&N<)%Zk35֨YZ%fH <}NQJL#Jj { #}oi8Jhe%(yp-BCGt[Hc 1ĐBp?L_x0ɛFUt ) ೳ3ҾBKoc1*)qaBKpBIqTÍ*Ysv<ϴ_Cf&r]8|_FvL^ܗߘ!D1Uu8"wDc%T9f <3`QJ2+f1MV(q1+&e. Hb8ł|3s]ԎkQ:.84/صLZ΢_9 fT)a)#>ZSHG܁h<A[dwHNz"Zp=i -ߢYۃ!u*|@vHZ t`X!f[%A~6Rk]6wMt ;->+-b%R%V#Ea9` $"Հwгt Wo-*DC4M3, 'ZWD.yl!;&9K6;(>@?\ذBK14(gVW㲃CO7L12H㇏:gc`8=rXqjGh+1Gx"^2 c>;2-/Q%DDJ3'0q=!w? +*Oⓟ /'\:kqzm\G޽{w}[9m)=ia7#&2Q~D{KTX0۱Wq, n|"e)%aCX^l}~ם'غI#& Lky&hv~u>_Zdяz~:v\xŜ{̗wgƁΨ7a1\p~q8~ʇ "1h[G8t&* yA7Hibbx=| F5 "zr6 #$LZ _ Z ->JTtQA0Z!IP+KƟ~O`[x\ea8O$%Z+m݅rgyA9nB1Tdd:,HVΧQW~/A73YwFMLyrNFd,0Ի_:'@5N'1"Epo#!d;W\w:礓+?A@@ 6(dPCtlt=[G{J'I1f}v)LB\CVr=[jRzMK~i|d2l/6q4 ޢEOp=FH-enbֶlXBKNigtr)yM}4\5Gk=A$D@4XPκK ;r$84-:mX[cr[aN/s*֔Hb!w@Nή8!V\f66;EN;Fկ y@Pe18ޤ/7_U=sV(1\E`И7Q17*\hhB j\ШE\#Y" d9u~TwOa9sy3S]ULKz+TEq2q@,Nu}tl6MCqcfwM;ƞHЅ1LXNc*0ƓO+wotJ12Z"&-S| ͑,/sd[{zC=7xC= \*WUr\*?u|++BiF=%bхdhtt|<R)0I,^-JjK3Ȭ5@g#tD;c̉"P=3x4W1>M~,E'eRlH&S, ,hn KFH͓)]{KIc?ZdVj1^B AHن1.] FYrBp,2xAD2v2g)=1 .bչ1<+NIEqI?b]l O&Iu)[D"QRK-${M5si*"f9`0,9l&>ؐ0߂TF ڶbL,:lCz *2h* xXT8Gh#aC \a%-YÄ9B*-Яt\|@Z`y9e_ /F78l"@ "$Jt1C Ʒ$A> =039$5$hiE<_C^k O)!؀5k>fy=FS[L 5Uց̠L5H%:7ڄ6yο &a"WV9B͝qAd&¹v'a@Wt^y< #RũA>HF)%sIZ)RH L\.nZ69׮/Ӭ1"6`h1Ϝ7WɊW$^< FaKˇ T5 ciZ[@g]u"Yu{1-4?АRIt(R`!E,<)UQ$hQ$sX"*kҋ@?7rO)LQE ʘ>I)B-xWba466r}<wy'k֬og…9j{ҤI̛7_MV}ϥB}Ësd2uJll*=8}\:ܽ pɷ.2Uie^J~?(uWmAީ{|9A VFJRg͢,x.@"Bj 6_y(kj|_`L1,AЌP>^EA<*֎i($԰a`f,:$4 z=|ƦOXn 떲q -YlYTvQ W25UGpa+lPx,0F*~$ ^c>&t^)D?Y[|#Eܲc #^xy>h.r3\v0{lNرcݻ7'x"+V{'j.Z=_?wz'kly^E`cc#W_}5_que?SUUŋ/0^pmqo}viW_b[u{{W%lgmYZ?|jkk۩;`ܸq<[gsu/]^z>|3vmy}<_fϞMCCuu 0!(I9뚧x1R`"Re?w_[{QD*аk-&6@<~E\3RS+>YA8iմ47bMG2Zh`P m ȇyܭuuB2Jr-L]&"2(_СVQ`+BkJFr,UX$t}kbi6%ϻy.ϋ%mRՠu-ڠDd5myaz#Lүtf?3͂p$&IIF [`@,JMxJYwi/^DntomSCI8Ѐ(&"-JzBjr%v9(Ugd"uOA ėx;8Tr0'tϨH'XX, `[؆a9spcx$f⨣:{}nW{ҥ6zA6ZVb]v)#?uֱnݺwG0e^~e޽;ݻo;Ջm Y|73D Wzvx_ݕ/̻kYj9A? -Akl}I:wBZ˛aްstR:_@im:FԭXG*0Fdb3n! xm XU4vNX~B~R!j~xye[\.av}g\tE >C9qƱhѢk׮+`ȑz衜~_)˾꫼\r%|…q 6o~K1z*9f>l;0 gQ_6駟-[opASOqg3tPF̙32e #Gd\veITg_|S2l0ϟOCC_~9#FC3whO='tCg? }ټz{cnyCOnt|I.]ʌ3{ `ԩWG;7oO>$wy'<+V࣏>b^(btfʵ-jܹL<n'2yd֭[G]]C aȐ!ձn:&Oĉ0nj,p$]9woŹOҪ k虇6PeG`7r2NkLINZhk^!A$ V0*`,6ߌ sTTU!~Gz^J1|XkTT!J e|Ky6߯A(ƕY涵:_`S  hksA ?RTFR:26!P{r0Xk<6lz^:nzmX)AEƧ&ۇl2;SWՇ5}Ԃmń&&SE*BRr̢TBT T Ugd{d2AT0HBm +%F@h !T9,Ř^*Fk4\^:QXGƄ)l6zFYL}1hfPBET6Y .!`.JʉAxll k#:PD*& 68b uUuX 2s'1*M$&[|Drd!D,Fx?>?b9d!{}Iǣ>B}}=~; ?f~zŬ؂$H-??w)H-Awg:_1cNi>~͛QggÇ/g9\<ߒo඗G]?̓O>I]]_|qr袋Xlw_5jsF/:Zv\}\uUtkNm /dw^{eʔ)455%twܑ~^z}ه /)/k+NSNW^|ɱpws /ЧO.RfΜɟgn6yMlwuGuFb|+_/gݺug}VFJz- ~ʌ3Xf{3TUU1vXN:$>裢_|\.iYg^{œO>ISSS (f͚Ő!C}}p t֍qgfРAuYJ)5kÆ 3ϤO?SN9ѣG`xYZh'NdĉEGg/^y-ZD[[l0l0ƌ,3f ƀfh"^ym0qZ*UY'x}\{k SW';F6.4k8cَhxX8iwx bčSx1` Jtfztߕv ) /bm0|E ^SǾ__B%cP/AäƮ,1hx A!(@5׵ӎu'IhvB63,n69f1\_lxG9oܹq3~]czw c0aBzɒ%{q%ͶݽsƌLRI^{榈a@O.(bZR}#IѶ+Vlww1ݻ7+Vl󋿜՛6_=~Xոx^\pۗvډ믿~!w?1zO?]veC)^wu1#FlЗ>%Kp9P[[;yWt}먫N:իW|Nesm5"gNHyȑ#w}޽;Gu~)]t=zx̼,^W^yK/vډL&w]cx≢e׭[nݺdիFӦc堃SO=K/GaFee%r J)䦛n3w^2Wlgnjzϧ{ۗ;/h^vK9KK@[󨯯keܸqڱ(bԩ3X=c1bUUUsskذas1,^[nL&E%R1+Zt)kR5kְ|rNMM 1x`jkk;{Я_?c8p`Uz-BrCO"eF;Ƥ ""5_Ok @2YyOJp,:QpBTJ D)r(d;(D I$ 0L$C>O5d5JI$-`Jɢ@l1 X! MVvqr]] S@Hjr2TJtuQ0!H~ڝnј)?>z3"IV,vl;a8p͊MOJ#D2l㢹; &7Sy+WdŊ <9spBOv݊R6VW\q&L`ɒ% 0.$ vpRnf͚ESS#5p]׾ҥ,^,mY1oc,M-᧯Vas2R>oZgagf IDATH>C. Aiʕ+7nwMUU ,vRJ[Gk!~i lg٠R5^ϴi6ʍT_r%;^{7xcroR=`VZ;^jڴil֙,eRNnߝ':;wfwm&N'|#dN;4>^|E<"tssRJio߾ 2?+%|>_9햴Yr%G}pG7Z6aguYL׏SO=5quv[fQשZm[fY{eΝx8QCsr_ۋZͦuUi!vځj᷇W].c{ۅd!<АyWc mkh^&Ll  Ғ sH11g4f+]H)#J2 ɐ'hkETdErd*+!t+&\3ي, BL8ʼn:e ,BXQF+!MEpi4FK,hH ȲyJ*xN&ea#9ZVc _@j}%MmBD!#p|>ԟ?{TXn!8V89c*"Y*1Œ~: 9cM?;J.U`Ƭ2zQ_ ,chhhDG oub#ٲJ&KY7=܄WpI("b- Pqs&"[]^%~9":evIr RMZz*mKsi!<#<(YYY߿?/뮣Kε|ХIp'pk={v˿2>kZZr{t#$%m%Z7r^iIŋou x7^{73<$U%i|@[[sUUU.⤺ӧ3uTou>ՙyM/?o޼Dڃ\+WҳgOos7zh}J =J?M˹# _`&{GVgsK~cճgdzK--݇^{5&O_QҠA׾ԩSyg8;կ͵?c Fڵk@̹:~ '9+Wkٲev \W 5OLR*֯/XCHz葼߰}7VLv!y jkKyYmݸ 7v-̊ >0`6A.~~{TWWr‘#ywqWv"HD[@ݎ\Ÿ)#\;rbqL_n^Q`|iCOUT&k*!)6Ҍp^QJꩍ1cPcL*Be+f-X`CBuMM"ޔcs^k[)lljk~|8o wl&%}*++g}ӧv}K,[oMΟ\Ϙ10 y饗_ћŎRJ[L#G2yd-[VQՙy07nF>c0d|펏8S9s&Af"ЧEf͚O3g0'`ѢEwqw:|Sf曹kXh-k֬SNjkܒe;ӭ[7&MDss3+W}ѼlwtT___9aHN>d|A-Z1Sr:jРAh?~<~!K.;>;=c/-\=x`vah{\qvi[tUZt́V}e477!.!cܹr9֯_o]Mz^dƌ3[n 07xuaaٲeEْnv=uڡd+׻-,W!Z싽u]8A>J5?m} '<Ăg qjPkKX^pp'a?p 1]_"^hB),iP*kvBeY(>٘%F Ak;a@"<L'JA. BXFLBl-a񔏶a5:lE|<#ta.9.`<OHu h7[[ѹFr-k S"۝^t֛P BwQ0 5m=x~7V쌒uHY+*Ch,ʫ$NuN^%@R}|.WȟrU|߅H|_)E>OY I1W]UDuѼ11$IPL)FZ EX#0F3jKb/>4rkL!1u!:%, ؛03) .0Ic/m+qo,uvFzaS;jQOҋ,٬Ĵ7wZhˣ7~#d'cFs?5\ H1C;N: _Ϟ=Y/7_% ʁ?[%0,>o/}?0sL1ŋS5sf2vy`UVV2j(?2v1k{tuf⦛nb„ wq\r%ɍ9W_M>׿5_~9?ON;0N8~0rȒ+Մ 83hmmo߾uY 4hѣGrJ.rV\Iuu5C嗿ew]n&^{7̬Yy睹ꪫMՎ;ȤI8q"R2h nveԱo*e>dR[o &o|wߝ/^{-h^f;:dzWYv-wuwuWAwߝ}s7rqu j&Mo~=\r dW}n |PĆqWtR9䐒uGk"`wOLmGq sݻw#`ٲeZYF/}Guu5z(:(^u}Q [n}هo,Y.Um\yEESLIC #( vZl]vم^;o%0!i}~^ ݧ?|NŶe$҅h - %/o+0Ǝ_\}5[0 v3 Dp c2V,Fhx^-y0V:!)ECBOՁd&ZǬ 6!d HCml5Ztd("V0@(QVH6M(兴 VflJ+Pn.1 "0&@) "+AeFyXpx+Jy.# ujeF < yRxJ9f OX6춉CX J+Zp2)ϹBlxub^ETR"=hGcL'bk!$ါ“XW,q}2#ETY3?NRrb@@L{$>{ZHBVBZrXl c0!$M3;< 566rL^832xpSfϙ=Ƃ o47jf~_%&Lآy<3u*̥3fܴt<Ѓn9YQY4n60>tٳg3uT{o +V`̝;QF,cxy]#n刽Ͽrp b|Zː!C?FO5_mV\km’8ꨣxw}m\?{w_\*We[KS\pWdȠ$m:*eʵ]>%>\Ro~[s#b: 1ȃNaa|$V $4?Cb3%A>XRU L.ltᡃflB!,: (}$4eBBu}_GCUdJGNu{YС,Mij[w#46bJ'ؑR)A˂ 1 )&}xcUTTNf80p!C25|s8 XaMס Zm a~6()#-)v_R }0zPE,IE:H^+f~<}X#@(y&X܏B"(4[ueFJ"b?,]2:B휅8I$11INͽ^ S#jkkYxnrٞ={rl}zŧ+Vb&$~b={8p8@^xyޝnԷ_?<@}. IL 2ڋӧO$O5{^{\){}A}F;׳h{,Y/9Rv℡k+tx[ru){)%7t}-)M_OZ+䍳S:-vU9[@ 6܉N:PPHln;mm=B@dj$ B/"0aCDc)4Cbme($ S#ThY, Okf0X7J;Ff*@kBP!u hSڒ2 M'4H$>uQvC$|WJ?!%1ag28$% '$9>wD1ԞahJRgc%IaMёW $G(Ev HZ`"bA3,.ņ)ui!0 g-Z6K !1"_9dd0)AhG6Z&T┲4J$D B UQ79 Ժt;٩SyY;{䘑pVz9p 3fE޽KfVWWol,}%'Τw X͘OdL'ܷuUVVrG&0[[;`ܑ/2~xeo~:?xˊ+m^BPI[^N!:._ps50mbpm /SV3 /[FX\n@pSS$±)%"DE36Je|4V"<=ã [A2ǚFTD*& !ǡ(a!{zx@@DHZhn kT j"oD)сX,LjvkZJ\cPUѝx ~@Mj@V`L6h~TUfH,:SN\0/]5xv;}z[ey>o3CjCQ)Q")i-JmH)8N _y_;/AI8| bJbG$6CҔ(EJ$5ùtwUWZ÷T3LRg뜳/j~_O lp@.`> =&*^QhPQ##0q/Is9]{lXGDnI'J]}~\BrXyŌ3D^cЭU`f3e.1e"!33B?~|Mʉ(`9QH6Q҄Yp {WVaaS+C (޸mĵ6ɮ i 6`9 >!ێ\f$eTB)ce-7zN1)-/v=qX6 i1[wR15gQ:ϽƜ[_;PJb;ukǣG75֗׮`v7װ,t{n9t}/s|UWW׼|{gyD!Fif~qހ:N3otwf@ƒW8L_C=TT;qw4)8p,0G?YF@S>%'FQWo e>-D؄^ml@ISF-=°%<_xz4=J& gۄxF>tõcz]?|޽{_}!/o^^ >7^~w~QހK_[UJ!eW aO*dH6, eW\m=0RB갔}VU 1HNc^ Lha=&pYMrdNG #bϱc"00_^;PH91GLHHnD"&  A+X`΂ha:AM 솯#kRi&39_ryi>@)VlL-a$"wn ;%5f,b@hBJ/y)c$tϰיG|=c.7(DE5{8Z#vv["y}ŝn-[h7] ݲŭ^Q\wpρ\Xarq`˼vx;^=9uCЌc rAS6^7`QἸ"z(ps$Tk8>{ /MM|[v̯||3Ỿ뻻>SUR.g q _z/}oM5*ACT5?i|'@bP3*'5YeEg+FʈpL*N CDl%?&K)đ;0auʵPٍ鄊2 TG$O)s6|=$\ B.q~|g qϲ+5jVR!͉q13RNC[!q$@J B.8e7L\+L*,MuexG5Եu5v,'nf+[{R0b6#bbgeE V!Zc^r{./ۖ~=7@.:3Ӹ[aVQ:; ݝ_O󮀰SDwO~1f0z>m݌[g;6F\Jӟ4_~%yi83KO|{>y{zoB3cN_K<^: A}ox>1jѓVWQW *+iΌqv*׉x縼x9yzqOΨku"V#y(DBTJΐbGz 0=s6B&o! ~ D?2#$R4-۪ 0 e]ϧӄȰ8I OSbw>E(N_W a* G s@raK|걷A3Bh -oXC Lӑ)pSuc)lYO7@Zhm<+jۮ$DBz46hT OUq S=&Յla&\AI5Jf+~e!KP<2[mݔ ԁ6^Yg*\c[F?<ŧ?>я۞mϽn8KDÇL% _/wMfE#~o tuuuuuuuuuu}-ξ(OoF6a +h;Z-Y*3g|ū|ΙG8C0}nN9SfwL)W$m+"9%81fwfa2WaNBmgdv|YBkqـH`Fr*MM*!T۠v9^+6w F&Jsfv43]]`KӌK"2 $L)q _:Z !b@*(1R,CE1,MX#V)\@/8MhZ+=_rT+ sf,+ޝ:2hōn$u8D6s@cMKnMH+ ,z1tynx7VX-@qsEhr{-RP =rues^6"bk r1uR{X]|Mqg^{5^~eI)qq;wcg}PvuuuuuuuuuqMFvT뿆 DǣGs-%axR!2]?DaDP0|gܠS&`N?̰bHHi C\c)$*HB>\aw=weCL솦s:0 ,F>uvRDj+ AghU2UB);PG\&1"Y¡DВxۉrbjܭ14v:p^ >b̵-1B➔GTJ Kgn8w ʉQ7` ('@$ks7CX:5i (KYyi5""q)+k^zQܡ^Atp~~" ԎDuģ٬uI11K/,HI+7 C%h$-C&mh ,0 ܿýzA{Q@FÀpGg 1HFqpCR1Fen4> ;QRIX) DL9;sH)#TR21 M%RtZP1r&[d0K Jt؁yP݃P@yt0䒉!2bbk  ơA%.V# Qyg`8'[i2S0Ƨ@|$ 'L@h4%&J 7in I),򷔯8L/k5-2 wAiBiufSr9:ܭ''TȺ+ű `|: 0s _pct (ya7q&Q=T~? lF@tKliPb٩݄벯û@Ή%) tl$YU)Vn|_t'˱y/a&nۮXכG!?f4' )gEv{Z96#t@U k0t(2qox~/6똈"d)UZ=%AlWWWWWWWWWWWWWXo}{=|$#ה;Ȩ !5a1"e>3G /~{<8( >Ra@l#MCq XDLDS0E)ie[xv 1B8Mg!՘'Ƶ`VfJXnA3Bch"N^΀rԥ1v 1DiZ!5C8_8Ը8*"c!6~;pJ@nRQtqdgF<媌):j+͖UX)[lu;ҡ*F ֮;_p}ZmG',C=:V@A'ۺFs7CsZ_A5,(aFَ_NƟpߓ:[nO\[ 1#$8":iOe^0|.53 I)bMPS2OhjĨK3HȜ!}5VGxt@Èj R.ĐkDBhVf<`(1t`3$RR14W(D)0)\cEQc#jEZ,fj]6R!35iT(eDT|f qp`J>Cts QPMT]miY7rm ՚uq mSB#1.k+ ܭ+qmϹ;L k[+7W~@m k7v)-xLdq0koh7L)uuۥeX`Rz۵Q3Vv-^,n8Y1ʍ pWWWWWWWWWWWWWCRaQe7K&iJn: x>+J(kHEsZf@ eъ80Ls@R$Kv @` !;paE (|H?朙gG嚫ëLrs3պːWU៟ٗ򖕛x_XLm l|1OsAl,J\澄zyv%6rk4J dH7j~̫3Ee[ L4ڙ֠'@,Xω'N5T*j'mAZxv݁l`6mϓsYMX?t-YuTlz/Nw` #-vF6n/1du3g~h׮7^{` J#Cf(qM `fΙld" ]pm\R7Lʉ28.!JIX1!FMV24SS<;@N2#eKh0 SJh 3*hDW"9{M\aK 1,4ҜAbqfNOspx8%Čq g12D9T))C.P+'y5}ky{2H[=|^: /в}A4E^+?]-lVz۰-p9(}1g]qU87=gc7FʈXvwnk%ru/}dfijwy.0p8l2!d ;{Tf9`wvhX:sr% 招/y8`kݲY rGM؜oѶU{íNZYޔ>6;:$VVƠCq}}$ɿxtPh1_Yvr~`W]diVCeoތtҝX"PK$Y{y [f?ˆa!l׺>;clWWWWWWWWWWWWWXS~:9#Yq4D'O4lgp:1s V|'aΗ_>kdGbiW}j\ -򜗥9g2e>`\"6q,{tt*10v@un<'D!LǣCT˘iM; eܤXJe5OU !RJomɔfF<]#ux>CR1RܥgM(fNFiA!wDݑS3bR(V/Kl'E}4.ܞ%Y--ֿfy>z#]t Zd]m'B䩧ncf@PR=tC7@:==]ZS@'T:'2 ߊrNWAj9Ձ[=J;*(A,#$bf ` r"s@Y>kdj}죭ӊ\MgEZ0tO?s?U~0|6,>i5g>F~}E~f製bq{ g?L8W taFEj Kcjϻv_Y d9C!) m[,@`ez?@DByJ\ _|/`-Æt@8=7f䜉HNb:2#!`H*H!p}dS:ZsF%B)F (pifLKj"4y.( %B5VPrJսWutYYH )\ 9%blqB/Q䢵A !"d| h81&qa>. :V3l1y!.mF\a]\z*2v9Žu抬ȶjT S4 -ϋ'Ot5ܓγW[BIJ@ȰNׅvA] .' ȓEN? 鱕?Yc6 ~nd-hɊ>ym|'7p3d/e&~ |> ?_/P׬'"\]\q}q-/~?A>y;9U)0sO9MOyVl\sJ#Ha$U0Āι>zw_!3HQo#秸*t0*SBÎlհT DaMfZew@F@5BȰy[9UY[[֥ͥ{HSdEAۼ;ye0c$TDdKTjd cdI]<jt7+ S*93 1) M$:H:Pŋ f)7n8Fp,5l v˭w+j'vB 'op6NR]7`#h]AQ /\f,&Q-DՍiǤĥdv^z_F7َo^ϻs_Yk_N)'ǰ-ܺDl !/,esq-,}X "Ͻ-'? M{zE*͉&̏g 5׎~5{q5c~,?Oq'1鮮7rs `嘧s+H8FhE9't/ys Lttvp/#<'T$;#s j)'@! ˁk~XO1if24 XkZ2D;)VH@Хn2wN KFc@-̔By1i 9_ +yu\H.qwVaŀQ%*dS%4.Lq&S(Ctr^Ǡk|r^bH!͏ru_p;TDue7m>·V% (& ăDb[al'T  6h\le͛I+vY%ki]{  9kkn9m`nvq[ ^|"'3)xl_\O]UVH['zŮg+/˽eȣu nϚ'X1/Tu#=j?Q\zkA)suqa}.o}[y٧@>fW~~!^ 9'@ɛ>ʠHn6/ 뇿C7zn= 9qu83'C[] "j!D 9;G**J:;;؇+408b O. sJƑtE)ubJ3؄8Tۍgr&;=Z!O޿w/nqt'%Nj}SJTeV0`Jݥ UoC&5݈xRJub:B\-)]9_*0Qr"DġeG6#N񖒌@G!Ra7p9_W.~ ,3ī~mb15=w1[:nV8ȭҘHsom6Yc= k޻swͳ~= d$7'9L &Fm)KgnϩAU\zrvQyu . 8O|߇?(7v...}6}xg:yϙ^~㇏G>/|Ν;'H %_Movw`9~?O/=Fl=kq|| FLՉ4+n ضװ5נӮf`RPtegNvӌb C&eWN 'fNZD[pۙ ܭr܊1x{plפ,e1.K[h^udk]v 98??Ɵ֏[l!ruq?G~?{OB "$? 9'i=;Tzd$Osn!!zdu*03ȗF%j$ei1 !"q`yǁ r5WN9+b5H.w ,yQ $w |DHn1^'`= H)?a׸szR ]qAל4'bL爻U^K9q8=1!"󌆀Y!hݯPk{%%u8*ܾse3#ODVΝneq 0t=v:ܶ+rmo!͎A=֏n`Uo=,=.ԨMd`T[pkH>Č1+2KܰZ @6I,*1LL}yᜊl͹]tIR1TI]]l55yUډ\{}j Π1xK*zQJef*^ q,a5gaB.H8yɜ7^Xnh!E~[ 6[k ?qړپ}{ο{AŽ?|Le:uԩSN:u鿍d9גK▛H]J)ʲP%:$MCs$XJi*] Ĩol1B dt!,=2R BXu,J UyG)BPR>ăka8yP(U1^u h&r1c7UXR @l“eQW|tI\_օ%MeT/ş7 IDATˍE5\M}40nQ-{sb֌C'8BFw "[\wG ^K|fdy0??|!kLJڿo~5PR!wtb^ל3 k;6sG.i`;uԩSN:uԩS_g9)(JO"ucqQfJ*ʢT&'6;-t7)pEf7`ߥ4W 3:!6<9-iA( 6zV,+C)LXW VRUmLWJ<;Z]ZBAY &i0OwR m~hΣs s NFR5,ϳe#c"(TeGbv+egm¡,=XINyL@ 2>syO|J4 Fs Ɖ\KHrꌑaO1d|8א W+Bŵ:s(Vbf:7\Lg"AC"SozuZ+Ӆn,l~bMHc?|307t*z܎^?sI)ytãwe셹tOs;C)ʠjA;{1'8淎aTU24?]~?Kq=ZKy3yرcUU1999#9cx\|~r7sm裏2==s~{I'IJeZz|_dռ~wԩSN:uԩϑ჻NH1E`(~7֢8B,Đgy֬y#2 ܁e&#{X;A1MuE1$#+Dw_f)s)S(@eX#$H-!=d5ZF$.5f_aE1/qaqnXպY9iq,y\t J]p^E,0!Q6RH TKUEGՒ͸Rg.γS>X_ق(LD=B)]B>ò.+^Tx'2XHYI+ ]& 3O ܅ͅzyCEpߒ=7׽uw%܎{)Gg&7\:n_.o7<7Y.B%K0>> ??W^y%y__>\plڴ +Wzjl߾zz~moC~cwԩSN:uԩnJ"p=B1lĠV.)c+JyrV\-?dxO)G){ XG傌ā ZmXWGT"8a#— Ax;/[J-L' RT8 ZRzH1aqe2JlLp&oeYw - Zk 4E_6I q":#qErk0[Dsw0fC2'R=B7-e .PT3El;.fԴ Ouuc!q]a:s |B72KDFr5[wdsЌM :ECric]@i bLܑ1Sukvֹ =iLMSK;]wqnco-Xlэŝ;v=k|I>`Wyg326BI?_t3.>b Ï;<8[x{׿>qXn-=gnsyeFGG->h&&&s}Qjn֭[~~?9c[R\r 6mbwww}[oݺ /|/}K ~?_Ǥ.ݩSN:uԩSN?_Z B p(U6\p".X<# {HQ`G A! "U ( HS/&k^+#R/ !*l5@4胝KAӣ˜:[X%Jc3Ů"qo]u&s2P:s]h. Tz#``^ӽ?zq7;P JcJ DB ҁm1 BBJ8;EaMpT`dm΃C 5cp|I`Nfb[0MQζsi/m06l"L`QD3Ji)k؄ii%'[3vc @Qb2y5/Y(.d9L)𖷼W|fÆ z4;83w+Vo;^y7vN:uԩSN:T;Y:"NXL _U*\5 PH5XN* u+ :|nB* 3j`iq^B@1bLtWX3ĺp- HÛ*FZb'c %HCq8 l Q(CC7u'fJBOAUƺmY(BW  TROc0>Xt5*Gcbl&Fgbt?F{{lLf!LXzK`blFU)R`- ovgg.oxSwoޚ]yyPl )EJ ﶠcs]p!#rބ"Q_i5D"8lRlP Ѝ |V1o9@<HL`2jn qzb&?ּN d6g8n󀊰֛kKw~N!Uty*)|ΛyGVTwNrW⺯^Hɥ" 3w<>]1tOLQr5'[n`ڵ?r ׯ'? 7?~/ssYgqu'|5ys88蠃27x#֭nmdff,s=9ꨣ8餓(Ym{vv6_ǥK>1LLL4f.%=_}ަR)qFZ6oZ{s 'p 'h:G'pzիXn</yK2xGkX~}>_V裏Ol uԩSN:uԩӯBW3ch BT AN EJFgI8ge#a187y>؋#up{Ƙܵ @= ;z貓~9pG1M0h@S28s"'-JIʄTfdEQ2 p΢ucpxSahݧD@( ѪyW>D# eIWsqm,Z JsHS)$}LU!kpz=Vh)*? H@6[fXz?wF2#=K-^C ˑTVJ;+dG nu)%"C@rC !| \;'C3kg\j98s,Ru8ds}sMrcqz\)ZO]AéVd ^p.D!f;eesi3նǶJ)vnKzO?;L̮& ʐR[YƗs _pηf~ 3lkȭnݭ+WZxׯgEQ0 7{GIزe 7'?In6V\ '5kx'8 jyngϒ%Keɺu7+8#~||nc||p<ì[K.dCp,^|sOp{VU}뭷oKrqqc}}s-0ߩSN:uԩSNF`z>G^_kq֞gRc#JeVUV*|SP`Ta&_<>gg:j>lØ*C;R&|ŦMZ [-}y=7nnOfa1Z*?۶m+_ Zַ(sΝ|3{SN:uԩSN~Hz#˨K$ɌYX+3a eb.hRgP"r<1SyRjsC\7vR7$&a~B)uxX[!#2|Ʒ.JsPѐD#FI`@_A?z25P1^7m,'8٢ GIJ(Yଈ`" W*l/pXL{VDsVH!XbB:c>N I(;'AYI „xl5㱡" v!f[=F4K`v-i~|1l1'H`g[5+1xobkos_ƶSJrJ؎45 FC'cnl+fH|/8?sy=LmM{oQ |Ejܱ;95l۱-,wǩӌhGmoe5r==eDrwginn7 O͛73>>[`լ^x`<Vj_|{c8rǶ$ykwFN:uԩSN~.PzQQJIA5?vAFHJ U35:l/ V2*DBZk[J) f1]CBùh~9 lE#/ BbPxWhtrj5xKi3X3BIew @x*&&! 4ޖHQZyHiq~{1JFǖ*8ϔJR.#JT2`UU1D /m.<¶Xf%yIT[cхFǫY2t:p3Qj山1<]~dɒ]T.=)?2x۲e no[k͛&N>dn&Nmƍ~ω'iFe-o>ۿ}cO977ceYrG ׯo:蠃PJ155˖-SN:uԩSNYk C}0wa @}\tYc}]Q({=`gpJy2EQ7Fdmqg 5b$ׅZJ;44͹;9R SC֡uHizFi, Ѕ, &3e.OrTy&}hKa+ix)$ޗù_cŅR!9Pٙ`:EdZ@ u0.׽:KJR&" 3g}3jV‰M0͵`X]Q!tZ1T(nLminNȳQ8|nN<7澧׭ډ's7?\)r})󴷝sy.Qt/g#[w8ٲe h/_ʅ8֭a+r=eY266,SSSLԾk_Z^255ņ ذawy'\{}ٟ###e-[9 {زe sssҽ 8IO>$]t]tϼnSSS?SN:uԩSN3U 31!*EyR»!~8OW Ud΢:+|(lنL246+ -E%^ʀ1UG%GRTf%%Z@3DAc9TQ1J `1bn01!,ƝڄTCm@YAQ) QZ_`fְ*F@`. #īh" Ώ3LMo qh(u'.*$ zbk[RpUQs`փ[c O%:6Z]ixn>.h4c;h]\aWwuwkE2 RtRegNV pjnsEn0JP& 02TvEnnEŢAE+FmaɒIvAJ,Bz`XS=07=CMdc9F:S~Zμ!_w;>pLLKÁ.4S[X]?m(^}'$.%LmBz39~b$H\nOvW-S)›Em'w1p1ǰvZ~ssUWqg6w>)n|0K.oڈ<_k֬iŐJɹ٩SN:uԩSN esQB!!JFޣʅ!{ ) `xl]@Ez~!y}8 :wZlBU P,J9KQ*gEh6"UN:* +a|l%e! C@Xg΢,qvjn0`ٚ])΄aUD13hq΢BA*(!J|(Jʄppv0>B$񁇸G TV`ehJBp;T4B"!}@ ztp l8Tk^W(}qn&O1;DKN2!5g5? 5]+bTkƄeJLTKuBԐ/D]tn@gELG1{Z\W M8>fIik۷X`hF%*hu<Ἣ~SZRwγbdRIz{**&٫؋%x>mGwm;9ܳQZ!I B/_,]n̏~#\q}dxvP@Pu"R\t▢Q;› CɝK[6`nUx&bl2s>[tz)ʂϟy/ײRs1q/@JΝ; -sqtgTH5??l빻 6pWs\ owwu=pꩧ>OיmwԩSN:uԩSR9pnf0c-Ɔ7|5yIQ9yZ>^ *c gA(T9ElJ Fr ;ߘ  GHJVS9BxPoPkB"_\`@i"e8g0Ʀ[(2JeT =xxW 8r HQd^EX2 %c)cyVr΂,|SeЛӣ}:^*,&k xXRbmTa5"[9Nb}c`}liC9~^)CdʈZݍ>hA^dJ-7TnL*}${M"ᨬy3}JWY3C.?4Y:FHv$t>^^;\uZON}˩۞zYb9:?@@jRgy_cEbae/.c?;Zsi>83L699{۹+˞ys^{>_zS>O}N:uԩSN:J%8;oG,<!}4j֗bcDA , Leq,1Y^twBD_|#Qw5ßJ)T45%`#qޅ أ>kbJP( RCpHYE%Bf秘<H(gmui{eQ @隅hQ*\f< *#yI:4zMk U.o6twZeܫu 6%eCo4yߚd ]p&]sF " [)+9"%'[z<6gaMoyG K'm?ohts×BdOe:+%lpTyÝL IQ`cEٜέlT2Dj( # a hC{Mva3U[WZsj'|yk89("{an3LLNp?^T>|>W*K'Ë4xN?t9ki=/K/կ~u}h뮻[ر/}bz(شi\p?.ٱc_~97xcў{ wƍ~3:_eYqFc333\xOԩSN:uԩSR)@N9083sCQ"p8UNq/zq (‹-df@lBbb65 sR)t*/N)D( H0`lTD(԰0;S*.19H.MЎ6_ BITbd8bR*16F~un%ȳSd4䔌>'5X #CtI Pg]wȚj"C5E`}EEDv7ǹz&\Kc~]%h# 4LF_겐TK4ΛrquaErU

    dǓ;X6-M'w<ɩ?_y4ygQ};2>|!8?^/=rּ_*r _~9W\qK.133gu/x ~\kײn:/p衇{0;;w`0#SNyV=򕯰~z=\&&&DkΝ;پ}{.yk_aW/| \s5lڴ+Ve|A^Wl2.b~2>>ΑG|r:,."J~<9֯_ƃuAaRŭQ(PޡM:RF*R24Bk *qTJ#0xE37@ #^ER QN!]kb %u&2A)EQ>k-eX1ۈ| ȩ ExAn8lzuR]Q7( ,9k܎s*BƉqMh };]I] SSSl߾Q: ֬Y 'Sngx3"pqDZ^{quױa6l@Y~{{챍{g?|tM{<<v^C9N8e˖=z~m>笳`>o/|!N^uQ\{lذ^{qqqXzN:uԩSN:`%q*ZXhp )xX,7cNPԊ`xPP28#C8x\~ JHBkkP*Ee,Z VJJD,GΡet)j L"ȀHSR3y#BzE( T}@F?Sh&vZR27:k)ʒ(ڬUUEQSJf!EnMsL!<>ZjkBRo,}WapaL$U˃ U׀mWN׶bu * 4 !=Ҙl&/Q9s.6: "mӻ;g2A?DnsYRE̒ۜG/hDmc>CZrm4t a_Eùh͛fΛw 3>ΩfK( |?QLhi@meí1^GXq(Dkr ! ^~RH&M+>ȪVuI:uԩSN:uԩӯd-Lpg+R 4( Z0DK(^|Q윝ߋ=hbJX+(5]hU*'#%6J!tXRIbQqjVDyAܐ~oCd,u(- lkS3֛AЎm7s!B<_'2.t.c?kiBr39it.5[aay½B<.C#U-$p'd3[ψ2=Yz p9ϱf{kd<#bAIc@b6]siTl"ƙ]-Sn%KVryq̲.TU}9 Uz*Mٌ֠j]uD8x.-qαsS~~Q) >O~H/þyJw֡bŪXn. 5_9}9X}ǹy(,S`A}֩SN:uԩSN:*NYR/AXqUe1xGQ]8bQjL V*<,ݐAs;rW><\)V (Rc\d2" LX^hxd}'(-[g`lCp u*d Q (L^)^:s ֥)\QJl,̣rB,bp`?R@C 0*9Na!'5 ZBLWZo3*d4W<BŽ"K-DW b=Xƃ.3Y(eF,F; L\w5xs9Q筛\|>Mcә60v yx^9e+ijIBxcE7hetlwmoh<F#c7~5x[^~g[ 8WP3vi$ԩSN:uԩSN~=xT=$ WXt@5ZE((zLjT1sxJ9 JW>{4Ni g GkܧUpj1 E!VF\YBDd.#o{_a@xOpY+p;v*-Πe efQmRJɝXb6bMi5iDY`zB!:p8|އw..u?rj8 OL%ʺhLN5@^hn W m'Dnur ]/GS/4c'g: 3Hks!xLcky~͟X.0Bl@]k};zeܨܬ͑h!+t^6(ln :~-w ߟW+N"u=pr$|{yL.^SZp@Fg&Psc릻K-ZjtW+;ةSN:uԩSN[;G'@!JʑeP,A` QhM\2lPM3ܼ26Ep/,1Ɣkogӝ~B.]埿3?%G_D? 5DZZk~v5K'RI{侬=gr9vԩSN:uԩSN{Tva5CQ`FYEQ0{kٖou9紻>tq۸1.D !QL+l$RM("$@+$$j9رiv_Ωלc|_1ƜkW'RioU׮Zs[weI7pRti+޺m,7Л2%qg_2^#ve;)uHl1gf|f}uPVP=(Qa%CZm&5vOxa{(luv#L9ksNƲ;5‹ڱc1bԚe^ݣI3?G7+"+[-T۰b/*ngLa1/xN@f> mvez6i ASZ#ʼC#0s_Tѱ wס~{v}5*]hOcp~3?wEI!w8?6,ѐO{o==p-/Q>L/}ۿ^~rXr֍B!!Y"u 15ȥqJ1IVzO‘BY~Yg?Lw@ #T PF^7|VTnq54m{S`}177)up ƈ 0ړ۶]S`]JeKnoէ1f)e%BN)wۗAo1Cn(d]b̤U3A5ػ8?Ypu1c\;Ʊ׭>WJ 8v8\]G|8H>̐Cd'mnB{Н ?bï;,qc`^pĵE\"$/cYuبp|{l;xO3?4/a([}RXg~3;B;}.O/G^{nSSSSSSSSSSSSSS_򲑤qn1ES_e}VrMح=*~wǞ¯U绿__]V(wMNJ)1ZK˅R*)er8u є0q-ORKw:mG_C҅l]ǁ-]In.^vPZ>c9YR+̔ [yI\lEV.X$|5Vgl7(C$g1OoL~ ȂD8;|\G1Κ^>mP ShNU#Xk=rZ2mfXr^~i|so\G؁$t0g= 1`4g֦#{;?na1ezwy 򛾅o~o<~1o}>>_iWxO>=<6$Rb?'|~gIcN b(#͛$c{MgȷUP+؇'<~/9/5yB%G= ڱ:TTI1{t~mGHIض5l[]zdͨ`R힜nGK|n}.b,Ǵe_"!S]P*9pu`Xz3vs{i鄐H|7J5rG_#.al|!iUC>}>yß$/2~~?|>{7M>"Ryg|_x;_~Axoq O?!}ۄSSSSSSSSSSSSS$u:7{)+nz ˂ݽ@1!y- !^Aɦ)A5V';wkokW'/)$TR+լmĿX붕ӱP\̐ZY\ϯ%K&V|h[Θ_D+ꅜb[gE8ݼI0@e}Z0*w'\Up{)؊HKr`8J [ H"/gLq-FYjw[uB)[t$' xPnňʀI}yj<1W_ o/g=w+h5sYgG"qùjH+5[k(m&G~_1R+װ M ,D:t>5ןb܏?Aom7ǟw }QYK<'o=>Sy!/o>KzPK%GGc ~ɪ֊kB%) ]J"=;(U$UDįG@=??H^3g~J2VlҎVuVGII)^]0@-i+@JY FBA>==A8:y3t:q\vSN+ .7r)?nqci6"Ŏ$8O^pJZZ5gTN$ X; IA_s@343WJ Rr<$'Ge~I5#Db-iv}PbYCd]rczXr;U0E ճᗎq=SuCvW ݕnHAqyvp <bDUŸ 﫽{7@Xܽ#Y/ww[}.NMMMMMMMMMMMMR}LO,}@Z H3 AEdMX*ٍ3ա=kOt*[)dݷa8\5S+1gG_C]Wԍ l#m98E6D3 ף)Fo` _):T`GNԥ gGױPT/ 7FѪՖertmbчS7>缌aY' ~gCze0Yimג4aV@??8ԔR/K@ jX[H7ؽQ˼-}jo#갿]=m}mWɽîGľs;Fyys b{ӟq;ݖ;/fF^~՟i^2GϷǤ=Xkbל41MH5|v#C^t=I2Pb۶dj)1T8oq4y8V %*ʽ ,cj*;˷GHIe4ScեH'Uq,/^ &2&D8ir# 31(.5KVP@k`kRG`iQ1<6ʶ5&f a2[S;y-ڝԕoR4KݯrpXƾ[9ǿqk1=rу%Adwʙovx3@\6x]~ooЩ_$IH쬒S*sǫQˆ iA̱9»YS:xqeYƊp +)Grf29p)%Swic&uv`[ gqNuGq4qsֿg]F`R *a(LČ%gu zu&ٶ 9 浕%)-~,o׽oT%QKmڵv<px[].,p!fj. jq︸/ N:W=»Qو#W~}Nǐňl8tDs{p\㛧Ħ"h~ƾҼ5#ϟ03g:gg?sb<~#V? ~?'>5tMMMMMMMMMMMMMӢx>o6 Y,JAFa9I۹Dn O$iyg+9-W%zڿ 7DHTvV_( Zn6RlXg9=}B'vd%7(I뺍곔S (ACTj-ޛJqԥ?}^3;GUu\ܗ_u6qSANez]RXoOBŭ Q+,HFj@895Wt!UM~_Ưz&Þ8z/ĂgJ)Ժb8lڱ׆1"\{ pw WñC^?}EϠ'?q_3M7555555555555O@Q"g.1 @)UT XN>RjDmb;WJa9 NStٖta} dMj='D(e7oXkUh,cm[) 9E-d͔RX%zW:>՝{nfHF-|luV TsHg 6hϐp-2x*ۊ)zMwn~n =9Y(쐊#lܨGH֍Ɣ*#ȡmg:qRR ڶTcbjڙXV{`jp+~CRq;\R-..N0?)jSݏ;;:"J#gp~vv^>T{x%ce>*#zuMם|\8n=㽩}1܉qK q]*i4͟SSSSSSSSSSSSSS_%o}Hog&VH4'V*+i )/@q#_LJf84vmu]ÉW+nF ̀QQ+Gwmt--|zĒss)Lp<1XHOgrVPC[pp6Rl,p҅[۴Z+ŀN^'zXNPsClX}NݞQ.ϨsĝN i`om1p#:nݎHw6 @4I|=zAT~|h1*fW=ѕv`w][2wewwwju+X}$F!\:+uU^pD<*; `|ݎr2>P;,q}{jjjjjjjjjjjjjj=fVP[mۢ~MI輜Hw鴰_"^KlBu1QE_5Jz`8V ;ro@:#V)luG)XVU]-źV*ssz3S*5p%7(I0Id$H(Q,gm}I`+R^QLnSNDnx]Iꎕ$RQ*yV_ ^*!.'.ɔS=r-b rl0q%,%/j?VwձkvA}8lz@iNKuaFhYsVȸ;+a\cz"^&U9LWp iv2,VF[6bI3O ;5555555555555U %P iT-D^b$^u^氜NkO}gȲ+#/gǸEʹ##pZ%+Ho _~?G>?A# Z_ÇqH/ܗdbu_Qa.Q#Qpk2[+ 19 0QY8 1_JGtV[Mtn&م ra+l '҆MlʈXR<4mativ\ԠWjK'dtJ)uhO+wPAޱV?,?8;@1x,ԫp@t΋Э^$<.}q IDATvUt>tJ#S~؏tnV;d+ô:@"8{+Gд/:Q*ۊ CuIbm%T#g-[%\)euHW7g#KF\sseit3"ՍZ6RUQK 7NJ8Z^{9[it储 =mxRu!P4(VYq7}gTu]#&|zz^ft)hӼ4נnx-${ЍH3b]@X.6Cc`%yTD7.+_ vU[M]Y79lV{3Zree_MXiyXR **60\nsع.{tx|J㸵 :vf_a3h'߾y+óx {h]v# ~w^}x|q};` 8zt' ;5555555555555Uj6Z/+33|:S #c8jFE8kZ,j_rRJ!/KWIiA ~,P֍t>d|f+K3E%sj`3k)ga@5ŢUX=(& 9dyD܁F٭Ԋu7nP9)XNM¥XʞĴ.XzX0QjȧGTN&qj$bͷVTmp:*^3ӆK )_[d z͞ }tA}t:P|ꈢ3"6:d&iOc8D؈qՌGa*ޣA1 k2'0ڹ\jd^*v㜗;Dƥp@y浈5Aܻ%cvח16ŲB *yMi:'(xryE>=mKjv"4d\`9<5FTSΤPKte]Ye0lTٶm)$1hur>g%"֪@AI/ +Is"oc&O7\{\D:8,倫 x~+NK沽c4Ӝ7V.bv9aLH u{/7gF4'zgCѨ+"r<5)hrKK@hU u^ǥ݈LVv[w vؕ#qxXݵRcFC^mXK߯i=,4+a6 2ι[_ cbN:14:`w護$2NMMMMMMMMMMMMM}ȱhoG2Q1*j-wC"z wfR RِKUNuPrJJR^;4U#<~7zy j[R)SY* $k hJ`Y'Hyt=j5Y1⧂#>N^}f-Ȳ@Nx$4+KO1r:%6 ) V6ܕa.\CݤV{=U[ \*ꔶ˖p^."}EPQPhr*;bCs @׸QT60wPp) wwepkF2Bo:\؁5%m+0xD]=?q-{=&v!p\>r8,kkjjjjjjjjjjjjjjW^Δ(H?&"%e9I*!^ W oۏ tY6jA%*lz D)u̎;lzG^u *u# Tj݅*c8U UΒm $lz:ASE '̜uqTñ8 vwpE8EݧOL!zvg:l;­/=J09ۿz7a@/Y]쵷~~jקtBZ*~ߓ #&N=J)Whq<5555555555555 9 m)1ڶrLeYpz0Fn|Ʒ?HNʣG78-sr^a_g$\v0-u#Y̶$j#̓o=NXCDPTIpq2}{A IE7:L)҂YȔm 9YN +F] eA,"Uk65!+Tg-A.bF'( >b)^v7/N:d0Nǂ;#Ae|ػ+,n\g/|3_-ϰ֍}7;t؆FvhknFCkQ;5Jѓ N\Pt={6NMMMMMMMMMMMMMǪ%vs^(;I5nE`)."E?nijf=^;¯=ۗ;\5]@КCP'O嫃؀Ļ1s{^ sv%\G.Cӻ {>#q!@H~{Lu^X2*ˬESOL"+$ʶ-ȂZYr56bN'וw^SMsP L#1"4˨jP' `.fRO Wpxp i'baV+Tj:ItveF3wkm5t6U%:cUZ!LYI7K. /qVW׍fvWؠo]$ް,7[SH^NMk ,tkEM9ycXac, ^Is@^GiF̹CmpߛRʰ~p4oZ~;,}rG=cx?:γzKͩJZiYF= P$ZuZR&URv0q1.(Zu$͌"/y.FTQsC$q 8Ns3PVJaY 1/d [=Y?8ֳ PތaXN eESR,hunou 5xsҩpi~ GYk~9t .;EݜMJ[8G*G:\IQ74)ՔZ:5;KΔIen];%`FH.D؛.>\ڍ-xtjqp{{|+@8U]êXX܏wupw<֌?׶p|\=Bvczw߃25555555555555բ0 6}#nTkT wg ~mŕ喜N/4 :Eux5,mZCӢlHEII mEܩO0kI׶sn=pN5`3ƺWCtqat)q/0: P\P4.$LI FTfvݩ11=iutut؇}vgΫ&xoܞifĒE{o ^/VmJ^ظCouGl\ { 3zaNﳈbG_#33cL806*zJ?ujjjjjjjjjjjjj@"rn=$U "VZ7r>Q]EH8M'HD5@3r@a{Ъ]tӑ˲`&lq: [g0RfJC"X','̣g/M(V )-ȋbQچLbݹ\.>{XAHbEVF|ʽ׿)%*vO"*%eM g݉8)'!j`bS* bFS( 콀CoJ;dwҐ0+=RGiu6[w߹# º>+3!Wz;CнP5V~^׺6,G{e">>񌃪o8n[@M2=iN ̄r!jRoFUEJEә,8\Ů;CR t o96W=ѐ苵|} ^p/<"9PH9B ;_嘫N?x]Ͻ*5; gW0p@^_qaiT5h"@y_gok} Gwy|X+!3 q=]D \D'qaVZl4{"WGtp=.+eϚ ҩQcム2,4x*jqPH*/Hy pQ7yaYN$= #h Wچjp8Z+&׆`"v.^RLf+[ܷJs F$Vw&7q"n7 ɷh>h8' 3,ౌ,B֍ `Aۺ]1NeYH7'L:ʶmHqBƺr-m趻$;D涿aOvrxA&}^GQۺK<^@Dy.A57KX!^G{hRW?`/"6|xk!%A>PbWEǬxϮQ#|=fSג`ÞYG-ϟSSSSSSSSSSSSSS_U]oԂ T9qcғ T79 2H)ƶmJm=g>x;QIJ):H IE/mVgr4 hUS3M(d vi P o̤ւĚ, op}˙Nѽ} %mIޘsE8왓n6P! d^ VWP`,)8T")}âFM߫Ww6vupe}cY8 c4qq HanZ0-n HjFaeO?0;hoIͽa(e社pkxȻ{]oqUՒ̈-W9!ߌ 0֔{9biFj_%K Y4wHj'mq]2DJ[pZbn_c6+cqt-Fc.@Җy~^ĺ[Nw1pDž]]~}mw1q cn/i ji.þ𡁫Q98p/߯R1Ϲ; vNȸQ7#'}ٹ~?kܟ맦{va+H(ceЕR LjN7ض"@j>Ɣj2OmCOʙWI 7_HB#d<Ӊ8˒JEPHI@8o4,kVR|dzj\|wa kĶŰ5YY MV址y,+!qٶf/!c0U+yYp:won Qc25q`^÷ֈͶcH,}~">+}+khҠU> s㵻#q0!0278 rؤgʈl@Ŗ8EGwTpߓvvq! VVt1e2lJ9Ź59k|fWvͣw~//# t{QĺX+UWRDU ^Z9~/p#__!~s축+RtTۆ&i^u%x%n(Z/Oe3cQh(.-ٜ}oܬ v$ `4c>x[yx|u'N˙bY*JuR|ʙ38^9R4\Ru߼,l:-mW7|c|/ 7j3\STgkpKh %)V6(r\Ct汕ݨ}m(I9e9o<}J^2Dm/B-[l2X5 .αBMq!m#nc<#VAӉRznZ]g.`N^v އ Z2׍ۛ~o? ~C̺418-aΧNĒK|:h I84{GHWiOq56֕H<6"8ө{— /_q/ 9Iߺn9Fe%yaࢃ)hV˲nxD%c4;ۅ~?3j:Ҧь=eY70 IDATXʾbdl߭JUL /%`fuFFc`Q%!Gdy M, mtB$qZnC,hv.+k/BNgDu]/ネȂXSm4|EӢc%pG/X0W~;wL P8k<4";p𪤴O4j߳o<ŋIl brŇ׮Mw<Ƈjh[`_M;<1zX֫232:4;5ۿ4~?-5eTN@+{d?isZk}ňn#*Ws|iSSSSSSSSSSSSSSS֭bV唝w^Z,9bbCOeHE'4jDLyirxŻ?w|U6HDMf1 90$ [fk"8ԭHL{ZҪq:=H6!1XApQg"n )`GYNTUr")@_KRc+ᖼŶsDqU'%eO.k&B;,)YэjOmCRrtƮ_ k=BfQX+{c *׺w{d q3k-}LDDdw퐭}5p8&;ɟޯ[5^xMr}t׵:n4{6ܾK);5555555555555[v"8,OPɤcĥo&h iɰ<"Io1Z[h\"ĸrUAdZJq3D'.5mBm[=J˜>M *.^i&-e Ob,KߛܪFH FvH|mcK;f1`a!" #/-a`@  ji4LOTսdQ]U<#8$CoBcp"hZU)+q3)"ac&[q$u<BqyQ%'t !pJM#()Mx?s&3ή1:a6q..Q!!/3g"88rʋ\8^d#*C@U8/R8ngn$cHǻ%B؀Ob kX8:/J;B;e#MbrsN>+jƅj/WWF)WU+.lǾ{*J#AX-j]kZSXPNu]{iY Zzz{j6ak^F)jJ;!?lGGGGG#λ *CyG?(ٍ3?r'x~yIJ^r -yð zeϲ[_H&u]X/ ŔJj^%Ou+klv`j7iiZb?cvttttt1~u~x{|o! L:)gxwDEFw))|ҽĽ}/~g=YcF.%=Tgt *셕ŬD^ۺJM*ض$<*Q%ȰrKTefyi<>*)g6\6<i%c0׬•\}?GFst@lr )V_Iw;x󏿙~m<w$;$Pp8x={?^^/_xnOx1džĕ!Sf v|шDž 6,EsBQ|5qV(SlhXr+]x[o"~{oxiF1E^6-$h 9 && /g! (N)Lpy;C5ޑc*uJERR(J&1%\ƴ 'ips;Cs xG\h%GJqs#xƅ;p5OMkD!)55Sf5X#bW[Y_-V VV UeekGqQnNꁆ|[Nl5pKfiN%KJw=ZhUGVwư|HϢ^v]䠾9_xo?ě7aYɲiש_߿/_|nJi)a_(R£ӫ& l\K<5;޸yd^H%w/}ňFfvnG1rp!g%iDD,dK6%Уy2+o"DsVjQGl\0:4 hD曈i!\881I(9;kS 8%cZ]!ֆ[ezS2Zc! @ҕح/ ǔ3NԜ8/B3ζq~<.?C!\)X|!EA $%7OnݞN{Fi곴{ڍsWR XW>b40jkKo-Ӑr,dJj嗀˱sˍ 1'*{zn,)mb4-A[\Ly '7 ?2썟cIy W}Ͻe :::::::>> V k w;1f2n i 3 _х/}I\8)2;.r|.vw0m`-^BLMuR"Un0v~ 5UcrՉy:ÏKCoD'6Hx6\qؾ&< m;Y_?Bu<8ŹZy*a`fJNWj˕-fE#ew,Fڣ4[IV fα 䤈7""F[ܴΑlXّx K4䅠evK}K笽,Y9{F)uhUL&۴s^_U+fd%D_~N̼]r}f=/{NT@}O=|۸|, w NklX.-?7_ͥ][!$w+SyLs#ws OW ¯;ix qGo3%b 9'H!cy\RI I1>0b/^s §۳7crJ ,4\5!dQKTrIumo?O-giH´tcw6V1ت[Xa WllkI2<-?xRm)YJ`TVSw8c:X°Wa˼ڻ)^6,/6_q])cOUionh4roœ?OGݥ'jw+Wknw5`GGGGGNJ)dƞ-AuN|fg6]TPhp8E?ٟ Æ{<1%6a(MoCu*N'#N"~ncեX9|ۼ0yJ1!NH)ZJKwEZk2ŔxU/8:9W޶H)QRK`ZQɼJ,amaٟ+֨JrJ%RbWjR1Ew䤋Eֵq99`&bA,V'E'UZVxfUpFMc,h\ Kx[ BklGGGGG@՛hx?!SoO&V}_>#utttttt|d]3XDV)WD^G).$t)Xj:U*DM"kIdVB;R%3ˆǜN&)"tH١u7(EJBLFrrfv|!S&AN'n⥻p IiUU1V\ܕ9ۖ*ٌR-C-H-cI4Gkk~?jpYbsVQ}}ړB*Ayr"~yN]Uզ B֭jV%ZjΎ#7+)[px\-qö*֢[v]-m/8 6_sy-QC(ZfKVgR+{m]~\3s`GGGGGAko%/hÏwSIE1 (,-|rs݄lz@c•^/[֬ o3%7rO9'; ~@Z.Z.ЕnVf1vEʸ+# bn]Me.s Җ@pݨ'ޑSDI)8 'DD_a0~`E -Y[~=Q^ȃA)?)Em*j_q4\'DsΆ};5| ?e{FsGGGGGGG[: J\s!y{vFHOqdL*МpSH%6!T+e)e 11E U qG'&ЙӵoAlb&7\@҈($@Yd# cdͲ< O(8l."d?VBZf`@8Ue7p{!veshy kjn* IDAT̵z H.Nq /d17TJ=U_xc!Xo=^0mvݞ_Zj%~sʰ.̻UyW%؄+jȚ]X] qWYlsJ*5Oi^ٹKpm51ЖTzZ*l%HBZ S\"^F9 j~[],d^[Va}B6`Uԑ|>?NXh IoQw5{.`GGGGG sҋqKAޠpDJq)ƁKD!er "Fe{7dcJj3Y3HJ 2T,V]u[ //_!Rq f=oUM6Cj3ej͕=j#ܪ&\[}+R6b|+LZaKSVx?,WW*Saֽx4d6 7FE!YEEH'jc([JJVv#p5Ǵ6*Ki~kio% *7ڹ"wo.g}9@>%;257py"n #)F)WH/C@\ĵi!"{+j3U-h\:W<3:<.ll\U¸a7͐fd*xgڀ!jsn,MKknIGc;DW4Y^VnE|q.06R%nܼJf $TCȚLyq)D˭E8oztR !\٭4D Ԙ˖.+ Egadrp)*Ԑq-'XUoT-|2Rȡ9|m&+E"ks!\vNVV #Lr:ݴK1.*Ŭa{w vf9BAmO%EY zAfsZ찐UeYoլPdv#! $ȚoRx„:n," 9<:W.r|1wu'/zy6G|Xv';Nob=|sܼzg1 G厴.*ec&5ޣQ9~1{/,kx{4fLcYI9+qy32 nJ$gA F8#,&͸d`K\1)HqkN<2N q$FoE4m͈ FHPsPŞC!88>x')']DL'h2ͧdM8>bEH92L@"9Qj_b܄r Aܭ\2gq9H9BSZb<άX#r!Λ ;rw:(%msyj-VJC/ay9yaw[=RҦ^k"Ym7<]Ϋh2屵9^ԕ_SK?>.e,ىz(.բ2BUXZ0_~U٢tttttt<>Q'"{xC|ʿc"˗.s _BY.qdz~|>ȃpk7//k]<{j?D_kE/Qwttttt|>tT9GVav{ 'ٞ<9ƣZN87)E=YXc٪*s@6Z񣑉Ժ#RƍZߓpac)͵J֩lr&x+disDِZ!seY$GPy)!yZʩe;2R༰=e4Řޝi{V#m^N5CHtI^U=ڕY{5opWZ~P7o>'[>2[lާwg;ن-/yKx_}|3yg=[6 k>G$m+nQݝ8㽿^>{o~Û99L{p >8:oo%K#+abJ lnX& H@w8dqZTV(1h}_wEYcdGXfy!b˿#Òw7C5 -BF ġRm.#Nɪ$CpۛΠuGSp☦3Dwź@UJѭs*,$_HEKv_R,܎';TE'*ޢVr6R1 Dq^0ҴtUxZa~lRS?i9u;PIY~sxU xp}ᾞ q.ae~bO%Ͱ;A/ۙCuC&>o| z2--ۓUqڛ- ?F_yW.\3w9/nhpiċH)Se \|yG] d7fL@ދ)0lFbȥ f VQ+WlObr$M72Xs<ɶM?e| ' GfC#xLb/x\Qq4rS3N\@6p-/+diR69~YwSZh!EiNB$iXNlcH}Y͒VqkEgea=D% g4 =@54P#h¹ aa5K@ 1=H"g bL)q%9djR/SC WK.Ctm m_{0RsĠXSIEjXaߓY{EgR+ه5ǰYjodF)sz\Y{~=9zbڏu$w5)۳-W~Wruņǘ_'#5R(rŴ88<@<iP>} ѕ#~&q2c:_c:FߠIيJ/}*HQ 8Uo%,.֎c*ǡ1h<#97a{v8LP'6q@5 MvCbAgHc9.yY'a*sZ<!xbL,淬 _Z>#^uXJmQw9|9;ްdr^ R02O6Fh՜>z89o@;oŐ|/__ŕS6 J{v;{Qb}9/u+|ˋdksTEGrN8}WWOM'`2O Æ8oK'3_i)E |LkV>d')/m9q )8"8 8vZ{+&+"s)0NB\&' RWjDWIG2#s:#;AV-R88uhgO?m?o|KSǪsA98:sGGGGGS >o!LZbgtwJf lH9D|@Bdp♧3y[\!ooWw";i2R>2/75ċ9[SgCQӇ-?,-Hiv޸48\@B`4m 㱵ҳ ݴuH'#.7U{~V$ńn1+).֡!:8  qJ#ŊkB;%cklŎ#" ͥ$mM7l(լ$:+1a#=VBa?}jӀK`Ky*db%ۗ Y(MtVcob#2z,-q1.Ԛڪ"lUu?!{u`j`w{'Ӊ[[^m*!m3\i!1kr~ι=/E)d3vttttt[k {ٌ!7aum\F%K6{B VഴOʢujE+X[rv㨏_j3Vvlf-~?-U9HcwR>_0RTbeb^P\2B[rmU\gǐo5#GP5 ?lb<oj^M b+yeX1r+O׏/bHʏ}}=)>)F9qQfD'JJ~`䓞~; nN&Yp('7o G͓. 蚑1ͪk% \gJ[aN%NMv*Yn+'DF\|cwUtEkf 7R(wL3q cDFb,ndb7$dr)9f`v_Zi,/gkT6 0800O[ٍ%DV)t=$#K{nUS[IM*Z{mYq3_@ˋm]%bرD>?Ow[2T-\d$Tқu8[I2Y^m1B14DZ3)f1'84vzMe1w`GGGGS|׃|#ٵXΙ0NorK|뾎Ub=mI!NUUq:c.\?am-nH5ebߕypF]!hwĘ )q><;Fg(ZdIbx4_!0om*Vf8=T#2@0x6q$Ι68-ޕ~x/s$3|E}qi!RrsF-)^Me7IwaEU׋ҹa:הEFeW޼ng2R=EE&Ѽ٥b-bN{sCe-Eu_qYjN}L}x;sBCݚyoũJHVf5G)~{yOY>+,~vܾF::p%^0nr\ϱwttttx$ /K/{`GGGGS OyR  ؝|%|CAH`* 9cs 2BдE| dyJހ$FRΈSbܖRU#S1$)_& qubQ Y̐s"xip xfZo q$'Yl-0. Z5m$dLcx|0YL0/&v/UgM' m%楨ۖ4 o5/jjWLՕǭƶf-d歮gLm?(`./)kZU5wQi[+]LR Rxڜzm s%9agsyGGGGG''"<̎QI'w ,s\;{6oCJ"'D9yG"<γlNZ6MO@MY3pOV,r&Lwi Pd`g~#|Ï)&R?Kd1~S2\eWXaXx,WHPb.NFx[<VΈBuĴ-W-šWZ-9Nib3*i(zK0~|O|3ϼ7o'ΑgL#x"D^]#Ð!%|Fd7Kx4}hMvB#ϸ|O~+t6Y'Muʛͼ߿x*ZvnL !IGҐ"9O8wHDG*oȶ&L43&Ȟ{OVV~B5ㄈcmhR7AJAL1@Y_8o@q*@$d!Q!Hy)gHL)Nw8K\+occ\21w8#ˀJFԔv-GE#12Oc%\ٵdy`'f,OcfatȣJ)7CX%XWNITL|* lyi%-6v=b !,_"jʒ?X٪ca0µ>n][Q|;?ؤ[iG*r4FUIuu!3HqxAD؞ny<nZj.9 ~ ķ9;9ygsjOdЗ`{_c<Ѥ{DyμtoVvttttEc$WHge T`U/a.$/ej9v9s+#b{`Ҳ k3!!drZ-ZDdʡ-5n;nE#"$,*p, T, SK&E*fH,2$;io ks.%3b瞳Ϛ=yg}H̤_1J\H(Cd5!Y<(Zi WҪRNYq:P]5#XgP$[݄|3M-(ױ=|ߢbuiE)"W$JYf̘1cƌ (ԇo0߸BN1!D~r|p'~uкoprLʢ>oy^1cƌ數cKXY%/(+ " =>[Kq9C;?&vK z$V q+j3U.bL6WOtm~ ֐jB%^J)֦y: @T j٧0##D<Kg/h6MiS&qIZBjܕ%*KGG^ǺLBu D:pȺ>.qn1XUYV{V !ɑu&+CrC4I)B}U!BuI9yE$= #՛]sP* IH(#UZ"ԊfdWoFlŚ:% C1FbFM}x~RaٖL`u_Ob,o!M~NSo*a=.!Pk3Y *mGD`rg̘1cƌs7ޚ~iIϨA,Kz䖊s~ww,W}~ zOH-_LºmX?\}osܹYO[x+_jVΘ1cƌ5 Ng*,=1VQê"jQ2fAŠ'wk>CL5(oݒAs"5ɕxK-b1VsD*Ku*C2Lb {bwL\ 4CڪbdE+$7uJj&>ZXn\3x\LK\"p8khڎmR8Z d GIMnI(IC=1A0s~Si.v[kJ]țNSe5p1gjz8Xa5BJRQ-So*=ɧ B*B~MDTwsj@IzԹJl_42'أߠt5s @sΏE{ IBQB+g̘1cƌﶷƟTuߴH,7wLɫS6 xsp |B6,T;m;: h?|*U`q5Q7r}f̘1cƌ~7\<;t,,ʖw<)7ϳaʹ}BHjs/{?rO$bj\#I<4y&rށ(-̤VݏK,cK [q kАGbdIi`;5cppI;9>^$.1=6ax Eac=1`Z*)6Nohuj|^b,#9BX&/dMCfJ; !T?1EPk6^6FAv|.Б5Jլ+j-dmafԾ2 crQo(")\m6Z`xX*J_o̞6# Djzs(awϥ&'(svLdcqZ1cƌ{_~@F *V~5ɿ1vO{_mJf4gydy_Olg|* C6!&>?3f̘1o ˟7=xW<^kZbʳw_|铟ŽMȼG4ivlpyٲ2#SR91IY5JӴx҇bKP%ƞ(!%e_SAFN rbloh~7hvЯp) M.r&el %EB5 wʎB!C91$)0ٌ="]~SA!ceЎ;Nm%ږXklBX PKM>+;dۀc CIW˹ɢ]E <ƪ`&կOR౷dK@4cƌ3fuCYLmcXJMU)(Vɏ_y{xwsgՅ KŽw˽>y{>g.Z''ExFHyTkuRb$8#1m3.e<E'BN3f̘1,wX3gi ͭ&&l9Cd//Jv hgOm$7v@;ȟ~{xz??sEihX,.wwֻ1ZZ.|{_|r'*YMDXl.#9 Y8C:X^^x'|33f̘qA~'}ʟ)k-[_Q|ZPcp"1>V}#y'AF \(›H>s`Cr~h1S^ZBFC_6Z%hs-E5[4B4k<[젒M<_՚CMR +}$bhJA 'Ff3q0 Zw+$Zݟ񉿉}ӔB.fj2_$xfG-O8dSb!%_Á#WÎ, AԼR`Qg5V5xNcnɻ3&hy@l:KmȩWCN?ib&ے. J򯐚9j@Tpe)xJ敶HΐXGfAS_.:R1*SKQ\Hk}n6`;tWvƌ3fI~|-17iF0aYx=~ۻCr;oy6W_YCy2r3o"klzojӽ;lX,1 J\rTl:7hr$-?} 1pc̸Q],{1,?ll"j6iYNd^ES_갚 t]8V kYP&vX1/ 1W-a2ˠLVRB@Y6dR͌HQ;U:"TcZ裴ҕ{m& H7U-Y<݈dg̘1cƙF}oET&m=I]zcc<<<``1VKvBx[-\9`6"-<D$dLh>ny w}:IGZR(wy?xNm_Dn}37cƌ3<_6-M!:p!]aW"ֳZ1 b#!<12Ŗ\kxMg.Y^"D@q#ZGw$vhL#TESˮ8zAR`qI|N;"BȜ`U?U"kI_&ݬuUgyWOd(Ms``Tn' 1KلڎUkMf\",G=H 'FE$qSd#݄#+dҔ;JR )5d#u&;|' DJEi-*3< 'ԁ|Lb<X4vl#D9k^9]dMDj9fI2N%RB$UcMfϸA؛˾BVm&qD+,Yǭ3f̘1c1%'V$%C;W!r拼M\Mpko?{{E❿Ni& Ş5 lExjeV{3$јě87## cI7ƘHCp4MUVX_GXJB8AwTBxk,q:W ꯰WU܈,ǗSR-Lec2hZqZa7]eD(emJX)1T/ڃ%y^#0{+,Cp!olCB IDATsCNHǢe/A8 V @|c(owwV҅0-_/&ۅg̘1cƌ3;@矉ӯZId}ѳll>oKR+27m>rsˏƒzOIO~>{NϟO=-?~ 7k.~/BK%_tb?0_XUu}3f̘1cEpD{5}㲻0ƈuÐ)䞀~6 M 1bb%ǫMj;(q3K4"%B DD­XK *@%`VuDkTK4 #Y!Yh!5X5Y$p4YY '5%5'aH_;RjP3yiTj-M۲Vb8bZU&`ZY`qW)VňIV{rcX! V`BmӌgfDEc$5jph81@^òw!]VpfB s zEXr TvݢfL B?8kݒg/*_Q*ઢx*`$1ծ^R23W r`Ϙ1cƌgVɂZ)ʿc+Jn4|4Wv/xe|\zہs;#7[~1-1Sݣb vMxoo÷Ԣ#!a?tU՗ף2Píou~g̘1cƙ5 !D4XQS:QBUZTTV1a}F14  ~E%S% O5g .u4$bl* 9cJ [eARy%4ĘlQ"l`ny.&^A }چԆ,墓74ib};BQ8,fB%GYMm`ɱmSSThǘMB0OWbdr3ǗxhM/j5mf֓BQIH!`lJ;N)7QT^!8T^*B5,* n$@FD%#RNGdV/TFpX Y7(B2K"`C%BNP5500ΧCijtP+{> U˸λEk }_3f̘q&WK` /JU9;|s_SlmMrWNUZ_𮷼 {V{B(KKG>hbcDb_KM~_/U;̣Q2zSs2d-\|E~~1cƌg;{`ag7l6 }0.RxGjM6y> "nE.kj쇵rUV\$,?It$=}X51鏰Vz;Xb*hlBLjEg=}t4Ky{7 xv/9^݋z=0` bAU9'"$SD'6D9o:j6%f.!f16O@u6ٍC;hKK.z R@la#`gFmIVȿr… 4FSHah8‘LRbaITt"X8y,)^r'!lr^F17\X$Kq,SddA 4UG%):LQ'ܓY Wgk=I]z׿s̕kVb>y~4?Xͺx2p|>\-664o7$+2 яsans$t{ƌ3fY<7r!19Zb@b[k5nm*Xb]L ˸ X#B/CVj6i-` acm5=}8*/AqkZŨ\}ll\qt]L-FQhPi*qYDBRD^"ffk Ie*Ɋ"kW2Kfs5@$)1QfYD$N\,*⹒WbB4MSg'30RFԦے%'Q"ѐ!JBFp2=XbQF"5[㓃j|I Hd:7Z7ՍJUޕXHαuz>!LB4]2\ֱyh -N< /v3ԇd?3f̘1⎿̒wmozo8i~a5Vݗҋ O>k;pYPUe!߽}b,a)x O{8^cs5w3f8x7Ҹ\āŋX 1H(Bc]RӠBТlK~o]uDXעaWT<8oQ}Xu@nOe* Jε܊ajs,Lt%-@\l=c1j_mq&7A)i#G =>DCr'+q8Qr'5s&md`RDuυ 1{|Lef́R D+S[J^DEFS3RLQ8Z1Q?Ǒge[&LjbNРMG8c((usMj%e$BSXe*ǹBQ\& c$ Y8ؕq{8lіI;`)-q\/kSwaD 1cƌ3uw܍ŖdP$1xswe|?S\J!Ooj~ ͝MMϢM ]vMRB}tn~g̘1cƙq'*:/+w=DPx0-]6I!b.>(EKz./I$Qw @l]MЯ'%R_%hxzɅ &a"rRl,i&(AWX {5ĨV^$q2%ЭƱK(GWf"]{'ϧ&g8gΘ1cƌ3{?q/w~N1Cn'Tvy=T;~XWENH>QE˥{.׾Hƒgcƌ3$XLJ>1BZ TPfH5#p(p5 Qə((ZqF@Wn 0aTUW "=YT$ؔ'8ET49z\=OuÊ>vĸf]"}+X~ Ap~fA8OX7s7n=%z*Ď{vobkۡ[XfC Wr50qM"Q\j-.j<=%k{ee:[ AjT"bej_{4[R`I{v N 7m뛼B[Iא+ ׺z t,9Ь?LΘ1cƌ㩃|>/{>g":ہsɢZv`GGGރDI #"ESȶpM9%qu3f̘q&a]4~H"%,N BXkBdu&Ǧ }X g,ؔ 8Xm@"kVxKXc0Cu8LQ6{`EY6eR82Mb+ Gzy|{T Ϙ1cƌg W~ʔmqpoo'dkgkL>R2lAEY,|ƌ3fIc#F9B ]ߣfn0jƓ|roiE5 ڣp! 1T5 (c8jFB$+1.441#, jko[] jQchۦrV,74M7c4eY9Gb9LP簋sfqSVᘾ•xI(Bd8Z=Xo6*XSP+JSD;vnbs[Od1qh 9:OaRc(tڞ;.]Y//#^uRqZ Wl.D3!!y< 4r&gYu7&sx(_1Z\=؆kXJ<1͎$$hsvZO*9cƌ3fM;kI߾jo}auX;/mo`F*BtBeBgvucÓ䪶|k(3f8  >0%3/)"CbE)Y`*|uƃscBsM*D+bĂ &7-@ aBŸMHKakQ 5A b쿢Qiۍ0Ub`dΦf=)ХrR1br'q/Ib]1D8zb e4s5&Qݬqf:X.1ibaԨ6@郢gT"A7k#Llm%%|c Ʉ֚uA8FxVH9zp**Tnx"Æ\.bMAXI!+p i9(uc"1ߘ'sxYTVOQ;!iW[>8-8%-ӵcd "UXlۃT3f̘qqߝUl{pps㹼M|Dmߓ Ȳ>yͳoR3S\~g̘1cل*&!ɱh-5_ X|iۦKZu=5)ɪ3 oaXkvd(NC@cR'AUqM8` Un\bCqE&T~kfAY$f1&L"8A}Y嚖apF]5-d#5-..b._66mT7i fvkwPm*ׅ9$99K^7sx IDAT^k&1DB_SG7APu}GZ 㷾G-!%/.צ&-0%{υCa,) LeUw< 6b5"!ڣLNb*&DJ0>ױm|ABPs_E&iy$c̟ӡVRcP1m?EXKLM+S3f̘qqxpb-ysx^nN:zjNx3fcځ%<ȥeSdPv:ʈDEw|2mQX7,$&~ #b6|1cƌg$$ 1=$H7H"iƈ5ƀĈ!Fb~1QZ!uX%%A>5ǐ瑈ƘӔ뇂k$2 xl4`\(IEh#W4&kq lGiLެf[uCP}Eq9OQ]4D,:BVEZ5&i/l2Sf"F3N8iG=FN3y9tN'Q!40D1|l&F ֺJ@B}VF꼡 'j:PBrRo3A! LׇRt>lѻŷ1ˠZG+v]T.c>|mi#5h R\c^/$ κ_3f̘q&aPYÕWxw|Ow^)'xz4J@r>>y^ ߟ{E}^KX+^Lf]?( )Iٍ |Ղ0t'!4=$u{O=:k(Q8G%!o%n-m2g#;[ FYeZἯ}Q#6X,Dy-$$5P[fR"URcɷيjuk2AVRafTs%XɪB&PMV4}bFV$4aJќW°*X9&<&HDFL9G- ՐFWI;应msYD1g9[gݖ6(&(}#~a1cƌ3 3I9FZ}3ې^0\ ?^}Hj vn%O([6m۞R$8]l|h%[|~mx6j>΅~ ]=x=wк6a2cƌ3&bA߃ML4 hpB*뫵Ca ш`;A5LtI2>$!5@2soE 1 X$D}q&cF=BmEؼ_T׈i𹸭>8?tKkzTMGD̎,;[+^_#c1cƌ3"El,1dǶ-Q`%m6E 0GNu3gi< hS FlCրx58kDb耈q`zU%g-7bm6,8cqStNk2Hx:fâFB:_!Y*w"&]̈́3%,:{DƐiP K`m1]8·;T0r20X(ݪC 4ލܹg{`Һ=Z{{0Jk% 43#2f"3qȈbdRT&S53N0QD!dHH~/瞳z7zk}۠j0_7k_mCɤP#X:Z[T\#T}#Φa{d/^6Oᚣ7vCnCM8Y5l.$d֦\PZp|,Gf~nH7Wo* Ⱥw>jyL}{ '%s9ָ8GVXbŊ; ﹜3kp4aj$M $ 1p~<_;̻—!g8eZܔW@M Xߣ'''s5oW,bXd)UW˯9.]&_bŊw$a &GheUpV,'Z%bJthkyJim?DC; Y - Tx wepDĄϲb_V)Vf)uӁ"ƑFCQmˢ $ K H-+ )E -Y"Y?'¬4s`B:;yȍO1R b̌Iv&yn3V1eJJ]U֜:UY*ʼ?y3IGz^Qw͗RWE|8fvNM?_ߜ؛[XJ7gU~PQR\ϩy9/MIQ7<֠Mm). Wy{"7qn/UhvLZvŊ+Vܑ+Z+2GgJ$(KZ<@|{n[{j}oEWf!ʐn$Y '8 4_efrqMw.\Ь;=t+VX⎄BLEUxiwΑ8`q* 8EҎ0t4(o(36u8CeD0+Ʃt*KC$nCJawN-c(L8H\bf#HVy߁9R xM7WIװ: :oқ'ňs\:h:G9*OaN=KH:EMԮ*j0DZJsArr\[r5R:Id<q͂,M}mՁeb[-[ 9>9?%&=[ .x^C]ߵ7wĻ8pmxO_O+VXqG"fB0<b#aNL8-lˤ`|iZʄ9\-O-UMCC@ ĸ#tHwHaHfnވpC)ڀܾ;!KSlNϮqX %SEd+m-*BDP<7ktԖRhys.ϕmMy&͎߭9іQ{%>YͯC]e{ob}_l xVXbŊPqr天y͸Gy~ANzy=/?WcN.\?eD<+Cx"۹QO %F 9|WoꗹprᖛV{_|zXbŊ;1E0JX pP?bqQ7ba$XyjHH911I! N!8Ux 1&==J2Edۖks{mJ {X"/1-HƍOmD#C8#J0fs bl/rvc5f 1fto9RAOwn!:/ 'E5r0^džGHq)8\Jn)3B@+%$)gfCsrvtLzD;r dRıIJBUI5v6D^VKm%B2M!3RL6%w쪤rfV4l!E&D\mm8^1*?Ǿ\99xOreŊ+Vqp"8//yt+3 .sa7:Y+[M}2ȥ˗x?|7osv,ہ9OTl7n7=?N.,2 NO{|Ŋ+Vܑ_]O<v=Ac?u]_#:A{pFG@ls Jv02ψ&xEc?iyLeSuIBp)!,\vَܢKTF#<\cc7:YB{` !8df%dLqDoHբDQ[bxw:\{34~)Zcq\q6M.Q]$)EqB+aWL*Y+'X*xIÉcٷ&3+ږV,ےU5oI. "e+7aV[WQmLYlaC~.Ʌ&LTB/4Kܷs@M #1$>Ŷ][m9k_$pNrQ2\[uY jvŊ+VܑxF=. §?Z}bj9/z}}v;DN's;Y2#"8x//̹!O{`?YUyW?_<.yD{&ۑ1xzXbŊ;B.x`6 t! 권5R8jA-1B ;vGW&vX4nfs]#!Ybʤ tsrN2&fwP8J4Z3cNTуcm.Tx .;UgjP"J\bQE0! ?g<ª 0'''O< #z$߬ {RJ@CWyџŋ6י' bŊ+Hx_tyfhPǜ OAQS-h1b O&Ml;G!nNpe\wnsK;a eVq5j RxD0s8A}&,@9'0qTL )ߓ6Qq!BtɹeDL֙eZ/E3)K*+EMVRmL輌3:y[L\d`梓) qi?DsIJ.k'Z;lL5wCȂ@ۆк$A[OY&+kG7sUJN'-)ޥP%+$+VX+ml!u|꣟ʭOc]EuBbNwEf}|Oթ ؁\oo~Xؚ@_bŊw$jgd6gŠEr^2!l/=D:͖1C9SwC-h@+uxIȜWK8b/+ardz#HPqJ5ݦcf<,*ҡZtYCw~|5Wg-51 X~<]#Xn-FC p7zÜ1nuv}pTG%Yi.٢gbB޹ě8SBنZ,:fNy!,‰Y{T1D٬ F6Z(Z+雝$\QIXPM=L*#H`r"!d[l=vn\\ ^LUM'iDV2&˜ܹ`FD\kǝ?+vYSE[\QK@,z3Wybi6`yĘ*ۜ 'RmR Y:)0ˌo)1Y%@et"sb FLrsf3Si$eŊ+VSqsՏ_%gUgg|/k<skky  IDAT\]>ځ?۶B͎rsYO+VXqG"&cq$?K0YkvCK^&)Ւnc%.쫅PKn8!Qw,tBp'u\Ǒ4M.P2CE̢KJ|7N>s,}F:BBip*J+BDr`0Ŋ4  82+2:Lm1#Z,DCq[/Vi"6oBZ\Iy#Ya4KFV.ﵭKT(MXKX|*Ģ/֟͋B6jNuxתK)eayj;WU%\$[Ήɩ189/y`xV2VwjfW%fS[9. ڜ|Wb<$ѦLʬ]hŊ+Vozg qϫT8q:z"c^0;Dzځ?ۑBH<Ϣ bŊ+L0FU4]5`T2 JjiFfEјVꪺnG6Eծ1+H9,bړ7Ru$ Dܶ Uܘ1XnKdd=0."="9]ULFv)! `u[1!l.!"Lcl ɨXeqJY*mnWEIa -q"{ݑcZ21_¹\BH[w- pYaR<`mIe' 75N4x2׻ѹ#2l%%{-_srȌ5Sn_-g-'^fh˩vڜ˗FpXIB\(ޕHM1emqvvZ$1_bŊ+T<>3Abh\|~)W]m]gK>5x^@Dځ?׶KQI_^bŊw.Zt[!RVYfn,=lqeSqu}J}ɬDby%&2;AҀIQ8w:B0~3u.%v7YnM&nClSd0~s`IQ~{$=cr?jOPq@dYtdQ!H1Nx˶wNtezHfb#BSY!sk3p-LADoٖR2n:8կɚZ:bt1x5uYs"y~G68Z)G#f'ۜa֚Mu?[ό 꽟iηx(c2LV[xN6eL> Ov"SEPUie%{Q;S#&YQ1XbŊw"N{?xy{_{O'Joo6'}KAIc5 [ ϶smՎ\C}9XbŊ;fv0/N&[h,` !݂=)fqfs~^{o˩R*J?f!}?T"*BX~q뉂Q]*l6+:2㘜τYuG\o!)nȖd5Z]޶ 粰,HJ#r|IJ)ߥg(7Qu oKH^A堿\Dweǰ8DqhsTk<;n6Te؉bI'ŧZ2"# "䩐r U]FqÊtz~de/ؘ,. J3.Δv{D%MoQTLC~>nY3 Ґ*Rm;$De(nbŊ+Vij,.^}k\gοDɹr︗vC |bNݦ/{!͡sm]Y9\Y{zbXbŊ;BH:lɌbg!6^(Ax0ojq^wccJ$l O=Vb,.H(v0ހ g)]҈LAb냽(11o? ! a˂*u&s.zEe!4X{RO"\qWr !fbUÕeԓswa9c7 8ҹab\P'l7Q=pogIg֍ijb[jfFחsUPsBٛbchs]ގTW);)3T띫xa닅$i{|.iyrݎl_f͏̖0 8'VR^?:vdŊ+Vܹ3{7yW1Dy.OH'J b[^͟ux>.Hϗpu;)//b6$^}<x{k~qۂB`^\+VXqǢfWB*H*ysYVH_LK=-!xjm }RB37$BW./_y!/)J|cQΥ-}:Y㉀MMW.<ގ(j-q)8OWfux-APəJIJ\~1L/{Z\WlǫwŊ+Vܹ>Mהduć>TnOԞ;:GWz#w?nyr%Y2UGy}7o7oyuKǼG^2nS;([CC;B\榰:ق)DSm6  NwKWQ=Q7sWgJ)ϱ8; sbY7-ܱIs,bJ-myi֚0d6ٟYaEe_XyXo݇~YsbU)Ġ4^nfa_ha*PJm`%ZO&* ˼#d!rMeZ܊SJ8qxO|w+Vcm:g}O]8⋾ZcUɯjyK_>~AVƢ/ܺOuwG􌻑|}9/meF9%_%_/g{m%bs%`ˇ~C|wwqto_gg9x ?ZpvQ_ RRQk/r%VXb})SY?b7GAB}XĘ^ƯP"?u ; n1Hdppzœga~DZN `d;o'wiu,]GP`eWc8C 0 6)ʀZ@mD%B$`vR8k20Ii@$%`gز(,=i-6{y[f6[TU?]bŊw$u\ 0[.7l7X?Wp{JOW|WprC\}jێW>߷FSJ!p~z+y?OLq:lk^·>-$al[~U>o6?c]ۯa(z CQg}᳞ {Ŋ+Vm31fDɢ"Ժ;Dr%8u97DB9?h-uHș]Mţ#I/MKNv߱4CNAJ&$*xF7ة#K E"1qHlc, b%kl7P;栿Ht'l・#$m 2␹3٠zF,3r^!icӲ c:sb.#Rsp5`u]. ~xb2XJXbq1Un>̬DVWs9yP=SI/`d7}aF7f<5SmV9r"}|*=[2SϪF S UB[%^'ַ_@g$f]bŊw4n<|~?I"ш:>uSok\|{"eB7C8==em/7--$O!~s8WWڿZ/4msk7/y' p0 C`{ewsgrS޼-SU4)9|+VXٝᚳsj&m`da'Ȱ\* e=cjR0qg)!$Yw%ͤYãg/N )k\͇qc6ٮY 13|,y6 1#ƈwgzC$.RbD&%0=L_H5#q*35Q>~2͒YiiE0(OYVRI*.@wxb5جXs꫒j1Y%2+Uoq6R.0 S#&&T23m"nte?tƐJOCOEΒ[f\3 @-K]wݿ^2Ob;yO%Ji7Y'@&(!gKxM`}/+-<êü[vŊ+Vܱ-~ v{ <30\<:6M !ϼ}>^/wwp-ZmvD]%o .d_VF 2)RŬU[}R93cjsWi6 !Bbv*",q1xMj=m\ɗArf0uusk||' ]sH^w Wۜ>,A[bRI~c?kiΩ^Ji@o*@:RtMw Oz\Bnu៚+X{R XpNIiNh߲+VXE%>^}>|n=\Z9?=_r#ot "L)~>O__7My3yK__lss//x,hWO?=gɥb= xȿy^_ G{/җ<+VX.tq*X]1eAx#H7n%n®Ͳ {OiO,"!f?)>n"& ]B57I(>I"!a]/G8 "~nG#*7>Id5ї8^n6ӈp~sYVrR9ɹI!\O()G\׮~l0M:66W,EbC(L&@YɽqH!i(:ahNOUewk~kC)1Za0Oɂk& bu*F๽F|oJ*qU" XEg [t+V[zד-YInU4η 9_roqy! -KT9?D\-ѷhf| 4[D2^bŊ+Vܹ*|Kx__!xvm.Lp{W櫈!"NnQ=ߴ3kH(n|#'Cqpܖp{Y[.}3GYG#5q~m[:^/%_[ VXbŊ;" # x0I9y02RԪ= ̠X`]w¦7p$B q 1 BFERʳ4 #a!kqn09;{w) LD"qlx)mg%nb'hh<~OCNTRz ÄsY9˜NfI18ˤ +ɞ8;0rJU9J3!dűcVx. 3Y)][ 8]`eV h-k_u4Y}^'rެYI(mIawwšW-2k孹t[shf,g%w jΊ@ھNͩue⼄eXbŊUQI5߹\釹q搒 vQ:tm5[v&k;T!rx7oVS11[HcP٬䖛u)&^W'+Vx ~GH1gKqCL10- Cq<vpqt YToZ 45õشit -DJ^p]H9B<'0`@BLsiw.g*a&FLQ9_/%0,Y)j) a;"&A#@68".o$r[s/}O kOF*d[Z+5S5 -!mv)[3|]y'DSeOCx IDATB(ޕS;Δ{8GU͋7j{Y15kcoܛ󈰷_w8γ!z?.ycUR:#t3#߲+VX)mG߅XqW^u|ZN+v nߣف}/dr~#')RV<ϝJ3r+-iPB LϣXEy7rޭXbŊw:eY;0- LD qk,r ud D] 1^c]%CuBl0(Br=zTqCD{7 fۣ!Y@51mp}Бp되rLOsxwjRtH.> 10wcTڑKIeRy֔6+JQAGvs_@$ RHGHȳFR=VDZ19DBñ@1ascPDď& 5o"mޮw ={ܴ7,ywuF՟eVkϺެ(Ɍ,ȸp [^7'+'lc^}Y(3?.QfBJCy/'˲%lZWqIim^bŊOpwㇾxRo}JXbŊ RK;"8O,ﺮq*͑"N(w0d $ 5'qWd pqM|wts0]CҎ$=ns4pe$1;&::+s+NѾY9W`darJJ/'`X)$1B8%5O<^zO*sB2P=B[:dK6 bª(XJI#۠]\D" ztAeeـEHmAoRnX<:0%Yvz_$v]bŊO)__$y܄ݼ,`O_w36)$`kεp Z~mhk[f뿜~}k+Vxʡ1~ہzwĔ 34$H )$5bM )E0&*H)l7XTN!2 DT;Drӭ'˪.,N}./i] ֢*gB(CPU02aL{?@uܠ9NqG 1s=HY(x5 ' ]8 ᔊSRB3gW1b@=bf܎nkVu$#R&DNǿڠJJWXbS :uqI|xr''ίN>OŊr'}cyo#f7gm󛰏˼߰7SXbŊO9EmQQr(),|<]&씴;%3Dq)"Ä4]!;Kӫ4fҪc\ȕ9)"t #q8r۰hJ+%+1%Prlnw9*uKsY(%fEdoVlJ"NHj10g82a⩊ BnޝHOIr9,ńw=))?|>)gd7moUs7E6d.-ԩ+66 PAڳ&-VIe'@SXA7W d+YbŊ+03N𺷼G8? +p1G.>4 x'v+;'~¯l_{qup-j]bŊOIcB'I8St6;BlN;\<}z4p4Ł2iXܑ 8$W%]Qa\`44"")sc6} À:ڛ%8Tpnl|GN?`oq3&gB粘Jɨ\\1X 2#jV{pȪ iAED}M^DhͷgNͿg5U: ÛJ^~~l1U7l5I s-L~h. ΥyRNDݼdazb$۷W3֤rاvЭXbŊO%kWee9F?;+p%RL^$w;{^*a&5efț!s;^|2 gfy ?2}zrŊ+VX)9pXl,kvQD0b !B1Lg<8c܅:j%PQ:q37]a)7F1lj a@∦v8b6m;R!jɛ`%;%pNbkS%@cbܱ8#EX'U1jG2#|w緜gv!{fYy{Z{9Ow0  #!q0(H*%)e%bcI.KTREb;R?\*WʒX * +R3Kw>|k7^t#7zקW!270 !Dq^KnMr9Ո+ akVSr  aM)|4üqܿ? m:SlY-8sn0w"%Фg8eq=(E?f=5oGWsX5[w{̛}_WWWW״B9ȯ{3 n1gqwt k2om1 qxu_fs a`{ #DΑ{^ p=nՅ֣<3XX!10G!pQfb8Lj'SBA׉;9Qo&1šTnSEdcR ܺu=j<)!3bM yX$DKEA`cF Z*~Ϋ5vC0m¥.QmgD~KXHG/`&.s/j3,M,TnHY,,5`]Oq-3BS܊MDL=20pթbEK,laN#lWWWWפz}oiOY:U:t>1|_>߾Hsel]m)~"o;o~n[g<,-kZK/Šg i[M[bj-"v;rvv3݉;`8 a?}bcyJ`[Fq gO&V1^³YnrtLT6b ~zIw'$!9+)+b.5JD8'yf FqET6 v0n ti枱v'Lb`C B8[/J=sksx:O F_c9\R1! ӤXӭ~D?V~J ɮs!L9;d,PMsۮZ)6|uZc] KHp= ^hc91ӼdMJϧM< y&ȪD#Y!s] :꼠K7Yoݗt R;r\dUyh ? R di헜rq$ny: <テ3#Ms{0 ^x㏼7ԮM]~~CZރF :T38"&kGPelgbGs͏OBC2n41%!X W1L=ĸCj;O9`9@%RFƉ-npnc+)k,I&v[D)N` CM̆(K;mƍt|ƥ2) ֔n>5 yZ~i6T/ C=I6M>-.QMyC]O\T.=VM{Cqqucj5Ł"Z#Nl n_xXѴZTmʶZg?K^8 n X1JReo]]]]]_*gNwֻ~ o <M|vPJhey?kxvGzJ>?1" /-[m{oWWWW׼6Mކ#nKT3iާqylYc!͆HĨ~ ;M0͚@^fޝ9{v= OnhxHo`ģr 뎱.2=莸Ҍ!5TOmb щ lԻk K!`lr8TS;#&f!q͍Fg gQ&TF"C<ٌbu‚$1lK y5nǼZ{ > ZoyԮFicA{γ[_KAGiqqP*ABn Y6tVo shIFoGĮFxˍ-.qq j!ݬ$vuDDoS8r,Е@4LEXKCsc~_hwٮy("|GO<Ճɧ#tc W}//X/>~!"G5 R[ 汷9 pccoWWWWWp҃u[wu'1mcqƇh1N1='Ei1*pJAeg KABMQp  Op.3ͧHťk> Tf2%]QlD~3Q^}%`e&q`FӘ]pKל~N1[kk2CZ T6I3;!&rӨ{!sYn Cr%2T%Ec:L- N#1o 4pXXSô2_n [zAk1 +6d,IɅ0uR6""5-洝X/\b3sQ,q~n5 F+\r FWCE~y2O :;194XksCu.c",\,פs1X;V H!۱/ 㭿V>֧0sᇐoۣ-0^~[~w;x걧0֤>yM}wWC={w;o!/0 liAJӄw/݇_WWWWWW#;܍۔ԀCP4c.an$ DnqKX2I#1#9 ־P㯸4 -oj#r𥒿.s9xܵpgȐfZ6ǹ^z#̲@fL aqͥ p- -my^!/r%pgdK:wU0lWuMc=: L6{cjK5 tuuuuuk?AR;qzxƌ: ZB maK R ܓQkvSIu`g^Ja%۶ݖ9-K/^&[[%J[ɶ IDAT\ׁ#"Zr&C(k~ݭ/ɡBxѫ_z^1UH;31Ž-{~?~ۻwć?0re4ӖҖzGWWWWWJkERfҌHӜk JS1̊`. 53 2bL&]E#[`曄cp\Լ4pqj2us1w#A#FВ)W]eq6}qyF_bmؘvN}BHQf4Y c6yHXyZ1`uAEY+-r11:R0~)׼0?,b7jj6æ8 JN j)|!"._!hӼ{1fӥl8ͼ?_abVK&5lA`"Mf]75˂m˼d)Uj]eXKd0Kr~MNK\`{Դ~jT?U~o]]x}!+m'Αy->}88>/N ?>28?9q>x?}7y{-f0l6B^\|!*p{]5Zt!n`sb 8'#YLxS2xf?Hn Wqbts607Wh8#S`D gu`åg{،LQaߟu{AS"tH19rAb40]mRX4<%p&cҙ2"i G0}ٷ&Ҙ֝X|w 4M~UW02祥g+JuXLE˲OݰK59BsaGX-ūx))UB†B=qUSWTMsEp[`Ӎ\RdB  l!{ HԹljP7ٌ-˗aP g3S )+/)8 y6[D!r!>#`o?yYkq|[Wzh7b ˃>,TQE7XqK#2N0ZQ1m3zV\+" Ղ_ˬAY9ؒS7#d;Y9R`V1a\^\0l]yN]9. ,/_`aaYi] z똳֯Yj9Pd꺃Kz??C?gO'\>OSEشj4szvhG88>]8{W}ϫx7? GGl7!؟9=9%~c;{N-O9?=g GG cCŸO>/5Zz7;}snNCi_n5CH%b7`9B(qD?zT-@AkB ˨lHƪ"BE4.bA ƥs~ #519D˰C3ƒ#dx&4/;!rOBu.ڢ <`KHbIa!LdšqhrxSrJ2@shqn f!M*cϏ,[ nRum5Ʈn ^V RKڗ]t˰+tLkЗl* 7DS BR!2_]QtRs{auiEXxdq݌#ecm{܈ս)_UV%$}`WWWWWVy?8O| |N;U<ؤxI i C1szl>gfa|#<P~//3X=oŷo~~->~Z#j>\kӆhD.v5m#b5'QE%dsс; cF4So2 Ɨ [ 4'D, jFҔFl1Wdu Ɛ[GRՐ9F\5&'S GVQ? cF\~hJ~?c,ۦaG1lrOˌĆ­ҽwͨ"'3˛ۈtBqMY&V{8bvkzӕ .,}hsluq:Kzn@Y9hfmSաG;jl.gl@qXyk,q߶,ĭa#.hS ``|{@O'ٿֻ~R5, Yyz@}ۺ&(7X[r#Flv΄q5bM8SUs5JYzSzx] gfւ.iKT K")lM2#Ks%N Œ(X.st5Qt^L quc2yD"q"cǀš##SN!+߶vMot' Ӗu%j44-mT76SZ!y,m`;b+r&,b0$>)O*^]xE*P-ȟk_Y[Bv]ޟCP_<Zglc8]]]]]]OGe=ƿF?O>qy4TwTr)v$2 w?nxz5@vuuuuu} 22d&NE4z6Wp ZE%۝RhNZ*+ZPV~]ZH [Q3".n4s[d_Wl x+%"SZJTê.v֥J0ZᕯV\73\3\cTyњ6 6Ǭ\u:.RiWWWWWWSԫy7?KOi_h~8L H{__;g?fL]]]]]]OWn:֨43<]H@rDPc&K\f @؀s6o# 92S8&\ o!se9}7! ;TS]!sӄ:$3g?Oe!88xyFZ+짉l12sTf`ZMuX5bl\J_Hl܆cD=؈avs1E^1r1OCox'?d^i-/6F w?n#o;w"6]]]]]]]yC/2 O5X{zsDgt>n"L-BLʼ?A9nl!BN|| tqdãqb?#NkkLؒNIh.=LN<ĈuVKw*1&e%(8]|ڂOI}D W89 %ꈵi?Ƒ"Xb8g{p/`ed&5aH-4$(ܯQ$g=ht81Fwq@dM<=,b̃ZJ>B+^{" yF-~:͐.d̖+a@;FsCL1-9HS"g㲨,3 V_k" :Z?$K{r.ˬeФ1.;,O+0M4P5ߑ@lQ혊<$[N|}, \NL6[o|?֟ٯw)K⏏.sjS$nx͟y ϕg\tuuuuuu}C |eVsre>͹S%φaH3BjŀрΐK6̚yIn(apLOtF!!Έ ;>~wt˵fs#~MK DO˘a8C⌱i_jFbm'ŹZɑ5%{mLOiG%Fs ѧل!bA~/3ӧ~Ď#~18v #F=a`{ .-Ie<ĸ'=8ws"g!bbVGDF*Ѽ+`]m#U_[QiiSEYϿ1`cy2'N#U[qe݁ʶ8j:/Xm[1ƕ/F .Cjtms/Fzۻ_w/?>௴ kTL{ oxx_v5tW*+ EYOˬ`ڢ`0:a#4LaŽ3dNtX" X{D$̨20ss9^a J#![=An`mA"|:$מМ cM0s0ǐJ5&ՃT F hVƓ4+=Ա'Tv[2+`0ρ zf1..dd p ;5vqF'j6ɴ& #"~&2 +شtKd6УM0m6%v\Qg=/-`ly_4, Ųr-Wnu\h^0f|d_,d+}(Zeh/!AG:ǜ? e Ϟڇxn'  g_\]]]]]]_B_{?:͹w=FM||P(ƈFn3㨻uU bӍ\%s0EK_1rY8F&ሳO=1d Tle\~6n~1j$hn"`1la*M>LLYK=Q֎ZdCj. !iΡ14.YfM[" 4ic5XZGcK%# ..rCK:AUp0ЮcWWWWWW'4. u/j~?0gOuki5~}K<nū0gwGg@9̔43psd1lPq`' iX7#6Ҁ0Ms98/͸#MZmRC P!dRcʥ8 ٲrKȺI"(]pm|cம/.>Я{xpzhILռN {}蕘jo{^׼s[WWWWWWחFW g|r."# ǭIpv\ae" fcb\2N#!V<~)*@%0wf )=~*,<ɧ>60SX9` 0.bFqY\ǹ_:L[!O L9Gasp٧&"bz$clJNT;&Z<ͩxL!,3Yi,N1xlj1n WHgĐqm1?XA}*1]5nܦ5H\ҫއ!!x|سgy$X#}R|XnI]@!F 4ktMk?9ԙ#r >CJ˩KD8e /)??Ȼn>;go0&,#F\?jLHfȸ+<z^+Gw\tuuuuuu}yBisIFĈ% EX&͠ ݄u8]dcjH4QX3tbgk(b,:T"tǗ(}1:#|OW2(PVjrIK&nN? ,Ǝ Dk!N mQq+~Rb[YEys~1hXz"Tc.еZ&78G Tg-d,oTBtpjn=hvQV.MDb1)spl bVT݋MLv1W"Q{#1Lنkg/BaNSW[KqMcCjp/}BgٱT(.%֜S3,cMJPϵUs9B]]]]]]_m@pOMWoVv;skAr,Z#4ghfmqjm)aW~1z.q~DyXn87η\BjKaz.}kmcK ysy0rlp}\$kSEj>6iS7D=Ä5;hfN+gŕ&Da6ACSy0ƃ+l6)rB6vĨCt 1d'ٌ# L!40q%x1Q0qp.:ۆ$Xqn)XLp"3'A|+&:1A-Ѵ 1qlJrc5-<ێGD(vsRYU;=8Jduwks %,q6r[^c\2 8TxYn;3 K \[1+ h+8ˇl{\zV:{^ИK:U%+ˬb,Kt[|b_ơ:Twخ)3ݵߓ\}Υ_ܐSlĔ߀05BJ q`P1 C,Agv'y T[ >0Od(M[s1ns;xph=Db6#T HB$h@lA#X뀈BcIM 5}*es.pUjL+uæYs2#KDG׎k{SPb[bҸjL+뇦Y{"V̴3D))_]O LLMVN@UOq-pJI 4\7 kmnMio)FY7ZW aei܏zxYD~6p]rRYGSs]pWWWWWWWWWWWWWW^ϼ|_'0O'I0{x@T08Bq DB\ns4̨ -0r؜F9X4ό<ϵx&% mOA+˹6SJ7amTSv):Mx y_g#npR5 t.صu^(f˽„L c"J %^H6:H3!G$ ٖN~!uEWY)H@ ҕ{V Dlv3,F\=!n ,7#m@Grۥv S, 骕Iqy'5U5tt}491a3:tRv64,7B$ )-Y[Kn+1p XB%jԹ+~F@T~*KID1F4I,f2Qx9q ng1~O{q1A%cŀ/10Msd K0ߐyZ0)# !( YX0 Xʨ҅ Z3X/zbb\{q΃M ,U27P$GIph[om[pIMVeʼnߴDk0Zlٖk0pʸvWc-Y]2OGJRֱdZc9\\ec`_82707ZsځytBXp==j0^͵]5X]so<0{0̣z`- (%N8.1V̐ a5+0hP%Qj69ld0 XY1P G:k_2lӨQQOÇK4,=>5[ fyH }<(Ǧ5%OÆQiðV9VfZ97&O5u0gژԺX`1&֔Ad苾 jiI’JE FLmmUn|نGpk-lu%YEd[g:q(0tl^V@VʋSnH!nH8w/78 % DzK|k7خq|SO *4 xv"2cap΁(XlBڡ*lwplC5)nipq:qN'~BqXJP1E hLBY0yT]Nz:әy*C9W<τ~N8#vH*QUi,& *f⶗غHb>lO30-!8s0c< RghE K3Cw}ҡC).''fh潯lG5k193d dvDQ fie$[kxs;>(l+1CHlmq:FX5텦奐Ĺ!@{sg02VڍSUZo|sJi` 1 JX08T,b s?KFr=A#xH4"G؃CC&n j9)jd9!dz}68NիWb bR kc1)- y?pc?%xVFe8KHƌU#0l![.{\y~.7o࣏~{=B!Vwޚh]\\1fH3YkYbl*H J.H@/ 8 8J`̓k|,-(d d A:_K妕9"k,1a2g7yZoƦpj^;󌫖u姵x ,L[w|֥g9:kmYY9ڷsNUQUP]U«@Ҕ1$$HbB/yM4~0$DҢRR)QO n^k933ƘsS\^=kk (ɏ1'Dgax7l%׏NJ[e;gk¥Pi}g?)F>Fmu}V$! z(cB Ku%#1޼aĥ@bu-!Fv"q\8wNc"]iY,ڧeo/Ǐ#=Dq$1v a5f=uA"լ<8bm,'vG-%Y9k,@1Dž% ;ۋG/>#GG Q3,,c"N@Ih羯?ccu;i \:2+q,_L#,WPV.z K,Π <ER !yaRE%Oj[}~ŵX&,cH;ub=r#s7Ǡ着NN5k]&m^ܹs|S_ǰb363Ъ=V>t!'1WyK>f2泎 ^*+ϷD6v 655555555555555=*v8Yju̲0IcQ7_ DMUSu!` t]uC(,Y 0ֱwJ!!Yz 1G`v﹋Ëg?w$:  7aE4AfJxج/Rm1< *`+{}ӡѧ}z;'84{䝍1_}6q[Y%֊KX 7EvAwSƤ-N]tӒ.Mh\sX sg,Xuŕg琋(pf'fQoijjjjjjjjjjjjjjz{;6?q8Ӓ]$&W| u8م܏%DJ@5i18ՊkԝSBR%¥9ŒĠ$<.Rz9=,'&ސs]kYRpy@0:BTWFKO&fLV6skV}ӉHmc[}sk`X7pHPyBkp[/9-l,xc%m <8VV玸f[}Ըs}M 1g0k\@ۦl}c׋{I#5+do>1w-.]ijjjjjjjjjjjjjjzu> ;C IDATHx$lcG9;%"@9ð`duZ(4M;O c#e N u oG1Cn$"Hi]=̬]gl¹} xP!a}Qʪo$ (na85ڡOQRf$\1p)dbm"Ɇg?\uxCckBX3AXt?`|y= DJ#\]pG0n[Lh u{]Wy7S 6${+' ]aS!bqM~v ^q]h$U眭UnX;78uK/ R,'3v$yO]iHu_c~͎*ljjjjjjjjjjjjjjzJHqV<0: 8!cwvBPgzsMl" #6%R X];Rؐ:AJO݌k8c@H8. ~ll⣸F݋oq6ye5E y%ڔb*n'Z5kt#^q7KaWGB`m"MF Xr-l Ɓ$ v׹̑2zHG1c5Rb`v-9־=I 0)IXfx}fb9Z:k1)akbq5ޠB>`_k݇{RZc8{ I0nɢeؒ$<_x~b2$<"9m؅t8gل DuyOJRpj41G ꈛ́]!1\f}vSW\MpPiv;ΠR^}; v'}rB7H}š3˹Թ-Wz~d+:yx_DcR=A<<(ovny42]k͢2Ne]rO-755555555555555=9JI|ua"&acN{ y=p8͒³ƺ_ B@y( c"F"/Q,cX?u#RR\Bf [aؐd)+?cJ]Ҹ 2`dDDG- $Nf,YG$# q`=O {} pt~p+5$̘dv)ëU8Y' JXG d<`pvG#!e@0r𑌂7E ldsNx{'㨦Frz[i5vd8HvmSn>17sf3V?S=>ŘutbsEz7|dW$ÖoZ0g=CIX]U`1]ŘJ>&tPS_ZsIʗ?,).q3c`J֚8Q9$D¸`|xg cR#!A9eD.pF-ÈZ'1בu8g}aOl A,8q$lc."td L1đd $,!$aWceLDt,c^څa(]cBq}wD$z]B6dWˆp:^Q p]TѓCXlsdv ,G+h*3nsλb,,x(Cz_Sr;pHD-H̫zQ9aXTS'Ɣ&0VJcUl&ƀus849?Kz>i]SaĚrˈ7`SSSSSSSSSSSSSSC{b9*!*<2S#Ր$9N 8gFp}Sd"fED[Lqn< oqp%I Hb@ԡka&A.z0D0:Ơd:b !d ;!D ~X?8^xsZ]NHGCLjE>x~`EF$DL!yT5 &R2<,iM4NmGbX:MXI Dǐ3c),ghr/Do1JqkO '~z⚛VQ_?{]: qLrWnS@Y^g1 8?=N+ŽKD7V vz[]UB]FH*.8cN; XyM}O֨422ҴYk>1zNnPAg5MMMMMMMMMMMMMMOY$H0czؐǘD^j>nHXdYlo3lw %# \Me[ICe>RX!SęK?AwI.a`f-+6Y#/'DxW^+@[ q/,DK8a0=1$ !g G1HĻD !D(8k1)HH89mPg0ùg]q Q6hHb/ QݡCP%: V?fs\uMq\NoM] : |I-_ + /#PmvIQFmlIV8d˵@Se)XLse8$ꈆ"P0R_</ԙgklN݅ )TV1Zoc#VBHțmXGL~yZYImat?_ƥc"90$kƬaA8w 0/Q2o{ sS$ $drzT1# \ "5"$DD.ݒ(=)&bfv@yBfdZL# 8ak]̺˷} [R7ɘeE֛G]p.uD"R}P2fē@>|IHQON cr<<={evO [#(uOWlx⦦'_c1!)!$?ً$#ݒd0YqfML, V51!Ā]v7LBdKRlG{Eu83(9b;:ު݅ŲvV𯰠L0v pL@ )݉@g AcR 6X]pz5} r2kQ9,.RVQrQcw G2w!8!I$d f j_#t߅SG^BX&C-3|d&gf}zv'Pa 92;uMp:"Mtլ2u ~v&:] [ϥB<;% #5[LqQ H_fg8~qk$1,!X3ҫ0 I(X+D+/H*;My<$nGv\%8pWlv>rzeDljd˛\<3;f"և/Kԕ]X49쒤S=gX܆1/(@*. DB]dmHj?un3t9WW !?/ro}[x_Λ歯/)'.WeDHPWwy+ƀ#z<1FDFR8cS`:Ƹ"%"+I\qvaq >,Kcp뗐'L{uity-a}GIE0N=NU! tK8E+1hr5 KG%/~!q/00ce3"R731 Kr4Mrt]8W51(t+,l)ƀd< g#FvH i6@JBX88ف%)3`DL]-cj;zq !`zei6 c)Z9J›Gl ̪`̈NHaorM|u41=_Yy%uiNKvz\i*%1=bvS=]T)9nx`"fE9h&b@t{yYV9^̙3\s5E/e/{Y^>}t媫joJ 1n;b`6,v$&#)[%i}aΒb#vvw!.0 _#8!u/aE FI[XӋ X s-X.vƓ$3# }%8V ӗhfd9B ګh"B!mSW'J$ƱZo;e:iDi<; I#pV|C]4nֈHk%;EvA:|1ew1 FIi&<=xcg_z)"Gk~e)>}Qw uYw5Oo4s [CN܎,j a P5+bLۏz kL4fljjjj U[u9 DZ]ĦLB1HH#XKf/֤4_ܿJሣ %˝ JcScaEouaqgF!l]R $I\ k36l5/m6!ֺ9 +[)K}kT9=nI)25g :Yɭ7392 csh^kO}dџ+鼦YdLB Wv6txggRv('=Aok1{UKd骛\~z%.\wlorK0l>*𴎔>Ys}ڎDLrs0}GpZg\/ОXuic3;cvޯhQlNƦK/^:u޾{wb?ٳgy衇l6g=畯|tse=_k/ry<x7|$#'g?˃>pn&~G+)|5^kO~y< @\uU<5y \sMfijjjjԻNYb`C(9$Dq` ;{I֓Oqc?c\{;?nfnᆭc|#oo|#|3/}kC~^{-oxxs.|K_y衇x 73MtY(b1nap0t#60:$8 x "W)͆H뺮'#nfG@Vs~Fi cw|Hw%b31P-$Qxٴ+ABZW1~cq6-#9$rOb)fql1aJD{5NR1 rm>\R媁̪c0UYkϫ#ǝLOrY@d Q).KtgTN"IRY[XqMBcEDA>بhgBH.xU1쀳7EN<R]ͨk%s;gdf zO¸d,6W$$Nq[-)#o uRA:0;]JT)!)<}c[t&555555=U?aOO >pmqܹ}+W,KΜ9-OOe*Gz=]xK_OO?W'~W~kFq:8^3ޛf^qppsӧO󲗽wo}45555]6*?O XYHKR1]H0]+eowNG6bX9w厞nA7 b0~KQj`"y4ՌUQ)1s)!TQL{ " -z~k"{?[5eZTOowݖ L9f>wealBV#޻ 1d,zi %E,zRqʮW\.++яHDyrX`N(Vp 9$:_\Z^K"/┪9iDZ +ʥiVZ$%S$ 1cu'Pg;'1, "a  Xw 7s}uMC*fkdL^-V3%3,6./FnV@#7p7x#7xc9~ocϟS~Oto>gkx_IÏȏ}|͞kZǻ{SN;;ljjjj4Ze؅Q4*1d$qn`d`8@8 {K丩ul@tQ89?`sqS9:0G{Rql/b] kMj޻iY5kg VAYW9cadX^u]1Z&-8K:-̦8KW`{ߋ1L`d{B}RY]y{!>FuŞX 1Mkǥ|BTeFq5S^׼[n?XviģDQ1ݔƂɀ+x0^QN So_@ 6/c&<5X2r><Ͱ/!M}'W'=bNt(pXࠒev'N­f`j 8h̰O|f"W_}5O咾aVt'w|믿w=k{qW\rӧOoˏH+ p]?Œ5isPDsÀG,vwY40GaMF[MBqXgg׳ t96X-|8F3C i7 %Do/yMݴ,"` eOBc=|exb;2#>_4L>Ͼ1Gil.>kIV_9`,UoZu ÀI@B@k/0Po/k$Cx\qm_Arni|c6d{Wb֠G:bfPr0_Mԭ7̺ixˡf p \XtszO¼ՖYޛ742}N(mY[GtZIOo-' b>Xb-̷-9R(>o<%-m-ᔸ^ǶtyӼuu{}yys=!O/| /2{x+)u]wmJou ðX}}kn;3gwn|~/]wݷ\njjjjjz*Kn` w:x1g )lq~y a}~ ְ^2.B"Ƃ1 !*xpݝۙjؖl׌yg b++$ƈ.5լ58,\oǑ!l 8{W|=7ɡWjHaؼA^y\c QbMWbuX2݃"8tc}ݒiu͚b@ 9b4p9c~RjZqw f6Pg Z?Ns(}KwO :ٰ~Zȕk˘AJ ۱BLr) Mug#qn\_LReurKǸlݾ"c.ٜ"MMMMMMM7M7h?ٳgG?WUx{ooWGqV^ǥVw׿A%DBvM=yMTXvY"36ʊn+n꺛}3EɑazXo̹n#9ZLMb^..pty8R/l5Y~פV6^.MMMMMM㵯}-wq{oN~cۿf}3 ¶r}xի^ū^*>n6>Zۿ[ԯ755555=啄aذG/H)(lj+ %j<)n,;9gp@0t^BMylqrAԑrպ2n֏u;d_%`\ƌSsqL&P)8Iq@d}^E&R Wfv+VXUUUUҩuo/x?8r'}ѩq+Ď;==\}ٸz3~Fkuݪ{クkuuxߏ>w9ר\UUUUUu.>0ZwMӂ1FN@>u'84 333G4z<<'BӘd"m #xhxz# E.Ak!j cvѹغu}Ɖ֭[g?۷(n6,//c׮]7s97n/eh4|wwyٳ{L&lݺ\pmxs[i=" mF@.xesy~z9F#8Σvޅ;Q ((ay: c j0h8ϳB;j``ii'w0L;߃`Hр g9CJlJk\Vr)Innqg!:gJ2v\2ٿ ϒއ{lMkA*d+K31$AORlR=AI"Jhp?g%4qpc@1^Bj ([i%윋eJ5ѕWSǂ>Z3zh,:ܠ&7pNrmѰ2:)FtnpF]UFUQ אPƙv䐎]Z4֯_={\XU"!kQ|h}* PI WjW`UUUUգOwwSnl۶ _~e8SW}cF|Ď;O~rPJ3> /O~u][q9 vZo矏Ѣ/~qw?nDq_ SUUUUQ9Xg-h`n 3c2Yl߱(P DЍyE)@+P`ƣT-@fitZtY}h;11wXTH+$2>r;7w<#=CIMN#·990dEjgrNXfG" p֦( xx-6ϸif`"s2 (>,C*O:°2"n+-!Sv4OKۯMa]\ IDATu!ﲑX;, |h/nJnL_c8$DyRnRe^7$'Jعs'{s&P , D|ȪG'oo7x#~{2BFظq#:(<'xͺpI'oo/?}vLSbÆ _5vi8#5qUW6oߎ6l؀g<ؼy36nܘ .~4ᬵ1oy[}]wڵ }ߣm[r!x򓟌>xXQUjF-i`4̀E7ك:tEӠ{&v *5jc`.:S330F1#718f;Ќf˫130]^cFPʠwlFJ]l2y69Ldy e. D t:MLK nD1m rӇnǘ6-݄MӠlCb3q!:gۅ|mଁKrdž6zc3h-#Md3K,d{0Ks r En0&++~$ovԉ  cɱe١/{ ] &N@c*PT֎ϦcXqv.乃ᕥ5I kgHt.Ga*2d}s}:h@b:ف2#f-wmY:`H+:4 ɧBh*=KpEF'"mTӢ1̿1-Oj`Fsb!Ś;ƴJɐxm }|~h"Gq!햝%i&ߵ֢iLWʯ}iVڶM&. n)Eu@0,GE+Кt&H ,кM J#d+DqyVaι˟sgs3$V)bs0MEl!(YvŅNFKFN60Npg.~>XVIyQx(c*<*gL!U?gaYJ\\|#EF>0U ϗ,(XvФa`yq7vٙ3k׌a)8LL%'K)XviS5 9̎ 0vE,u%F(B3^8_͹+&AIҎT1@g5M30XIVvIH2E%F^NRRl {6OZkt]bXG80$6Mp 8Ѷ &-OM^a튨jBkkXġsȉuqHP*PCjsc7Q(O\[y}R̿υ$ x`oѝG+fEd̮J<6yƢkAyXB)?KEЀbHpWUUUUUUUUUUUUUUx:n  VTtMZ,/.{wЎZ46v9u}ri ]pZy6-aXhQ[RӅ<7m qdNAA)hrHM!q ""J4Z""} 5q8JMƠd1YhfGd=R1u2c*Ƙ8[SyIQBk]vo.tƌa(s.\e8 ohM1R>Z.LUvċf 0 Y"Ur PqXaXBojˎ9EŐ 2C6g\357k9ˍ>/Ǧ=y8R3B&:Kqc>Oc9u~X2(brvEMKb>\VUUUUUUUUUUUUUU2l0wsX,Cz,w=v-M`>x8g0p uDRaEj`*ul\:Fסl\FK Z.gCfeZA%4_ V\}bo#K\aD/Af]ˢ-2-ʊ.x P)?t o;i^"q2cO>d<9~Ϥq'`(1(FalQ%p꘶K"?pJ4h,Z=FwSvi%t´-v-,a]0mقn?1GEVnJ6 HvP rHNM`t_qu|U^lx qYN:k>92sGØM Cr cжbA0uS4M[)j܊v}'iLl2SH%s5 Oy (K1 b  SBY Id{9yn Ex",B '\~ ⷾ-J%t<19+[R449|\< 2Re'-!D۸E|N9N ˛#YT(EsWK(D\.Jn?@ Hfh 0u|3)KW dKXVpz- ilz!8d<|61ff 2m9[PDMEuSaB((==MDP'RqXq T\{Y myzT 4Mb%syz8gSGX*O;Lr: |rqըF4)^\Bͮ#ČŻm;\RM1SJM@0O."!q[JEZTq,MŊclr7@N2=qp8O؂ꊂa\5C:UCT"X?[%b1rV?d|fXF1.bDժ6Jmf1a`Zu!`4jcAJڔr5ǡ]'*b9 ZD{e_9ddKdsVTDCr¥OHJ7,J1TOJRZ7Ec/$ Z'ŚZ^ك X/\:\10# =ʈp T*:W~#+{:LqɜHZ$GUzm*ceTXAkqU݆VUUUUUUUUUUUUU46-Z=bn 4wt YxXah)$ ,#N'c ְ1Kk\kz(cyq7ذԌF0]bF٢EW%7`A(LmZ+4MyҬl?)琸1 cs f۶m 5'gF6$E|ŸdM d-31 M-HA+*uo&C 38 N2-0@4/MHq_HPƉ2;@D@X-qBi/DeEnphYraX^J΋nFw!W~> [\yCe?@EcI1>QZf2sAQRؐrncN%˴ ^𷪪wЪRìGصN,oyuP!4f> 0Zsahg8 :m3ZYnm3\? hy';)n!pz|Rơuk')U,P9E\73CnP@57 K=0pQtI_Kwy X(wޢ13ppP1S٬Je;(d|1v@`e12J+YGDJ J0)70Zp_h4) Bvb8zx>DQaqqHr]Rv0),D:m+ZV|C뢛Ə\w-x2D!>g7^c)Fi#}q!]'&&.a1|X=652ѩXʼn :vʨL1UGyza >bXfm&\5r!nf vR 2!1R  ) *aeЩ||^e7$+-HY=PMc?vu 3`n4! 9 M(_zcZ~N QI/ /S!f QbB,Š̾B2YiLyP @cF0FsӲ&: 6z?sq 2^v :k^vL$/luNj t },0pC@UvpYqu> c+3)lBv$h*aX'K/8M?@dv"t>y^PW2^뗜+֪,F)8Iؽ{r-cn?#ECE`UUUUUUUUUUUUUUՁ1!,sxA0333PJaY[NH7J;=TkG*{ v+gbHFhSTj0`8 8. U-\JRHz;EB4bb7@iRH~qt&s.L09?He&+[rml!I癸Oh%xv7OZ/GĪ|T 4q{cGV&x=  *3톰"P GАr4O\8!C+ϯD!" R!}R&/|Cf|>+ۍ_Ė\@.Y]0PCq%曯KsBtq!nuZrΟR إ(B0S O~^|.2PCܜ{lWUUUUUUUUUUUUUU@0 {|5k3efn}W0Z#x3069aTk4 AQˑ@@ bc- { v,-Xkc 2<Ij2c8e e tDjt69,G{=G=V\`$"hr9GiR[tr f"͚qM` )xBe0B4b[4iTIL]u>JX -&W faXd4ӄ|rr᤭6]V0Rʛ!%">aqlWȠEsqjTB|!%7$Xbzfz"3n^ΔYXI!ءI eam՘8)RdfAsY ;/f&! FVUUUUUUUUUUUUUUX)&Ό0nФkY^Dz|XNG#.}E(-w80vU~F(c@J%Q4ATXADp֡ s]dy(\8PS9v)K3aX o?f<˨pECu](N2{PZ8g>+ Į|,)O1Fc9u=@,~ hۆ@hj9N396ӂil' G^5Ng07`KrɦJYYQW >@㛡F>T>,ʖ`~nl^ S*ąTHk#vVj=&2+4h;+1|l]lUUUUUUUUUUUUU֚h ~cbCAZ:ƌA 3"ށL@h m[f{_CIr7AC] βд loel\}eb=3hC`29m0]  (@t*B%p_HLZ;_]( 4MӾڶA,R, @a(RJ8[0i =Z"4 EoȢC0pȞ=דN` 82|"C'jxT|jM.X>0/&VdC OKïmF R0AiR4l1G~eᰰDE[q1lAg~,E%79x}5rca(2*YO2f[l_6`hfUUUUUUUUUUUUUUՁxg\_H|14F(27׋בO p*&&Ŧ <6l\3pG2_~P9!;,V{i$R!> qTjj:XLށ:h"Y4 Kw%4":1u]*&7"")\m{8'{xP ; 5{EhB nyZ``F vCiJ0 GU]ZsfS13FQ \\*#x1G x7$cۋøh CrQɀeG01+f."7CA@l4i\It_^@2`Nr\˅3˖V,BUAiH)LJLs9c8k ཉE(#!dSi6t8 3.'AIF'M¼}D:<J\^Cmu\oOyWqX.[UUUUUUUUUUUUUuf|$H)ڠ%ŮY,..!֢Gc B?`e PFEG1Nf1K cc :<ﮛƦ]|X9PӠifRhhfA]@?YuÀ=b,pNM4VMzty_A#/ES.fޢFo.f9JbMt0tSM2jUA[0|Gb蝃7>3Ik}-_ e9f!bWnË܆CÍR̭(݊qvBc,`Vus F;,PXQ<#PBJdUqET8Q^-*< u,@q_A!׃m{K}:u7㢋.%\kec~~AxxSr=y=ދø1q`G."|s ^Y$~<?__>osu;<|e]׏g=YXf^ׇUUUUvzɴt =j8cXJAi-9q` z9.lZLt%1v4 &y t"h@)\C7 pPCú&5z |:4f>5Q} R*C?KӮ˱v2 *K⽏i5XsC6pCMf[d (r:r)[ҌľoLyreFzeC*^ Hܢ r꣓.C1.f;$ɐE PBSF,7p5 ش7MC\-Z98%,B4-ٲ|Dbb0+.qTg;XSB6VUUUs=z*7`nn;vW^x{ރ'< /o=?R׾~<8C:k}̤_':׽n_P?ֲWAݔgI+@i~5P!:4MRFL)u5sxbA3xe2`,5׭l7A!%pheW )`֌fL):4O]%h54@n( ݌7BF4,7M)i҈3@h8# ׸b`a,#leDX: m4MGw@_3+(7"͐} $#ndQy6uv1$M^I^L;9|<_ٮ:`ǥX1!1MSVUU׾M6}zOݴi=X|?㎇GJ OqI'{hYYeffJ)mhxzm'=Ilh-~=Ld 3m g=r23P@cѰ`=P (2ڶOY.f `xkњvi7èfle' m!>:W֥JWJ>UUUfggW]ƛv<~7~gq}{_q>еΝ;q[n >}Mx;/v-[Wrkx8{/^ߟV#@kYUUU1]ƣt cبKS' vd0,)(V|d!J)vEau)htA=v/ABi<v4i4hg?#yi'PƓ qJC-XSJa4a:SP b4X^i {M*+@YZel*5)D/.(/0GR(`Df9O8õ켣l㯇b.s6`xf4<'gM, t|i-e-k' e4猺s}tCghY`a\ЮvKY^q+Jο`)g?͛7)}yӞnmb=mۆ]v|3ݻk֬u].8?z׻{n>={>ߗ{/] ?#oߎ??Æ pW;Ϊ|_ڟJ`߶m?|l޼>/=q_5uAFMeZxRhGcQUNf8:ҚI6PZv.S$ y8S P4ayPt#Ds#( 1Ȧ3mZ~FYf<,tzA63(;9R pɥ0Ӱq,cA5J]%)[cLUseukMk M# j@@'Bsmr^n<ɸyW ѠPcu7C'{"P/"rXq( }yVDf976LJ_lVB1hٖP0D ùD2,Z6@lQk1Ƥ:vڷoߎdO>9AE8S;Spoo~Zg>XXX׿uE/JkyI'a֭򗿌ū ھg?ݖ-[g>W_}5oߞ`ڵkqQGa͛q5ছnJh}׽(@<+w-;w7ߌ:+E<_;ڗӃ~aap 'E/zACxߩUڵس8 ,-Y\i(J|B~-{ 3cW)# ^)"~pɈ E$ى"2ʍxg"7mS=t$I&,5?wh(8RbR \I"G܄9t4Y"hۖٱ\EO`P7(0 +l+hd:T'H_y *(r͆QTM\,r0#q*-H0=W@s1خKē/Jme&WX#[F1-d~ /G|U)#%H$E轍6T&)`i!HDZs`<|__y{~_~s=;EJs1ؾ};ٳj͝w Hh5k`qq!_˃վaO|'#۶m{H= wy'v{8裓 p˖-8?6l؀>Uiii!CYk~ 'GY0~9\pظq#^4q^yx߸o}{ߩUSC:AL-|lUhA =pANA+gK?cloiys6kچӅJ#}e`1)ˠ8L1!ؔn$"!]x.<J}?hX.ilhX~@"4&iAi5pgfVw)}(Į1`:n RmHDV`jsrS)Ch<<1jb&e#=.8$0ǰQw?pd%UdP z8$R}'7B..ˈ3C=v7<މY!X+;!(W)}` Ԋ)?e m²eUUU.l޼w}7>/ƛfڵ }h/,,Xh_Y^^V8J0Pj_w_җ|^z)qgSOvys|۷o<կ~5`2`GJpX~jƍشin6lܸw}7>hs1pinoomnv\~;~&Z\ys\1~yVZأhv0<^<}t:G1׆gU@TUUU*ib;Llӎ,]ӘC۶}1tM1 LV1kzvX1giD&+td9RPH杇PFႃrY@+L!0]\`L>i EƁ\*0FC)z cpGuOT4XyQSp5X]A5 EX*h{K!N$0amK,(+ϛ3VsdX(/fS9teYn?P-rIgkg< -CM1lR&>Sir+o)B^{!aL[賬ypDōsΊk޻ :n\sӦM8q7 Wg%tm&_ʵc/})^җ?9J??nwqaÆ >ιctmɟ{;~GnذGufffp1ࢋ.®]}T|#8cw0/>݃GY$dD_ϺnGկ~5>K.+^=ףsASUUU+S0p.ih"@rEq("ft#͸16Ay.Vc"\jꕈB"@q'y fZg{4um5<ôwKXZ^@ӌ0MT ;LaA]]DhN;e bĜ%?c:bl&f$Qt̊s]c;[^#Mg`јL;4d|3c8KAF#<Ӳ,&Qɱ'Ol8Q)FZBA&9:ʘVsunTy{sƌTN ND;toMVWy8^kbE먉/)U9 SC7@ ( 8WI Zl-[]Uu-v%xs ExN뛭}H: ڳgOo4u]rQGm۶aڵ>Pٗmhl۶ _=?O%y8`"?s}RtgeӦMimuߺuY߷=q?C\}xPLzTUUU*T B!'(Ԥ5 a/6%Jsxz w[AI"JAFc\ׁ] zôMF9@蜃1-lסi LSh&5Rl )AZNaDy?\DƲ)vU }֨<%cz` 4Ff3L@")(U)$Zn3$i(yؖ[ežExdz}694P@Ҷ-PJDϏ@&^ m"~">{;yJ3i`mm78,n\B w8C3 ӽ!WfYޡm[UUujnnr .ܹ'pfggsN|_֭[70q__a}ؽ{7.R5/NW\M6ᱏ},~3 :,;v7ވ%حtQG᪫ӟZ]w^`۶m?{Vg}RtgC$\~8C177j9]z;o{<}Hnioħ>)}p|K.W\q.}sUUU(gK USsJkܻg]=.cBK6ڀ :1q,@!ޒ8: AqCua:U0 FCAd,nk֣s{eWY\kKB !& XH*|e(ĂңR(*JX*;RVDE@E0|Ę;{9.cdFL^"^@i 0%a*1r$x=5%FP08hm0 [n>wZpw6}}p+!xXűi͇P\mam2XfI KI1@;+ MS0;.¥,ko; 9~/TA"Ү+ynZą `1ehHͺlBq#X1+_y>K{Fhג ?s?W g}Cx׻ޅ׾8'XwGr-Wu=ix_~?5'ױwoyܽ{⤓N¾}piM>wcXK/ŁgO4^O|~X,v_m 'o}L<)OW^;|_r|ӟƧ?ip 8q|v\tE>{\|׾G>??bYg>җmhz{Wxߎ~}}{_Mگ Rl(xG@"!*F[D;e/c5O8PMQ+$P xbH H!YAK|6G ~L P8&ŵ91j|D 8Dfj aHZ#2b&y^܃t9g"@ɘp3ǬU04-,balc?O%vmf ($ڒ_En4ҊA")VEyO&fF]-7C7j K'LHuuko?mፓ/G f`h9J] tl,-)`26 W_WuY P,Bؤ4: cz.=S_|1M7~8tEmo{[߈v>%۝ P$ @.vF9 ,HPLfX/Á̓x`0V/@0i)DpÀ Yy!eE V[2m0$EE7 eH1b\ޏb!gkEz €JILp>y465ϴ0rj1a=\R\m8Zt n8Iq\ڢ4LyRfظ)]4ƺ@'@V\tV " Ik@iy*zC.W* dV(m"mE2,{&w[h05-aӽ15=ќɌv)Qn}^ӯ"پG.Z]٭)nV G5]]]]]]ߝ677qw x ^7L7pwUT`P5JQS Z2cF떛 Hk(DM)`L\r(d@6)W{1n :Ds *;BLH6HqGhY`S-SmZ%x@+ĥ+~'!9.$45p O%<gU`I~ ic`%.<3)Xmn82;N6] .}>_>ceojoK-57˖=h}J>|>!)Q3K`xS.]<.څ|[dg!ޛCX[bP`]DȱK F((υ-c~6>͏M(՘2SIY*ǭ6r 0cJes8!O۝A{@WbšSiT%T\ :p+cjVM,ߴƁ+<.Bd N9nCvQ6:Nn$C6]4HFL 7r X`EҮn>4ӚUu{6G%6#um| u'$[k<JK,B+Ua_e0Բi3~SJpƀB8jm qD ƧgpSi$Ҵ5MԬ(<) !b7s s &|\b B<oAYcFC0_߃|qU~TٓBtdEpuu<&/Bvyk@MbZ c4ƚL 1oRЈs߀q;b,#qŐ c!Dlnސkun:niR ?^cgxFT5L1(.PjGwwM Q[] =w}ap0Av( KO7Ĭ+knBpV=2/Qmaw\tvʞB}ɕY)L N4_@5-D>r} nRR N*ٶ4wuuuuuuuuuuuuuu99#4XMAloJ,b I)ؙ` k`i0 !Vx֠uRˌ@LJ)1sY.X[ x2kMMgHqy8@bhf$~_[QdqڵmV#`M?j :/6:D_PסKHRתac`ë/jG4GoS'aWWWWWWWWWWWWWWב֡27N58Pw'Q0βO>c-rÄa-#|6C ǐJms8l2f`4|HHqD㸄44T"$Jp}hX6/e/l:3YkMU2#6|d6 Ð#:GܶO銨 TJAяycj"Z$gZhYދq5==Ƽ@\f\Ѻ*\DHi.B1F&)q<7Q8騸QEj[čmĄ C>&Wvö&j-9 Qiq H)kcKȕjԲ<,1iS@(Ҩ%ᔓ̴9{PuVA-%K%@De[->i)%a6zRSyy '75(&v bJ/U 9r`صhEJKİ6! p֡C'@s}Y &H LkK<ے]ι_B`$GQIZgm)s{sh-x5Bo&h+aeNuι&ZsOЉ\@EUn;bO'.,QJi%E(shV" J?Vc\ζIoBsns#4ss|$N=մ$xO9<JOU܀՞)rRu(WaiSq [J%rP^j5tK1MHcch#D޳ˌ݄>`>9Z`ҘXk1 3y4Z^bF8G_ $? !$1  (0ZݗRrsچPqK ?$M11t jr_Q\hjWXvT ]+qMFWЬ%З MnZQ @mnP(W el*AbOMVN͔-&%&RjKJ ɔ=$R J-}-C.)Gsf@mF\=VTIɤsŠ'D8[{}G;lWWWWWWWWWWWWWף@ʓsUZvɟQbO۱R3P\=c,b(EW@lWWWWWWWWWWWWWWבRfws((C&g]aRR!c68!e7Z3HcFH q ]g&"PJ@'0J!ം58slnֈ٥WV[@plkk c`wvi6lr:Rg֦ STaCul68ZX dԝc1Zp9O011 ~H(ʣ,REKfY ]5U']lәoP\R<#/%nL3Ns!j 7H[M``0@Mr LyPVї}uShf\ԡ'U)IZnfkSdʵSq:5)Вӱ uP`-Jsh@YJR\*-l^S-hy =S 1q Tj Q-(S@Bĸ\bs@`]=|`?6xZ^;Q1$ҀqH!jfbª>^n[[plV]MU Hk:S"}JO W.hԞZ k}jm8qÈafKN>B@9jiFe&m*|ғU;Y\9L]əz,vY&r'a+_+˱bU8 ְ$`y/T8'e.#c%i,Mf2$(9qb Ȅe&/ +UGlBzhJB5 "ՔumoJc2Qf1-eu 3[nDi6I]6e( ;fׇ2f}n}R¯3jkrL9%SQQȊ !!% wrA1`sk3(`4 MIJ`57![-Zm O- b"ĘIAPZX $bxp4+@k729,ÌmKe!9]\wBʚx6(84ZяPJ9WbmmlX~64iBf?Hͨ=$@%(e{cq7MxjmrUrj"ytB*@5kQ0PP)BQK[x?bX#(ET\v ,k [,O NkWC(1L9rD:hԉ cmrafpYۄu꼷ęUWKuLqW]eu75E#ΤX ƕ]wݷ2W@~Y!MWysi!ZkXWZT:؉˜Rb) RneAPM@1lEgLJm0mCm巄z{J%CʈF|ĄEcȑU4%r6z:x.hXȱ8D"RJ!"qZ")`k\bc TGε cf=G9B]C0XR25+mSNq2n{߰\R׶.kk!98=ZA){RG)85-ŶsӢfVB7I$> IDAT-י\8 f g9v&M,"kH}57fiT 9Ugd*ͺ?%9o_[KFĖ*j |ewtEe&oRDsLE :*s4C1je8bIZ 4#EsmHc}TƗYc`.YDq*l :1E$DrRA7)BL\TC%6 wu ,_<301BA 0ǟKKijy\,e)f!ڦyGk g]8XP'bӣlDߋ 2 쾋M{,6V(Gq58R@-Pj שhqIkV"ÐH%-$jX'g|U7wZ~UIӶa&*?N $$ 4/;Mc4ӂn[b>?r\l909OJcnǯ*UueZih[(6P`ҺAxKyĠ5,nP,x_| (m@:ڒX; 8dCbl=ആ!=@JqE1 b Na(q§b MC@ JB+&-cx-te8 lyZXcї5 oi[!Yl,Cn00f[gA42H.R;/29N\⩋FsI~(U^p %n}m%-(YS|^!xU0THYeZl"Җc!u =ZuWX܈&>˱꽈ZkĂ :LhfGZ:3 #(%<PǪln.8e!K(gEʠq*$$5@ ߧR87`ӏXz "l0P+hEa @)¸@kT&hHqAT\{!I2R 84둈bU%J3=s0`GX˦07e:3,51 ^Q` ^UjydrĐ(;ͲShbZRfRQo1 M za`kJ9H Z<p:Ol-&h&XC[8X2 eԄ%")r4Vi{r MqJU4`*Fdۇ"N*:*8&/R5\.yrs8X7CHˆD)Z s4K8 f Qeh$X$RJa\0 [wCXfF 0B>ֈ0B$kۡ M[ż5a-y}ِQ'T+k(%*J'q:2P AXE[J9ڔ(ɥ#0FJ|QDb3RH)d`T .9*Po&%e Q(aq_(E=Ӝ6V`YXӜKHb:8s|IɌ)l#kA|^^yM>T(t*Z^8sĚaR4)'e% {]W{]mWWWWWWWWWWWWWWבwt.؂ V) # 4 L [[HD G/|LF#\J <2x@"0>x(~#nRcڦbJk|PRfq.%$ k%5[[HoDa7%gBLZوZ幀#*kZs2?2"DZ?; d:gӤ=y1yw1!G{8tX)Hh'%w3iOɼ+T<ːEvHmn.$e!5U%þrSU7 ɪglZ>4!{ʼnIˏmTiiN`뮔Mvuuuuuuuuuuuuu=J@1Ad#.ΰgR;`w \;Xh%xԎ< GhBD } ∴0bwewAZ:Lҏ s20*$D4x5(d18e^ߔ딲D9vR"PN`sm+hDZ +8qJ fÐc*$1bPxΝ]̉bb<+ 07L O$,GݴK7A-IV\%ZZXI{S\pfzyX"hke Hm`m]R,]8?-  kQt'$b>qaJ*pP~hzz?~?GsAXobQkرc> 4e{vFG-ְgn(ha@JCi.Zap;w`}6 R@;p48MT:dmevd@ZY.$ABKvPh( Ә~stZ["\xA!b kqKaXs\Jgr6e`6B"Zkh=).hA]J-%9:tT e]1.]*U[Yz1n9+G`-P0:ysbɛ+($y$IoErľ}ף_h޹',泾!]]]]]]]X)g0JQÌABcGh˯AL82Ƀwc&X/xߎ 7JHXXkJ[-;` [alȽ׌PZ! 9!@!Sm`—/9J ٜ.Ո)*<܄9IR}sn[XSLے-1J+c721y.kXbbkّ]uzɌBqt(De!'mCn|q4&,@n7~f( on 1ahl96rdKi q VAt*Șt7_6R:]{5.u BeJ綈ʜ@-Rv4l]]]]]GV㺯܄'=O>Lv=5w{?ƛqfuuuuuuu=B1pHIa 9cB 9ʯdq#J[@Ʋi9PbľAa`A"~ gۥ@edyYf0sk:ܿ>I-; P"JH1q rJEM9p Fa vR0•q,Zl$?kA5F?UҮ KDtEk)&(@0 C<6Ub*,xRV($3Ҍ;j@U!W6NŭsLrmӮ0X҄Fd ҊS 2ۮ-J4-22|:@FMy5%R>ɚUy`jJ̺B@>ɬ&AJ%hRnB2WPzjJ/ ]X_['PN,0.13ccq)2"^7`B"m,"%nɏ rXu rUB Iú~bj\kGU^T"٬85O Z,$Ĥa5CZ 5cQnW~%(ףR .q,`1C٩P |5%׺y$~OO&Lc?T⢋+ )5ʐע5Fxy4-'ef)P(GC^QPF}i&{bgiUNMX^XHkmw)NlzPRLV*5Wtqzth߃qܱG=<7E]pJa}9{ x<[R5(%D?(Eޅv܅8("lx & 6@k@&Ȍ9a>GbVД?.sq {AV0HVH1 )Z(x(1B(~ըo>,>@9ҡdv`;Pؕpb CyԸZ̍M 0@OFQ %ÔE&VM=4dߺ*TKMBJ,8B+ų5HJC;HJ#Rìie e#MX 13 %UR3, pq)=&Ð| !MK_qdUYD`0 34(!Az  Sp0kwfR\E8qJTz, 1gkj4ƈ#LNjca1xr۶_6PYڹZ ;8mǦ4vFW]()),;E+nLfPųtvӆ_ZB9FqfbCn#c\h ,47_JT9>ng8, 8 o Tgıo]W<8DY>k}}?s&N;4|3Yg۷KC-IL ? J+XkQ{s(QL0IsofH &,s>繃 sD @qcck c9bFs 3 :1$%uԚ1b|gTX6*q@4c b=rMr%}:'')NZL{9Ʊ2sĈ[Y)q#HO\Ӝ( ͵3Fb$+!&m`8R+06r^x)Պe= `RSv4;o+` =CYgspFs(AA@Te*$BOyHr/Z+? Ta]z3>6f͹N$H*aha,K@xt#I X-\ 1Dk[*@1\f6\ 4M|W bG,(|6"ie-qSqf )L}e!w@)F[+˯dy ̕R ~N[Z@V 6f,5dPc=Y*E!ƸLk&e*- Uf2ͷ1յ{uz)1#J| [VDDX[[+K/g{˿N8{<\qN: Ak|Moz=\e]?X[[8?Z^x!=Xٳgy&>ݻqEo|#^\xxғݻw}nU}\~X__ 70 .s vލ?}pg`Xc//M˪u;wv܉]v%/y 9|ӟE]O<;:ލ7ވ:N=T|i]]]]]G\\B8 `dр A<?8xIQnM18s,;/98GRj̲O_IeGl3 6 p %%J)a) ʳmJP(2rÀF|Ieh72.K@LvjZT-{q֕kT\DTCO=IZ @,6+,ś̀ P'xB@lW % DD9X.ATT!ZW[ Mĵ: Un:aAJ, TrΘa[+SnB݈yPZ0y ֡YDˮ SƱCh,%"]]]]]m۷ /,fx{ރ7 x; _vm'qx_s=]w9?cyW^?ꪫ&{_o\p.b۷^{-o. q}+_ NĹ瞋o|?R^:s|y睇n ___8q9+/}Kӟoy .wկ⮻«^*s97o~񶷽 <:s=xӛtc}'v{8kWU8x ztM8񲗽 DǓdmom#"/ŏȏ&>pOFtuuuuq9T\Ӈj6@ !լ00 Kc0 e0 u& AXE[KEc ّf2$"1!<Ӑp)!-2 IDATAX.UHDւ02CCCi|)||ۿ[޽{1xӞ??;x;߉yK.d^_z饏'r}=};|<un g8餓w^\ve{]s5{{صk;8\|vuuuuq`0m5ư{@ YX$S+cȴF`?hͭ2_01 !wGhUbJ!!l#!Һ6rYc`t11t ;b؂QYm3;GJ@ t`ײ:OMKfWҤJiz9YYZSܙ kV̔B_uەA||%a kU1"&*𱎎,@Դ j`:`Zp8mM֘3q 3km8` e!bT1P39ۇSN!z(X a6ʫk8uԶLau2o5\[SR)-Z y] I#ڄpnc|m*tuuuu= wqz뭸Zh8[nԧ>uSN9oE뮻p7ݻqy_2677qUWNST+Be&,53qf&G@p ;ȸ7jc߫W}%J̿H믿1R!|M~jkՉpka<}sе>iN=*B!hj!%H:05 9˱k$hm^keϚjg8uh%J/IyL|VJwuuuu=vX,w^ݻ'x"~g~z׻}h\,ɮ]<W_}5 /:N?t|_UW]%}Googy&w2 8N~KAy{O|W_}dC#~K\{y{o|{p~/뿓=nu\6xx~J.0n !Zq n਎SK1B . f7#sg CF"TI'L8Ae̯x6> 3Hӆ] ;f 8]&m ̫v͠6HgwcȣҶ[Y|N\ϨD|c{9W\1&s|6c&iOW<,mBPo ̝K Z9(:3Mm[bH*pk]p @=b 1D~?NZ_U@Ecq p9V-$Kngr34 UpC#e D/ӵŬ4r> +'e~au뱧_zERQ7xc_:N=T\}W\q~~ pYg᪫*`kk '< xk^/\r M\['|2~~ ^?=Ծޗ˿;NٟaP8^{)xZ'ĉx 7o]]]]]G^JR 8NF trdgVaP Z6`-A5#s@xI\lC̠+XW0րbaSzE@PGKt((Sĸ ծT `N 9Rn !X,DZ$+|`>TJPx3VByD9ӰRejԶhUPuX yR|/J )ߔ&?51pߚfacꨣ&ZKj(CysZkqI{!+OMF4#{1%2Wf.MY\beLFTsBۘܺ%eW#ȉbV DHYjX1nm݆o'ۿxs;iO{^w~wpw`cc\r \p8/|pgⓟ$n}}cx/| w}7ygg7 _BW\O>_˚.kZk\s5c~d|wwq=SԶ~[ߺmۢ+7}}S/>g=Y/}ܗU=|gmv^-oy [nʯO~rimm 7ttIxys?_|1Nr-袋<0[e 0WR̜KZ.wA4$- l(QYd Jj;ΌH53 nzK0H-c=V,{w9o97.6KFSZ"j' @QP@v%Hh$5UB`!B V\ĨM#5%>^7?1n1PZZk}s9\[޿?}ߏOtUOOg~g^gc?c_e o͛7ozӛ𖷼__w3>3RvO<7 }6__'|W֭[ov}~?8^W'~'?m?TmoO<׿uk ߀'|ozӛַ__;w൯}-RJx?~7k>׽Yw]xWW~Oo]W8w5y 7kkp6hjjjjjkFGe72STaS.=vX$zSP;+`sn" WNH0A@rnC >Ώ)*(x9ȕmkn9yp~p:OjD,~LfN3Ő3RPXkSmFil; 3" T7j.Ǻ7 d:jg' ^uFVblSpoքf- /{mw9yct>#x0  ^@Nga!ZrTg^h3zrf$mi#D2Gz=ԊRģݼZK6,ʬ#-9t{m/VQP}:4P9c_ Ohy./d{A oة13BuD9+ Rdۀ!h=+4$-:_s'_%Y) 9*|fQMЎ'#ED|m u!Wfؤsf1H(b {o-"p#ڃЋ@=h.P{ 7})cxK@w#lEbʄ6!KmM^a?ֺNMMM8S0mߋeٙ}C P&]M#x`d but5 -r!6XX=7DiCDw|]`',(8]>|FN v} k)f[JO !^@9P~e#8CQ؎5${$8mvV("{{{ e02 }a"`](Ts=^*T8fYf/J͞H_e|Ǵvqdܼ㲮 -6Jñ{=&/Diدn&HίPa||[ON[Ksz}Fǘǵ xi G{܈?z;FLMMMMMM}rv:ZD7GZ?? ܸF`7|7x ާ]B~| ѡq61HoНu5&Kכu2unEix2/;PVρv.wԒZR&<xh?_dw0^8}?⥏a])@m ySI2555555{1D RN*?QHA`$}5!BNg}_ٸ5h{ =8͚3uЧ@vyv#hа|穩ܾWx3;?MB#wn ܹ=SSSSSSSZpi]ȥ47q:ʀ ;@P&P|caP`pmu1!`1Zfsՙo΍BeYvĴm,::3!H.6 & TO'|+ĸB* 1R9"R,SUҡ:͸ yڙXkgιuޟ @J) Ͳp =m/@apF +SM ;q,~d}(#Tmw4ךw <4CzD3b65555555555555bк, -$$HX5.8=²{rYbcIDr["Gh#}FDƖq-zle'H6Ϡic:0RP$¢8Tgr;!詃0b\mx ;z kZX`?_~]סj!X!vs@":஼eKJ|uhŸVhHj80-c8ZhУ`Ɋ; Y˭Qj"R ( α#RJCjZE]EL)-a,(2#@<<} IDAT XT͝7DC]JNXDT Bɂ%,H kh 밲 ` l1ՠ[<lk3K9 # v&zk/hƺKK Fz_csh0c;G.QO[0=YE.\=Λk,G{;+P͍."s99@6^ZZp}en`]03}]1jPZkE]nwb4:kNñj0z]T`{Œf\]SSSSSSSSSSSSSSS/*[6a7Z3 !P0 gOǵ5gƇRapEHθc fA#3P2rڐJXܭPA\ךpk:T8wl^ OyCΥ¶)#V2s@[ );Y.0T6޹P[p3 iV31 /af\gYhgH)bjP]l;fm+!ݬ мXBzX}D\+h,RP)RpMܼ8`"e7q\Ve(kuyY_;Hf:44G-<_1bYV(A7 UvNRVl@#llء*4~C qobʂrcXf&Y$S+ %Xu 9%9Vp9Rh4T0DqfL,cC8mSmt0 ꚡ{xx梯{Poykn JlA?} РHnHĭ֣PZRR4|5f ԋCqYPXNx}PJbҖ($X% 1"\Wcs@g)%qKQT?Gֵ5&`;W<8Zj}n"džeYOsEqt>A@s/1rzWWh/pu8B)*wGx²ᰋ27s[뼠59 !@\}E@/ƈ, EIΜ"QqC{Xa.B Ǻϡ1^,.55xY[#8$J(xhVakSth}=!cm5gPx㍱84ކ]هQ_z a3}&a[ 8F?ȊCC! SU" d"TmYDC c .1Ncf1ᩧB .Ku ibDqޞ=wKN;9㑛Q%֋#Tlv!#|>#'[*!SQlW 1xm!6ï٭`3 VT@c@Jy ه p@3aC񈫫{QF'; *C<=z-_>>P*.Sbͪ;wǙMk9qͷ~NU\W'>_ pom[8kh-}k4 ,n4XuI9!rpԽLw= _K|AD[˄SSSSSSSSSSSSSS/&qu5 ǣb͆ wN"4"ƞQBr@*!p1" 4x]Gá5"u2nֆ[MK* p%u*sB T,1"rNqD)Hd`E%C8>Mf6}iQ텶m}  f6g K N,f5SC%@ u)˕ktti@O4!rc#ޤ́Ca׿q3/VK9 XWՎ#jsa>{Ѿ̶C;_g~Ű!L spZ RR6Q,߲SSSSSSSSSSSSSS/n>nr>8A7V& i 5@,,Cn;m[\RO:2ՙx T-k_FJRJJ-"af @j,b1.poS6,ay cN ۶A )=.W(3zo5 [юe3-*lq=snEmLz뱪"qޞ ,V6*KO}1,3cf-N(i;T ˍׇ CDUKz#L Z-y 4鎸a}F=qT',qΡ{b~1~ ]/G*hTڹzj{|sİ1nR}h5wοe^`|䓍gTTb P\ލr$a 9"炰DP` XД@(Ph0dB/n4H6>˹ ZnRu#naX0L/V#ܘ -rH%nx :3te`:1ZG%7Ѯps&#Ø< FcD  +b$~*Jg]*5hA4=:dH-rqXU6{Mι=x ]ل5  "}h~/,Y]'.?;?t(E'])gks̱)sH#a/K̡~XCԩ^-w2 Y}{@TVCkحҖ@JxţHQn)}q򆵖sb9 SE@* )ДJ` ʹ,rCuB JO86/0Eq- j.(, H\@p t!BOB8m{VUvMVFmR(%# "9t:J=%c.#mMgR"9ƭYE{PS7aXo5x'Yu`Cm~ t5'*6aFRҮH,A5׏``sRPoXh$ᒽ#IA&P);hPVh?ZQGHdWyg8{#=]wINMMMMMMMMMMMMMM0F)rN -G|C9%\s]Ʋ@ pX"K:x17\2X޸%F\v,q"h`hĈmbR ۖ,!)6PNG%VHF`J8_G]f*a@g}(R;pY'#*!mwcl?/뺶T" +8,02 m=SGJvJlvA7U}D{pG 1c0 "Xnj%6 0R%6)82RN@ d1R,rD7:1ָ R@m&v圑RjκQ̆\ьjg.Fc&B l&!lX㊅۟( @gtAĺ\ ,RWהC"a(nִ{FwH-UtX(HX:}D_GcY!|>ϡB1MY[@Jne#/z?#CeϿ CɆ,*8}ʣ獸y^kqi.|}?whyWpKGds(ZGٝK$3u(8_">zu%39a%&ZVV}-$-@)`i |FXWh%"HNr%"$&c=$Le&VL2RJs+3.gpW(Hr*6;4#cP&m]T/NJ^%Z<ƓEb>/Sïԙ}Ι4#,Xlع=O׈"EK)w.tǗsC'h҆H:eE_{,qݩjwz>Dh@pf,hWqbwq^ۃ#TG;ģ Jܯafrux+2ggVξ65phvd=q^B OBq\WR[t40|*JV &2tX,7 %#mu늅{QG` r%!1\W`m[_[bV "R]m˲aB%ggR@b ܇Y@J E㣠B%@˲ XK[KDϝlK {4o;G >M\As*.u#9=)qapnίXp'J^H !ی}aJm# VBz=Z:oO +B`C;&%}{1UX >{_*,[֙o-jxǸv\a(yJd@B WG^D69Jƃ +PcCwй(9K@ Tq< ZrpxS5jаl.B}""CBT+vxHG8DH-8 88lcVAt:C .Fdm3SWHi,amlHVRz+9+=Wk ךC BJx9s+ @0l,n~ܛW㿭4DN] y1H H; $M37j؜|W(@Ue$W=&8TQqg ryK$4@:40݋N@KXb\s]ktuC!`D -힚]}罹>tOf}͘a]KaA[J8ks5zF=gE(%ܾf ÁApulϜ\ 80bMZs !X3&BN H"$ ~@Ĝx!b 7l7 +b 8d80(BXAGP4=l]D8u,?esTmT^-aYAA9혔%04oXC-@11}J[Tç`R<8F+hI Q,ti#aJ'Jo9|!^W[jGb=z;9xT!J?T2Xis|FـԨ3qe頏۩`뵹Z>ϲKJC/ؽ4NMksa`'7ԇۿs#~EEx_SSSSSu'_`HK\mJxBU!9㑛7p._PD-'Hq ` #)((RqTHDHFdjsPHc@~c SFE#Ԛ> 9TpW3hp1pP* UxB7C<P)Nt. RB.gm qYPr/pNe652Lj-m!6+AI` tX{/FZ7:| Q^^ု u ^]ko"cFQlm*^N2B^P<u1:Bec-rc?[laڑs FGG!Q@e]uG~z1}k{c_{!.8ut-;55555? ܈| |s#>tOm,cCDFz7U[ú ([-XC=oj0 8m!wztvqȆ}$QH`,KD0#bbP]Y3r8 .wp#r^%[zn \?V~]^ 3τ EWf()xdam>33Eb{%= pXitJ}2 #?%鵸#^l v^N @G pwڈZ "{֝t\c>+~ ctap[fzz> o ~.rot6f@u ZspeP#G&|Y95555Q(7>,yXjϜg)6 ()g@uW\ϸ ف%eh^Ls6zX"jB."\/gPRAm^j)JDHY"0Tm&`%GeSBI O`qzk R P, RR²,mz1"^xf1u]w9VMcUs3F*'@qVͧ3J DZ=>K* yPTQVw!2t7t]]r it7?~6X=6an볶xm" h /xHCSpMCsp~W_ s~_CD5V uF f-#7n FْGzx*(XLw6HM*Җj0Z,9K=?TU O kd1FH#a( Kb Tslh$LƮW Rkqtd%ě#hFR=<73-GgM&<[yI: l[{]}氬 xt!3C{Fz=x܄SSSSSS_ E)`eQ– Xt7ogܹq!BN) $'k E΂@ 0coXfQ9J)XVk&c@q/到`qn M!rF.'#+9o DeY!ʠ*'\]= КJ-#&tz]8.\2R;|Fè>t.۾/RKLa1w9$[ep2Xv5Գraj+9<_wZ|wÜAM\ _r}q v6lQ:ȑyGamۊl_ޱܮupE955555555555555Bn3Ep6SNyVIm9od<ʶ IDATأ8 L^nYbKkϧUHJlZB\ 9-#͖%B!XTb\yu9Mܽ(ʁm[K2x*3͠&  ZWMP890us;04POՒC# oy(qg.RD9x7xj|{mlm 86/â-;V\\0wls uztK5|=<=/1q頲 -sz.}_R SP!%5_rmȀ04㾣~_{X1K-i\vj5vjq ;5555555555555"Qo3sͅ|K./,F:oS:cbAabݹҖj|43MY `=fH.`\#R H c6O6V.+,A?a^LAkï5)C4A`cT:t6*b!U98޸)b\!`>#o8^Ryb ]hLQȼlNM\R 6[ #B0^5@VfB=gnPl<1Y<1꣥ڡc{rV‘я@P--Jsّ\{@cDjT3v/شe-c9uo"m /om>_fȥdלsc* =0 j0Tγ, D!6]Db% Hb1T0ApJ ` >bԩ3RK5J1wR@8fN:!Y˺"ڴ[K7 ,lE&&J AR  V\x $[ W1F@Ѯۯy-p z=9)JF`iX~}vvy|!Ԋ35S I g1Z{3e0C_5q=\?Q*y@i9N;(Z;Ǧr̡l}{fT#4"ʨ/31a4Utw(ubHpjjjjjjjjjjjjj ˢA h >,Jq]m%yu?y1 $b]W+/o JGGh3+sz O  ܴ(R"^՜2Y0j+"eCA"s[60= ]: T KsFbjkU4@96" $Hy<QtG['^0o MaD7spkQh7Fh_cwRs%Cwk;$"vʡ,)ꩩ2s!23eic|1iXJf>]Z;B`@3x٣@]<coVcIJsH5`X=Kk]k,&2PXGم ! (pXk#HqL kč ν`s E2>Ճ /Gr vR)pTy}@;#tHtHj ˲}(鄒 €^ ,Gh@sacLx/yD+,inY׿'"{oGd`)p`iv֝v-ZÁylVJٶ_ {#60u훍2sdec 豦~?`F6 9c JIq>[R[neQۢ*8A6JXxANj@K>R BVnDKV6Rص-!,Ɲ}Ed\]b0 Ez=DkTxU9, !2>"B%qqOKoN'y ^~k?M?#?{|/y>RQ@2p&k)Hm&C\ܨGM-ug`dƺ-*|={3@(A>7pW@Uɶ vsV0֘ QEN!ZQ eFwڜCB [Fuܻ(X6(PN `;=xDR!XqX9=) JY&R^Ҷ2Z^+Q!BUl(>ۖ{7] Sγ2ܼIZG Ro6НܠlzMwq-;X'Iw"V@}_4HV M"9ww6Je_$,>n=z __}+~?>CϾ᳿7>{WWīo=c1Y&| Ηg|?}>SSSSSS@*6;."3rcD Q+I)YvM^D5P@[.Rpy( t&2l|&0ΧUvY)Dr\hIeIJc]"%CԠ) ir2$;35"eA*g1!H:YQ ,Є+n u/ +}8\8ܨ*@).͜RA^ !Zu.!zz҆T+D]'>B .C#626t7#JuKrY{:aV"l9fG~VBҝp~ FIXvo}ݸ>[ nN<+pصW/Dvn@D^mMjI9 ;Д^OMMMMMM}xv|k?߅77gp7ނ;~ͯr3?K_R@_m_ofeOC߄)|]|&|Λ>n~Oxo})K++055555A*{އ%2޺ >0lQ6OUP 2Ru50".ƀ|KF$+ߩ#R)R+ÊR m`۶^ZphUh-'bS+XH1V#вf$ ! \RVDO!]=TP8{k}k={0'iA Ѐ$j0KkJi-%HF!mE@Ū0J"`# 0~ֺ߽q]Z~0 Kv޽wg~g%nP#8kTEsضDJ{Ն]RKˊ];pXKV;[811wul -o<W on s X4I_}}8 t) AH<:}uq8"qN>}{!a SnAm^ qj K?}߀S߉ /|_g|o'Ok{߅wwG o'/=?"7ӿ}8}W|=Oh3^A=*>7aXZZZZZ n<}{`K oz`A`jҌuRA+p#b00ꄭ>VTAUzE 3QrmG)ַwtF%U N"2 л֐7wq-RA>\qg8mwyʋm[w;݀xeݥvRF֗!%Hyb`1 b۟Fm@CKZ FJ@'@{ED@R7׫ĢrpDՖl7L):w?dX:;_k}:uZa;plk 08jE1Vp,/Ku2HWÑ}B=PiZw@L<ǞS?1(viiiii韃>w~߂w~xm?gz{Fo\ ./$~a].O_O}z}G;?{7;?ww=?AXZZZZZ"NP&Up-6 ъ^y7K6fĹD JtCMp(G?ᣇ<2F\R+8R S=) X CV bBN Vc>H9CZmS1@{w!vBCl;Ώ0¥yH6 <1W Pc˯G i4EmaJ*hRR4(!NFүvٻ1gQ^L1浗m}+O4mH~!?sߏ [k}~*6\n6]{rAEC A@ we*F2|#Z0j8"]n@hR1@QBlȺVmDcO $qc{` e:KCι{z{lJjg1m߷,Nl;B N50 jy]sк#掬rrّqATEk`2*B.`ޱo7 TrHKn7,.ji Ew_3ם_q^(GxͥElz,5⪣r*A/Ekŏrwkz4:;4}~3$bh@@?|{'34U~jb;֜WzN=4@j_b𥥥_@jn|[ MN~!{?OO_{˿qc.7~o[??{jkha7=:$ˎC4Goдᨭ;1 }sN_h6s v* 3݁g;e3)Bb08N4hJ 2Ws@3d#:s( 8N{ 4T &&_i(Ґ%//GPv/Be@̨ZH~q߄Gڟnρo^|M&:_FF88`X;'˨45yrjOqś•g0qA}9%ڠv"'h^KccO,,]~7vߒ%`4 IDAT7x;x z|z9آJD(p|ka@L/YkR>cо.no.܏OU>Bý@3\-KKKKKKK;__{ߍji3?}I'U-xQߧow_cߎӟ;wmo+RN~/kވ} kވۗo#}[ r\q{wPz5&sHZ? =rII޼3jli 9'(fR-eGsV "-GS&=KmpD Hۆ ι#O>HSRD 04(VSwJ2gR:Ĕ\)6f劣]AR~݄ )U|8-k$TRZ3 7)Tw1SHNn9]vfgp#)&;np> DyzsF6ArIK%cW<2˓鞜H@x|@!`gX2]X[vʹ}b\gjA\yCQV!/VE{߳.ү(=z[P7c5hJ0 1g |Do=) ν9gq{{ 7DJMʸ=J@_aVwn5P+. xxG-+2eGaxPM\r$,9̙NsS?c7`c6MzcAw@N1Y(w?7:ld=_42,q'ovIs8kus5ώsv!Ƈ4a4|_v'ע94σ/cd ,-------------VؒEkk@{p6I]攐18mlAhl. GEr4@60xM,Ppf%p{ҙH;`2Χtrf=> &c 'dAuxzu[0sώ#!@wo^B=>w/^,TKq^W!Gĸp8^s7l皍i6up5. q8wə?״v{cs#*|n6 c h֖h . eP,?Z=g ׎^JŇSN#1ܱ" 8܈ 14`kd tox&rKKKKKKKKKKKKKKK'
j09>8bZ-Z=Z\.Ц={9'{>꼂SZ26K]tT{R괃Nڪ0X(x )1׮nR7nUQ 5m ͵hlh:ZmJ6?Ϩ #S8ec6U]0 jXЊ@0UL  Rs1k#4V ؁DUP=/1Dcp ak $1ѦwR*XݯR~  c0@FL/0ō!cVh==sE/߸vobFx@C1_ ":?4ub{T@?sܧֈ'b8W[@h#q œT:1U9iI`wT[NһA\.-(i8ZAhPJ3 =Nd۷lB1=|"6jnCrͶAPcΑT.ya#B d<|{b쩵S>Ucrض (wcy#jK{D8J9S8ĆdΌxngn! ""8'ڮ33ui>aЂp2_PpJ}@֊} \zĄ^gd1JX7%e K=2D6Mx| B23 'S_;b9")%]8c"ǚ N[3I~{l72"ĒDV$ L9Tl~ m%܄l%Ҧobĭ}Tk>i\zrAǴtq)oإ׀m*2T&ndrZD'.3ȺS\w 4ǢF [d7)}@E$9Xf<ƒ /;4p,ʈ}loإ׀>#1飦ip'}p/)JǏjkmƤ%Y c6]X`߲W1\@4)hZ(p[xp[\nt(Y@юbc>J7F A(Y7Z1'#dFTW^~]=q,7bƳ~Xʨ#yf5Nha؃,{LjЋ'盁{0sC8ôJɴz2c.V9ѽQ EJF2ok4N+QḠ>"]|1ap1"89}"5c9P gSQ݇1bLȮakS GēMxwDҫo{Ax& rrl[-Z|NOGASA:շ#Z >^x(3 />~)%\[!#JLyH:KjUU/H i9o6" N^57=L"VZKINh٤ؽۭ $=7v,ߞ#x(%X6>/q Y?  xG`p"> iSnC Lr|Xz~;ܭGv-՗ksyN'wȈ$$.ŀx5S΃bx1*"'`LB{1P/-kg|J\ZZZZZZsEXwiiiiiUr`wyE20[m:v7ޜ,;f0XJ1 eiˆͶ:Jl Ath2m68<18a4LE^R`)'Pqy$")ydR(ṳpA+pqSތR~Mqk;Zn0'EB#zRC>i|l AtE s=Ꝁ-P/'s4#j}zy}c xSS[F/z{o~?VF>v\Sc ETdWΖS{/TL r8eWxč/------'/,6JݥR.1EsBDMDSSabaoaV^+s`۽/eW @v͈\vA6U`2 jHH$ ʄH99@3!'q*b€զ7~ŝhS0pZ #=)k`{P%IYj5 3 ;/{Cش*PEQKbeC P갊!;r:a|د} 6T}y2Ń/ dor):<@dg 8ᦋ{112@1Qǵt9F8,4`~@zdz!Ao({q׿[_r॥_~u]ZZZZZeUv'\y송&D#f( jm:wv \bpsg}4R!H*ZHdjHssJEZwLlBs2gmPo߸@+f -N,G۰T@*`$H'ͯa\9+~ΕٯV0?ă3hbk6؅C΃UrOPtc ↇCGFciWι$ 6a@qdF/b|ه0xZɈpIu3 :{c}q=FFa`;/#J{Z-f! pC{/4UG!:vXr9~v".------b/~;lA~/~KKKKKT(>d˿a){7FDA6C#%:iZߵ7u? ztrXE uۈC'jlh9<a:݅4EseasȤn']31'*rvwZDŽq?ڏe~z_}'o~b3ƿ۾_e_.үH=OIH^5'mHDfXU(D!:IlôxK89+p}Uw#=) ?q|vߤEd wG@62~9%G'bדzL6tPdK!ک3.% \L} GepRi) cB?:8 shQwμp4LjJ}D0t U6Ċ\Pp>"J<["-Of{UaDDQyDzznS x[viiiiiiiiiiiiiUֳo4ֺTP[CN 2J)} RTS4'K%S&88dlZAn/'8oSZ9: +XJC60QSr'Gվ^ R w<˯"¾mo LSsī4ۂ`bS C9@P)4EbL--{Jx-}C3J"NAb]X8E?a" `*q)WQN3_Nqxޘ4)=Jn]E$_^b"r6p٦1_FݠNo1ޡ69-ϯ?1Ȣ>n"(1=#"̀&27/-~ډHO{jy^M) OQȧ0fBcsCrXRSTũnf qKP[RBSAf=x4ŖU >~- CLjض bҀ۶s+M] 7OA]uJS4Q7ǵY[k8ÍrҖ7{gBaTI;sYQml1 dbljmOPXzO`O=Z_ccbZ2ay::b11jOGJ }VXOߏɡ>M?bpth-*puKis'g`k16JC݉xvPxG\ ѿ?;挵ڐ l匜ipSƟm\Cstrݯz6P%Z'8sSmzꈱ]nl0|7-'3WC[S_ca9 6q ܯeKJjVФ@. iAJ8Q'c#점e=3=x)Ai{@ VT[R() 9A37?N\E) 1'5OGtө+>B 3@V;-'4(\ߵg70M_#k~{p GΩ^,t[s z-FcQ'K?,zt {G!e\gրG3ѽ*m3!U0- E`ǁWHԱP/wl+)L=}G"jblpx:rHh4EcQDc6Ć7I @*`pv9^CKBm$ fK (!pJhu3[p%ՊŐbHLط J9@LPi}$|2߳R jm V&Pٶm;P@ Fk9:FG(0$o =7g;"1hPm@zQH 1 #;ڙN=Gcrq# W\9gw~]SXPN*_,󺱽Fʯa!EwFYm s+piiiiiiiiiiiii5g^6ZCliqx|{[*n9)ϣlҰC̄ڤGs`Ɠ3ofD{g^}~~\+PMNKƵ53c7@a 7ǍgH+fJ BNE(z׆N@ 3NJ㯵Im`m33W3yaJ41#B!4< /A- ;weyWaQXc11uiy[mNXt/F|oz AwGl4k֪y&S7\s!d/m9 Yl۵5cC'wȈtHr IDATҫ-"2Е2^ >^:\@F4Tw6 XC98}x G iǒdb}# ς U7EbhD m휈Ąrv2"b`):)A9C{Y0`@߅HN\ƺݑ8 M-<+s9#o;Jw;R, |Ļ=y$@TfH6cc9xU1^1>4ig94Zf?(#=DŽ(VJt4+4b { *X v*y r=e rī Ddҡ]("8C #V0!bW'cV2@?"¶F>Xz՚Xl6- iAE!1oCgȧClc_۶aށ8@[N< VyFr(9fUw6l1F/lCA~_M0ͨ#"v.nRڪo,;bM_1kKG|h X8|'izqFfJPWp$$9JM e^ c>g<'0e0ewi@StxiiiiiiiiiiiiiiS8 >1 8Q9[G^pQEU3jm*&FUz`p0 r܁waibNeNZAAiD=N:_Y}XK}"\XUX9dRza8D8,M6l5wCjEL0 5@;`!7e gsY-O*IEҖf1Cfwwg-Vlzߟb0('vݞXVa1SBA@؍V恑#q<ݘh0J<#L|8"-1b@řXEl\ZZZZZZZZZZZZZZzUjŖ}pYl TTA&:w?'"j<09U6Tvsn#rHT \tf 8IP%jeÛZPc)';p :`4Zc译s'ǁyjZSS\f.v;۾;wq X+:5 7 o/+= D {'Fɇ#;|FZd3GO]hP^AT"1er/ht9qCQy7܇-T1&~>t줓Q09;;0Ȩ2j^O'Qj͆=}#vv |5[}3cŚs!r^ZZZZZZZZZZZZZZzՔ4R8)ƾ>JD XCUˏ:g0g]+/ʩ "}-wHT"z`nN9p llrC-,"uVUj,z/ jm+GN7"ݵ5z{qo{VlzO&6cRl}sƓ[\ o5x>`` `v/Ӝyq۬xw]qW%ϝu=c:A9=C6i\~9U+REqGytN@;>OYNlKQ{5b&#}RvB3Ιyf+zL qG_\ZZZZZZZZZZZZZZze=~WpOP|c= %4@ 9dtuDeDДGSpڰ]naxԖbUڹOe[k>x=e[F4gԭ_ne %a O#p3pޑh!ᨈ@ [k=Vփ .-lаV9p,!ȈbyЈ3Y 2d@FukkĉEވ~FM0nj<(FQh$ je~`L䥥WW* {JRy38-@-LM۶U 1ȸCR!VbF%5kSM(tھTېsq'&RrσB m#ٿmΪ*^}-zتA9R_ U݋SfRwf5C3/bù7Lr2ҪS 3Tp+rp2&e1_{lΛEXc`0 :๳/O7zq ,jjQP-qvR8- Nq}68g_p,?+/O}q1r"b%c֏m7"#{68b1XWj+4@4tMfxگl~>bY|uW9}V:'UWYڐgǯzӛp<~ rUAj"bt2)@k NnZ+'L ԎS[/1xjtHyb<|$eR6D a!LP'[tApˁ0 ?I9@^&'8BH5c>@B'9!o݁v<FDяւZ D GF1l{yN%?_#>9 @91f^+F]캬+eíS<~PmNW_GS ĵM9b`jTjh@ CR?z H})5\`=ڴ7$Y*18dcl9?gN%&鰱E@#H`]}h0+= 7~KKӹ3zs|8(-Oqaէ"vnV|ހp[NG8g%6y---------------r(~g>k9,O9S@69Ƭ+0m#'H9,! Bˏ_z5&@e_;xF:T W\)Ŝx[̖0瓋Ih{ J9a7~@_ν!P%sߨ3pG`j@O[C9}@O&s#,N7J;(MPڹ{0MpGhΪqcNVKiLRirPqуnip50eS&r%~> Mnߔe8uHlj}5&L tԗ3}tLLHwk /pcM? 1죵^jmH}ZzQ#tbN|HufqM/----------2dr V-}jg}7 ڋ ׂmE74>7hE-*_5Raaq[b Ղgo. O* I >vK$xY-ɓ'}@4NmV+צq0&i!+phyCmJfu>D)w N834mY)93۱pz4erq΃?7åx NHȀVGB1s>х8ٝnSn,a3, /X`5Y_|8Uqye8tWn^_(|T.--------------RPR`*Zp=]vj+9%";@-?zR"oWY RpcΒ ^ 0sbpwG)g%ЪߚjA ӔS"9XW1P.I8[q-j=lٹKJ 62ɯvZm'v)@e*Gy>+>b]œl8h;9y/CkcX{)pF`Ai6|6ܡH';~,gj$wD_99Z3qR_+s@gH~|8e'N LJ%u:l`ƹ;0/--------------"N cBEZCG'[ */x鸂!Py6A$1%B;bο30 /bzhIɼyXZZZZZZZZZZZZZZz)`40 DȜqm׽yg\bFS뵣 Aj!)!zT̨@E+wO'jiT2*HpmZm38gPJ[̧irI)As8xn'CGlҰeFJs3̆@vP{ۗcude>'Api&WaΊ㎁wzp f(lطK"n::#Z3/t,Q'@j~BDhc"N<1=FL!8\yfH)wG]C~Dtg(ss_b?rgκt6R <fk9͍?3֚K0^/ANFf(\.-------------T7}{xzL$@ hAխlGl-tc9I8VZh[AMd2 1I ;{8=7ܗ|Yp?z~W 0o%-B:^[vb1%UĢdD2X>`LK,` n@!ᅄT:1t:J.A -Ah@7jLNArT F匉!&m ׶R@K3pB;*ZC|H}4PsLFP(k"稜WP,3BdJEguyTQay IDATBv9dnK< - JLgpDY|dKg-D\U,r*RQ/lɤs5kEF.ne܃RTL$+=Q6+'!WTTUUUUUUUUUUUUUU8f~R"/BR+(!`(H:7uBAxF P'5cgu64Z?Ey{JQz >tBҹYǎ6&nEf^HT<"AT֑G1SIcRQ,;u0{hMJ8*_:hۖ5{ !ݍnMD͊k9y*%sp<=`1tI g Nj,wf}uP,Qd ,mñ~H% B6M(My _Az]7:Z!ĥy S]mlbk("Fm5g !(rv_8yME( %)Gw7op1I(dEUUUUUUUUUUUUUUOyׁM^z7`BR l9=;,$&!(vL 01~`ƺ#K:ELG+ k=!si L}RI@I %Zk+#=Wzi 0Rq`0!\sd@&PX;vp !g!Wi@5 z[@ PLk8"7{!q@k; fdӁe3»)d`ArQK PQB r,;Dhh1f^.h>y)Zf8L;o4C.bh?* QI uN&cȹTd"cl٘Atuβbδi>CU>=8thv bV=stUW/իw^/>~EaUUUUUUUUUUU^`0/83%1XPfB:m(FƶpJz= 016Fv`aaCk<[ ic f? BuPQt;mK G)h ٶ m8OJ /h8+N2ö{I) Ap hB5f9+)$edD <"ߑ2{JHDt# O?%lm:^4T@xO >, y/_f9(!?C& 9T=st>~7I_:>5| kXUUUUUUUU{mJP#Z7O3x˅8{WTUD?;}Hrk` eч@k=픡}c||!-%z7J x1M|pQ׃:@Td*Lۢ;pΡQ hӽxkaΩ))TP5bm_y|X49FFG!@Z}0k}hFS\tnRiH%Bi@Hhݠ 6/8!nCsְAE0a U CЩ`1RD^BT`l f_sj-5шb2L t1f2䇃[yssn(H`7&X(  < 9ι3A@f6e"r .[Rv92La#C|z`Q _m]wu8199Işٟ.{^z)fggc~8#|S\{970K/s9+׿{̛76m6\ve{u/o|111|x;X|9FFFj*=Zksez!h{^z)VZ!,X[.__Ԫ}Lfcx#Q_}(\Xr|KxcPj|9@S+onێC>g ~7cK> 96W6CRB-Ch9ސg$ZJ0X@#(cg r *ObTKFM֠?gaGC7 *t00xBIkZPAs;BgqBiIf 11p5fz= 4 @`7ѦAB*M\'N'ycޣן >pA ֳC>k, )q(3%T[HGdKHg)lqz>1 "2@a1VY#p|VdSGTX㇔e b"s39g{n3g0/ϣȬ Oǯy8q% \WkxUWaڵXv-^ W`ۓ5W^-[xoojUUUUUUU>nGsJv69}G->8lJVݏccK߱o#s?{ncf&;Iu71Ug .7$#kUi 3#Rqpޣ5;ZlǦ;H9CE:B g`} f NxIpN323ޛA[  Bw`CpQ-h8AHk>`-Z L;Jޜm0T]H;oitU儔l!aE(p qE+1Ǡߧs|02OsܮKKz.2 uQFQ69ܜ6^`Md()^c7m> R^*eE é%E`C}4p2D9Bc밍% ~qrF(*"KNb=3㹌|F% #4~9s>8-p99 %W@'x"s88ӱz꽊NOOcݺux_ 3sټy3֬Y3<K,~{u+O~˗/6maxߍ|W_}5e˖/|Z}sG>w]x׻pBs9W{キ>UUUUUUUU,ym8a]Khצfm4濖p'}k-^? '1v^t8 mo߶m3YS@ 0ХvvlM 11xHBޔZU3W\m؟(`/ Ym ! )dK I<]4rJBZ@k}HRsϱs㮼?ƣұ! 64xˮUŹ I4Eos`J7_Ǣ>a1 xXuO.KE@G 3NTr3 jBuEagqꩧkEݹs'`tt4t\vAqc^Wꫯ%K`jj/˿K?xGtCʕ+qSOG?'}?&''jZvC -c; ]G7C_Ǽ߆#MA͟;lz +n};36r±[A.*=Ģ*1e4}3lHbnc]L;V4v'tr1m)LPT%<ځҬqBJ  A3OJ(zLNƫyF(DRAzE A h$W:n8xf u=X/0[цxI S`Zz8=x@*z Zh4xXO MB"@56x$` 40:0@sϦM{kSs-KҐE:cccs?CEQZdO@b> j62#pt g !9\|돯=5G-k1R;2|H)`touֹ9_5'ha.cjmõ ,t{xdվ/˘?>nFLMMᢋ.g>?(J3HK,k׮La%7\r!hpZ ~Oaƍ1331<PTUUUUUUUU@QLf]n_nQ+ .ǖ/|un_Ǿ?ut 7o^6k#MyK@&$MdCTxc@RPNo2a^ 2 >nHA%>$3`Z!FlIBե0u@^xfZ3=hj%%L;`pt~^J4 i`gW&X$wpK#Ņ]̴$<:no=n@i,D4h˝J3uÇp"8OQcτ'W:Hv3ml哊1kƩ{fy.AD>`wpN"F燆$ZK>tw |#1+u H6wG>>6Ř1s^ a! dW?oaa k. ˼h$lW)rU/{~ӟbrrw}7FFF"pV\ t.uQx+^>l\uUx{ރ^z <@OO0>>5k+_ }oO} ^x!=P=;0/op{pq(p]wa7XkuV|_yv IDAT_x>~_=wҐa}ӟ}݇-4կ~56n܈wݸ>l~{~s=v>arr/{ZUUUUUUUI-.c{á1Ŷ M7݄:뿎}kO>UUUUUUUUĥx< bl/yQφ}l ּ<:?W>yӱงnZU}׮E)?矈;o+~i?{TԱϩl5OO O6xc.b%d.BC6X,JN"3!"[Y}&V #.fgR1W;g܃G= ]FҖ$4Ee+km(|MIRc c꜋ȧقJ1Hy3h]lo/B%Qϴ-tE sҚ9P< UXs`w(ntVJ5,ě;0&X6LQtp4HHα ssΉ)vr>4=$~(cY,>kX3Ǖw2:]TK,Ǧ;/< Q@<)UTdE%32IR K).Hp_t}y8CbŊ_깜p zXzu1UUUUUUUUUgVPcsoT! a\`S  Tq^avH#&$%$>D#d4 kĪVhC0RB AM K hrEtJ:'6Y\ԁA%[Zt.=0 n1-h: jBiHƘXț'1SSIUm8k!>(t ӫ-PQB oe?`C;:iěɯ1< @,fXvWm'fsbYfA<=w& )e>6l޼ LNN`]1>(FN8ԙyTFҌN8!DiFεt~h[Ch$ l;[()aZ8gXx ;aܒ]{!i rME'>9)VmCwd^ZaKz/rqA5W4sfP !8"˿_ӃpKЌ*:87&# B^А)6-30pSKϔ5(.҇Or[s YA4A#)2:1N6>?Pqęc %,48 bxyIUվø8sTUUUUUUUUUU~f䦓Jx?y> #x?Ji`GF46lZd!HPP  lMN@p=>p(uQJη c91xEj@` v(`0 +IHM¸ @·PrB@.pNBI< oaly,\`9X3 aLFKh%!@X4-qJYh)P: DX/!ű"s2 [ɭ 94E)zy+0Ͻ#U᧵F wZHC3Es-=XJrȥYx1,8nr!^MfDW>2s0$ Lعz +$9SNkd-iV_)+TqN` C|}~}𫪪Li}l`6"@84<Q.t4"8; C -\%Q&* XKIOr0b=f&SPRyʺl:1IA,Ƒi>6Q>& N;FRƶPa}ɑrppއB>&NȳBJ8 h]BQ۱c=Eclmf{p&yУ IS70`cykI}Sn*"<*',49Ee5}ɂ΋~"2YNI9&mrI)#F|!B Ř{ӇUs>n /}"ÔpGKn6yWVUUUUUUUUUUUUU= f_FLC-i3c9+n'i^y C{['SQ-'瘧+!1Hϡ/hJ&ǠO+zxkY U@2nVcJPwN:7#x8( $TRzHEmֵ0l[J;*RúX(xxRDYla$\'1q9[]h;mHǃhsM ! жi .5zxGdOTp( 633&Vd;]4opiL[d\|, I4Cz6k\OC cUUUUUUUUUUUUUU/Wnl޹>4&A/@Ũ J~2D|i4(# "L'6||9˂y +]0D,dAu毧1r}1&;_~&'㦛@~ % o`!!_IzXpHpNyAJ@ 3 c$Z38iu9w%ˊ5l k/ <2*d_"(a-1NJLl(+(r"Te($lP5x`'8r@>+JA63z:X>OGXƱ\p/EҐyV# \+O#ʢL$,gaǸӁ hR*XccPJfK +2s9/2\YHWYع2Wy: ת`-m۶!i4epa|ֵ@+ept8^J]᳖ܶƪ4Q#5QZ;$EmiV= 2H=H™[Nyá\u2NtUDZ7sC 6TUh~Eh'`4>?M'gO2F`b%'R; Af!Up d22%XG!c,iPd>qs/UGe02s*?T4l"Eu){a'#~ {.u6Х'JziFO!te\0iICb@[SYv[dvKytm_SݘIW^_4ߏ2G$(7!TLZw i C.`םR*52|".YK3RYf41=fG瞨,Z$tU~cdLԀS[fW(Yƿ~Y1`= "(/reAXpJQ`%2nA]κy3!; }؄Edc*t@$.(gFbazqF!b:ކrE M˂ bZW5bi0?9Rb^kd"bǒRd|*A_i-˾aQtU9eceǚ.~-Ob%ݐaW[J*J 0LZ(X.ZVc*qP#e9}Ygzl]ز.JUrGl2YZ9JH.]#sy,keK|Xj޵[daJlEFؗ8Qf LJ̟?!x(Ҙy{<ONj!.o_΋,WrWsr|_trF^WYALNBJF2e'+cI: ҟm% HGS){δgma֡i:00SKr zNfSD_soRZ+~O>_nďi8kM@u'W7]5u7c*zYA @oUUUUUUUUUUUUUUO  K JÛ"Dғsf28"a*29R­Xb<܃n&\ȇi3"vc=֭{tN1ñĄ7F`%)Vxt z~#Gؑ3PNj!gR D.f;xR̜x耰fZlCqT=[`48=XJ9eĩhȭ-| m}0*^l,H_jy`5$ȇ؜_-e|09Ӈ `liS, `dj-L8&R»6}_Z~1== ,X>xs9Upwo|#.RuâE~כ鮽Y'go}[xzիtҧKꩊ""[p!e qy& GwJH3g5-q1mJf%ǝ?3nZ\]{ (l#ԑ `A\rC97=p`E{lj֚rdkZyБ`xf#lwYnetMI <96xᡠ))D}6Pd?8l1*.e$X ͺYV{{8x -,|HA0%Mg5'Ktaa23k43l$ƅ`(uٶ# 0ĝ+Q_r]ifЩ $WWx?p_ʕ+裏3Ă `իxk^zi׽Zύ7ވg?8Cߛ6?jO;l'?m݆s=8_D LU0<qY0ρ!@Z<cn_cki edJi| nSBºT3d'#1JNDY-53b$'}dxcv&qo)MJ%!7<*/wǦy1/,“Ev<|J7i*E *LϹ- !2Ye`x70 8zpr(#-zyXi_*]P"םFc4 ږcшWdRC0m(fkð2m%7}]?0NXk R 0M,_oQN;oލ?Yp> {A '''㟷mۆ+Wb˖-RI'Nc .q~;v`rrrJt[7tfgg`xqyt޼y{,^vnMo=ѱ`Æ 馛}v!p%/y 5\{ qGO~퇵oٲ+W֭[!N: s޿7ko{-}ы^TzFOtm|~z*n&/_Oݭ=UUUUUUUUUU  V > #m);g7Kb2HÏZhE%< bb:oyFlܰk#·`' <1r-tN y`uS IDAT}s#P9硻 QhN8wZ `A?Y!לz.9x0H U@ a6M{'BXfᜉ!wREnr&"cj)Co)UNLxѭEx"aHntöK)]D7墴ǖ- 3}*eImQM# L&dI!ThfNDZքy첊kb&-支̃+e|_ 7܀5ko~\uUo7ox}{+^ X`n?'x";ykx sυ_CkD͵װݵ5k/9<Ƚcw{wrUUUUUUUUUկdcaF< KGR:2  GDa>2d N/8fTdgޱQv`+,gȫF_c wf?m4QSr Z ŇCwu1,feVlٺ[nm0;3 c,Rt:tnф:_b7K-)B, @-m$T<l>eElMDj+_rЉxhax(J7!6{H@۶?z_[?mkm")0]沅BbZsD|B'=4||"w49ד` bU{.9|;W)lذ333x _c˖-_O<RΝ;9c=011: qFαE#xBMo<ga֭lzXlY}.6l؀~Gxٛ x*d}Xx1^_rUUUUUUUUUվ*9 S B(wLD b 1e>q.`˦ۧnbZلLd1< _enC n㽇16D yXd s?_l4 fff0:: 3 vų222D)5|<ϞƪU1;;;'6T533t333Ov6{r O͛ܓcw{ff =9 dceU|g"ERӜŒld"wR` %"r N004aYR3{EG5!q()‹ %H򹄜xeUQR̨x33p\6וi#j@ Za!T$A7|EtGSj tBi0%rf)@;eVurݰCm|2f'q3M1O/Bs h$7l\ߩp"q+L fg0fZCj5Ee1-NN%-MO .^pLʗsۊ,THYn*R8z=vH˜heM00N ]p Xm5IJ p|9A*,Ql^0N29_eic'7by):nB\weqi̙S&+bn9.5DCԴbCo-KdDWLKZFPds=98&`9&}x}Q{".p;:s<Ǘ3}MLL%/y ~o`0@… qs9Xr%/{ŋ/~cdd/{p7[n~;{^(N9z뭸曱㏏@po}ǗehqGSO5\or :(X<8n?guV\˻BtAs:~ʏҗ4k>餓?k1vwR{,_uUvwegsbU$.ϭ˓}JrhefxʼnA.e 67%\,]ZFpΣQg09AµPtXMd1V=\+HAH*mSƜ)."k&C\r Oź%sHEl)΍pBcds 9X1>'K=֬kwqRTQ T"7;b4#ъ6HlӭQҝ5ңi1!Z #*1=4MPS%l( R%׺gyֻ")}^ֻϼ?>яL(։ ts׊N_^7gPrƕ7yrL:.Ǫх'ϠVcx888 Zk>eq-c.ʃkz=Q::ڨA{F9TBepnp27a<ϗ[So܌1xzg맿_>  9~o8UTHnՠ**^b{%QܕЗKwn7p.XP( BP(W^6櫩é32SG.̤ (rm|lwEIaJM:0$,nɭNn?a,%cy-e9(FipTK '?׃hsCy5pM}buVoy̖Yv4Ϟ.4bDyw,8J9MWց+JFxXM3~Ha@GCf$_xm$0bfc^̤!FZFF|Fla j[!@Ug<>E.ϗ^f%qr)t< 5k6EaʄRvzP˥ԩSxk^׿K=.' BP( ſ&7/VRMMPcR-iF@jSp}m뤵' moZzifm\|5sz)N6UᢼD p#\Gv BMSR lH<wcL\қ漙nN^{Je_$w4i<^5&a[4ZЄ"~ް&7kvFvRF:I^7Ңd>_oRK|?n֦VH((Q<ƞ\K/7p)]Va^=/.\s5P( BP(t/ܐh@%o62cVp7@/z p/npu*GcDH Ij6,3JY\yIؒ4`;5_7puJ9&]/HLZO#E`I^ZkuiM|ѦY|6g iUmYR_ݜC-3Wk( BP( BgX )tysIW`bgk_;j 0c*uE68OJf9HlhYvX{v+\WxXF$zYGNܨDgLp,̵1wmEq 7|r$N;lfgṎ, ԧ4b UmtAW8s ݘ8tf*;iʶYO6Ky讛$wٗ l@LӻkO|<`' );/]~DzbRCO^kU2nyn[&U64ŧ'CP( BP( i4Hnҏ[mjn#!uzJBuc Pr[s#u PWF~50ef(_ءjpuvY]x3&cЏl8~VDeY&g*7udL y[y*_& hH9R m0ݐ΃85\-aM7 @ +178ا_t1b3~ P( BP( aM?9!utt2 >هH6AM:R/Ru&2B %<Ϙ@;4YGSm}IM9blkhn$]?_Ov dZ#Xy2h )HiA&a~ q0E6!8ێ,&=XS ~m,; e` h%psBwX8&فUq ))4;r XբWߞì=g+>s ?3 BP( BP(t&Xu#{e >TjpoucύT!2.:k%G O}I3OnCwぜΘL8t(|-98N8JV8T$Z,2Lj+٥lյ KUAU=zD@}Uw1M6BXz'OIft4o7حE72XӃ"۬@,~}@79ȋc.o[d]0:h%}{YkFw,E6 5*7|*Zۻ~ Hʳuzh(+6oگҵ$/ BP( BG c?2 29w=`2xMT5'`;R,Cɀ}a{;=h01 ޳utRU{7~;ϙ:rT]?mrQ|te<f,3Cs-zd_2ݓ0וesHHh 6?,rZbBݑM1%3lo:O^ׂ>Jޡ<*~a=8+jHmɜ ,U[:|m(s2r6Pg hM 48\x]rI9-߲gN:/zn:uZR5~ubBP( jv;\xᅸK>Y_ȿ=B_r%86׊YwԄd5&gB[,׷B`F`}2IԶj"5~D&im[e~OputU/֞  BP(:q-h,=X+&>exEep23YRC2l0bI"m#&kzX϶7 `Yv8G'\Wd%+ơ%-ʊ|jeƚq\4#AW5Ԩr̮S`GxvŲ@E+m4&z5 O($f>{/* ۧ&yނ880j qv+vQRl5 \kvq&V\H8> Oceqtޢ$@,? ^C\@RơP( B{nX{dm8欸TeLLL%+dޜ#_iSCJYIx30"P)fÒäIʢ/JFUq]=ǁ+[rtl43U#r3`lʮ{CBF| 9:1ΣxAYNr5#cer=.7pibPHy psU=ug+mZ1vpY36WPWk ڀ~>=d:蟄%jrC<vdOiL UVF*EItZp L6mUCnƍ#6LCP( BP(t~Eˏ\oEf~KVh ,pݙvli+i#˝ȗ&G^{febG4Wut@۴Pu鉝:1xþFo|v->b\R1'_G92rn8v-_0Z~38hRhu,iCMQ|A뤸B`%uxZܚtS*(e-Y6PӾxvMtպAIwʵu.湁Qu ڦ5[ݑfRtޯP:ss( BP( B3<83Kg 5)6mr2lF%-шq`wk?[jᤳ^I* F+cZrh)<ȥɤ9ػ܉> e$OWe_l]+r}{G~ r IDATZ=b,yވwsld{6?sq^njG?L1RI3깏 ئH*[Pd$ɖk,pJ.‘ #k[?3ֻksK+R\}O.j ՘ BP( B"x.[YGVZZd-;w, GU4k9}rL]1v1k jY^qWyX; 88xޜTm"%Gs, ژ46QH( 4;,+(%)u疦`&kWeB{u7'㳷rݦ+9E-$覛0 Q7Q]Fv`TP6Fk>ʢZDT[h6.zl,y7H4NDC:[Jm`爯}fs &R/*`O?S BP( BPlҢ\[0hutW("R:ZӘ5|dsjثֱ+Z8y$ g삐Ӡϛ"]y5feaVv6G|C$2o2h<ƾuȳ<DwKTC[9?`vqi4)mb<Î~gLiv/^` AWqi% +e76U7#$\@%o?P( BP( QU. ̑g>Rx6eI ̑VZE8XnuIǢ\5Ø M:ߣi38+j5Ի8֭uǕKZ ވf|U$L#ܩ%;a&3X"Nj֚ޔ\;-I?AdX*wn!X}k-9Dq*ug SŵX{öyvٺ}c̃3u_2{}warhv ̺94`[%j-kaBP( BPl\#TA6rU抃jo9|8f  :6el4I;,pkPm62R58mӭ9[o#b}gǚyKgֆ㯎d;aKo6NZBzUgJ.rVLԖ4VUUʑULm|0~y۫6Ӭ}Ι4TyZy0µ2޳ꦗtF|4xBsuwA dӌ~~p^wبCP( BP(:s4:?/9Q7 UnJ:јKw XEpe;)5Z9iV|o:RJH&槮܉|ɟ,ච:qoceƮvf뺮Lʦ|-6wk`a'|ˌ(FO;p@:nU). }2ֵ!gk& DmTbvxvk* Zc|MA6٧]q .[]U:>hmz0 ֵe,:lanW7Jwn2ȧK}vsv'`V )}llt@CP( BP( Ɍ d#f@o<)[Y:!:fܝ<c<4jȂf'drKqc&䃤[Poip4{} I#,͸y?hL5PkE3L{ a B 4Y1#,H:, ;s95zٕ=sr5.d(ˢ0`Ȕڪ'D/GzYw&12 BP( BЙҦ; C .Ǧəf)ĢnRԤ;C#2*or 2ZCO+V)my-`!yFIIFy)%Զ='e8pi>.{dԢD]u:Q͍*xxl4)e1SnjcNXMiE,+_ s4ظ,ޘgAYJ,ic#U.|,q\zc#)vp_JEݕ[6OC8SJ( Жֽ6*s-dʼnsjA~ٵ<˟rڜrR`CP( BP(:]I3b@NFF뻮A˲h2#=rJ4`c粲 $\.KucΘJR`9dc]SܭLSHQg1t!sI}\gruz,UNe)`lf<׌SٟL:[=2PWvx]5:Zۏ*iƔ;l+m%w\Z`lq3r*HHӰʭoXsIW _Q׆R2~/mzk GkYF#ȳ@7ݸP( BP( μo)0و/sv4ʯ&rڍa%, 20&DB"?2L\>UvmE0J @hx%xsQեQSZр~|:\|]42xR(=焜.9&Ų@|b^ !,NDTl͵ج>W.(ASMyX!?;Rf,W("<2υι`]O xoFY/~j3w/ \cb@:W_G]=h+n͠PFIniÌSmSnC%>BP( BP(tf;FGAL uMXR1͗ȌCc X4z>: ĆuǠA<{?S1i0܍h,^1~h>l4w{?O JCYknVQ;Nhs,NVZO>vD3(|P;X4@dkU\.>BByj mХ4Z h[l!@Bʦ%4;>|9ZB:=@='(64/W%^ _GRK] f'b( BP( BCPݤp 4iVY 7] GrEMF@R 6Fa(sӨ4Fe(H jyY᜸]MwZ]hj /mz+8Ñ躖)Hr:?`فS9&81er~!i/+SRP F6Xq(%-fe qjW-h %tt j6F ld.}~b 4~l3 ar2n#Y4h4JV8'hjh۽;,\#rVBVdhQG H( BP( BgSqe17jhuҘWGYohmܘ,(erB_YGy1:"d)OņNV"bYp7vH{Go]XH%u[9dM‚F|7cwۺqx˨6s&?"2^puC)%{ȁ&iHrZa4ї>xGp\r^hpd_w֧6[0ofk)SCabks0뫥fc)_ڐCm{i&7mKJERj螪%X/k BP(颋.E ,6%ffb3qPm!V^:~WH3Zk P/0XGQ*kMoC#ugW-W7& Ɇꀏ~wl~yӕ/XJՆ_:,%ebscDWmݖ(i(\A|&\d`o!h97P(N)\LԶbUf'+as" di 踛[tsENqC9}el59qh&."]:i귽c3tOԋ/?' PKOBBP( zv;\|xq̛OHwcwq+o56Ĥg1'=uu| #[hyE1+ b؄QlSX`,51G4%ӥc! ؔ{l2e+S׵sZRv9)s vX_r~d>{xy&&*O#yJ)#G֦%iNhfBGoA]#^׻Pʂu]@ Ɯ^VV|w3sXN?uc V mws >P6mc tXҚܠoyoٳHN_  BP( Tʕ $9{:Tm%~q^)F%07`}gCJ)7'u?9\bvPgY~u ϻuHz${3`Pve9 s|WYQHMuuВ/rLY Fz %`ߘ_ g6NnNmCͪjvFGtVoˏiB6@5W).9 MY,΅hCW"n%'ຸ'?Sc֍ys=1?PgΣ-ED BP( BP̊T>=2lT!co~α*]vkNCA 5/wuXG:l VqgcTpTώ|~ l.DZ!؋??<5SY]ր<fq--ٌϙ?{0i*°ã"(q1eJKp_GrYB\Y8LavmHt+j[Kl`wmYAlvx~mDgzw#vCb|ػ)~ۑs9 BP( BP6_9MԦ(ǚѺSH I*8hD 5@Vi4R3ؐycALjVT3)$ISZٗ4~R'] hLyNd4:{O+p޹ ӑzyerG_D7:XB`t\ R%â-ɗF6RSFRKn!SYyo [\3ۧԴrrlOxMh6SW%\R:KMMϷA"hsy:פ;M?"fq=BP( BP(t6hbY%Ùw bd,d橊Y,Ւ6~l=Ț)z#ltڊ-8c0~/ge<ޭM "ҝzNwCpGk{TP:VeS6Y&]4lhqyCbқLKA:Zk wƢ4!aAJfw$i8p~qMQ !o؏ґ(i&ۨ1j~swlb]gJ_ГzΌC?xP( BP( ΜGp}_㲭57 Z&/?BVQ JvJˉme-d_ƻ=t#f F^#J♬:e8܍+qHi_n?q>67a3do33aCP( BP( !mG!fv nlOfZqU1Ґű֛sMja 8~] \D)2&Զ _AS֩S|c,Kq`ϒfKqq*8 qu[2 *n1m&Mc\[tfeFvŪsgw>nGpI ut9 ^(AZx>ze;{jVmu|s*T<NJnDlުt<2{X*hm+HI읜(q]klf+y{11h2JCP( BP( Yb%45zaV97;7hF,6/#,&eYCJC‚v)|d\( 6NƑI1f`9-'GK֘$3LEx5sNv aiyf$%)EXJvaJ ] ib2k\s4IbCy@t֪769hvȫu*zIk!^vPs`/ov\:g]?h`aɦyj&y|@7/r f-z[MH#+曬%,r}P-<i~ks <(h" شNq\߄ }~ܥE1 $MZ;ѐdZ!}i6i gm &I ZQh[m;ǫO#Ӥ! : YmǍkxS1s;BZD!hղ[=څ +X~cļ06&)ƌ]y/:gytodˌYUil_SCOn֪:'gpirtxL9F oGzRk>pBʹc {m-8Ѝ&NP( BP( :@M0|p52XQ/-e78BGJǧ>yKǙQ5FHJ . H+e;HLsXAF&զg9ٕgS|yΔ2ֵ!Eۏ=? z{X!@՜Dh-\Hj8^Jʵd.ʘ5XE)-mm233֨Y eIQۺ/l0mI7$4\pO릋sa{6#Z=45]U)8h+:w'dn;{68\_쳌skF:k 2S\SNr4>{kIp=c}dVL|<r.{Ss:k>~ˆBP( BP(t,W9s\t7Yqu#llPn@gA̙)`җ0Uer}tgtD Ƽ&Phxo/ ZkssCn#M3#~Z@ld7&X+zy3F"ԆE',XYFb<<WM4iҝ+t3'[MS񖐴!ZЀ:ڛQd>bYO^u9,;G`jϘ[cfg@v;5v1]L?+ 1(W0BP( BP(tox2 &+gnQ6l;`SVicrAG>:ȖZ3_J1Gh-j|Dn[e^ɔ6l\/{akpVfVJhQAam4$/)Li_'Guj+׺I"2㚧E6dsDTX#X+d%h-5k)HA$i)nZ߶:WsQ,6iэtqh4Zo(i6g/O0Z%sЧ0cIu,Xz"TBǀ}|!?ACP( BP(:4ĥ~*?3Pc?$3Ze 0&aĒkíBm٪{J")Q3Ja2ޮ̘\8&*oRI';7qRJO┌\xi2/< ȏuIftiXFk#Ԃ5fKZkE] gǪˍ PU{b[]8jk2d(Pm6NCy3ֵ2QFLs9p8']mUe#4ۓfm<&TEFiZ)YRs }áP( BP( άcZt\ țHy )`:qmnVDo`?r#-H3LF6 p?GKD6XpFF9[rTbp4``f1kҦlxoo2} >MJ 9H\9`kn°Œ!jنd4u%f#2 YHneatX]) sF/ez[fIٵ A҂4ݴ 6E&<+\Pvِ~.ˢYzNK$͓tm 9C| Z8CP( BP(:$Q_K11))`HĢ*`PwHu3<@E#iCQki.;®7G1q5g]0F坃Oa'N Yz߆qoV*_|p.Y'Ǽ-9r6ѕM Q>pLsUJuZn6XK. ϲ+稺^hY>HLιŗm,1 耳v~PZ":ƳIAfuugGຮl < >\K*Jy/F)wsF> BP( BЙ:ɿ-.+#$~ j\#Z_Fg\簤-I{YG圝 0ep%9{#¹ icx?x4&1ude~ O5eKqfI\\3Ȍʋe1m{(l Ԯ Aw2+nM SH?gҠquV21gk|nZ%kϦЗuɼkpIJ0n@BV3 mJIt{znߜMYAMP[.l _ª0O $[, //LԜч< dASwl;Ud\EsG̯d{OۜCql'b( BP( B3+oӎAb,h9 61l%Mzoc01Ym4-%VE<Í]4iIJz~!d%½=s乗kKN]'N\0Q1#hƪja#J):2ZWLnHz9^T\2^ [_u 8'\wu1P3F;K)(e7kJZ*`|,5Mߛgq9JKkln3뫽=CacP']#K?,ÖʜWޛ߅YBŭ(ƽ7W0 BP( BA h 0{{`%}x3;ctUCRKS8w>4 erhmAw[p eKH89, 7yCfRl4=+8S^s mʏ~9/ȩ 8®r)E79~82SaiɓZi䦘3mV5m$oFk]9̥ݲk]+zf7Sg{2 pΒǎF6i=[k8sOA܍2Vt~qɞvBP( BP(:4'ܿywEVHa9":sH+V 6:򒼉z㗀7=nv#= ySvЇA䢬ՊV}H}ُw\Oc×~0;;h0))PSfk:K~挴 A;iv2CǛ"|3;Zd|Xum gZ+XPe @W(9}~n>66"SJ{9M#Be#ױr.8+>$c̽y*- BP( BV)WG\5UrgvP9@8Rt왱Jp }Dc̰.9]0k@ Tv}eJWC&37cv?ՙu#sgՁC?džm7qdY6\)ˋI}명b,0zX׽9ֆA&yfEʨku׽slP[n<i*g2Le.|lI,j<֎ +3k6S`H:c:~z=_lsLleFB6ԔxH/9>+9t(#'d%&Sw]]Ik+8eElkct[.azۈrNirDfqYlwP[ fE ϐi=g 1ݬ->! 丰Y]DM+JRx2:ZkC ( Zy͜Ypr&,>Le`$ >v}}6 BP( B!1e6ks<S@Ǻ,,%4R“|5ws3PJUW=_W"9SVJс1ufGdf*c<[YAùv U-UeT RJhN3i /s}XC20:zn h3 |1L*Q@=mݳVΞgpl㕇pX(˺IZʿ7qu9=[ p~fX.)PK?H1VS3j쭙,Lk靗tbz,߹_\l( BP( BgX<&l.k,f$LD`f`s")\zT\lò,àcȌLQ1bn_^ŚmnúaTTM}j=/%Mqa\;\NE Ⱥ<=+xñ}ޔq&pC s.Ñ&'X28\ ,=b6/>qafʠ~A:ܰ:/m4w,ˢ4h @]tm|+UmJDz(SIϯ7+7kFwL?X&BP( BPP:= "68'b +$qj}o-wE@umudӭofwC;rOe33phFk*9&Zym |ptl"Sv|0r|#Updsםtsrl-5FziХLDmࠅxmz2~džBP( BP(tE([r \Eǩm GƣCz=4(ՁwX!5Kzf!UX/G>ۦdm iV 2nҴ͕l@/zN6\"dEޔb6% }6m^%M3H9E4O?v-۵wJ5c#vugùX'&_:40o݄>z=o4޲؆m^,VwBP( BP(:+bRhD.#%rw@ºwx~z^9%%ibs09rp 2+a5H_F_ޢ+/0 1bX\O9⣿yj qrsizV\_#JXm8iTukEDH;V\:y죵fm%̹s/i]ie 4E6 ^Hhѭ}جU /eٴ"g%-iF[ƮzD BP( B!p1 uG`*5Π 83ϟw)0Òz7ܜ0,Hi[# +N>j lF9Wme0.q sLC펋I8GsA c0(λڪkvAuz0Lܙv݌s۽T˘Wq }c= Ny48$M YgW2zHXs3 .vG{-221~l כ} hg~KKb&؆J){ppf\sVn2_7ݎsF]-Fb_BN'q;~v7ncj19Y}o{KK>4kj!~ˆBP( BP(t,/nޛ : iǵZHK.H2Ip2y1,=J2,o2ft\i M m"km%ןnfX\A9BrW-$pzd-Ng~|W :e}CP( BP( i'h0"G 4^#QXWxaMtAKKSZY g@ghߗzY a6LD|dz$)C.JbW}pV{|On}d+Ǯ:mvW*bg)`_@gک, OΔr}b2I8σ,tiWgǟй(xt{GNS_{ٝ#6gmci!mbjczjmv_|B-RݴY7g̕tHshP BP( BPGigДXqCl -s@qe>ę+%y1bpHg<\kZk„:gL:kt3 ήL`6kKoR$0ދIM֕ZZ5ٮ7R 3R/gebJ"y!}heSY5uG`,iuy۸,;] m =i͵ }0sM<'bC۱3%;nHZ5m\Agۡa_P( BP( 4 TjXƿ%^m ,N jIwMf-zei6Jdy9AR-p$TS@8*etjF\%,19 kYؖu`ӵ033r.^#QX:'u $c.>~jTNVXfCg<;LF fC/t@upFCˋ(ֽ^$~`o {Oﳌm Yyw?'pΛcN ih;moaɶ(aCP( BP(: }ngQe\> DLr#Y6juNzf[(FdFD3YNVG#KPXf|LalK)nj2u]d;ݽ^9/rEmo2B%X7(o7Zb[i ś:X;F٤cvmmvRBfnԭʜc\  BP( BY DչDcWG>rR uUs*`:f }K-9_v [O! FdfCwtÆ0Eir;)ZC^߾'6ofFQ}vR J^B^0Eh:ED.\iS/6+?lEs+oil-Í'YWY>`.2 T?g99ND:6> и\BM>ek5>@-N2Mc( BP( BAi3/oc,Y3ࠍ긃Vh$,Rvhmyi(0䢍 FvӦ]*MO}8 r.:Aspx v:JIeMn#E. h鰤_K<~#x6d>7)u+X ͍˒ d<9lj ^BJ 9$)s0Mū*rxrE@ն-|(bMHȮPnXb}36aYs 6 k?K>`i"~ݷtw '\5Z;eHFl/k$& BP( B 3#`'SaFϲ6 5" DشdΥwǹ7m ml6i](փߧZo߯P( BP( a-jlSl3Ϊ?'9sTXI61-qT${nHdzb  aJ;MzcUͳr.HW]׌|KX ,Y+*wB2۔zkdZf' z$n~ xA)Gm39G>XfKY,&훣xP\γl8dӍ5k,2-p‘v%Ʉ~w<*3R症ϻ,漸5bdx e \SZ3E{x=]⼣a>}<\SG[No~M^i\x%xe߄g_}9~7Mo q}o{>/t =/yƫw+'ދVK<ŸK?7<G=ڷ?~qx_?gr^*ŗb gA,2Ra7)ǯ1VȽ 'ć%*L̦)<},[K.: :еF\%f.72XhEM36ـds.)B5[\)<օgm1KYa3e06audۓ|  4dZnf#vfE#WxC?pmoUx|g[<}Q_S|S~naƫ~Ex-s؝$p?[O? e}A\{?q-?x֯Qz_~tcNKo} _3G9O^~ou<]?oU8]Q9GP҂7_w學KΔeߌ'\\wCo?ß~q{u˾ ̟?\̿LO|9y~/w<v^.F<לs]j/BP( }9řr `3/ <::uݏmjqX?95' +H  K,Rףi BfH$<O Ov76a1:fsӈf%doTӱv{NɗxWZt^r=ȱ0 aʓRu42?+|n-)-Z|sBqE7 !p5*)˲suؐ,# V/"39msg3Bho 6[Ɣy,,0 ܈['d~)n%$wt_7<}WS\t%x֕{z5g oqzW>);Oy%seo|no9Z7 _qL퓿<;/ cw{oK>¥ ~~!`sv'M_Q9|;n>ɓ>WN~/TcOovovGc/O]aگ;> z^~~𰋾_O1~]_/޻_-oOqyW]}jJUe'DH@ "nek7΂Mõ }ȤЂA  $LRgk~z$h~r޵o'\^;7pY?UW8_naNv"z6oԏ۾x{g?r/or\.9J)nl(heTdF+%44#QY-tT:V4դM\J }qEBb &宻v2Wtc;*uqCVhqcm+BjAkvQ^IP$xSMmfN_5|ֶȿFhs0CD.1"Y7!36T1ϳS"+%F[](ZCDJb&Vƫy{Ÿ#g Vt /Սۢ[dv]ZxǶQ  0 ;*RޯKK^ہW_|ʷg;Ⅷ:>x§3~|wckQnʛ=z 8rS@ͭ[o?gC!.?{wyss܆np?̷/o6_38A{.C\¦C7NvҰ~<\y+oo܄}}Go9<ws~9Wc}H}]ſ 3ӏy=5j=7mĿ7?^S} λWWW/9Cw7qo7A^=o_m\wuVWh}~>7qp!OGG,pj<<؟n">y_&\5ùgA<|/ Xs>K7XwB}oks+οOp]ݾ_m[|fe?p~{nm|ălN;c~7['XĐp!|/r!{t\~ߙ<_?⽗.x MǼA?y>GgA1G>~ o_z,zK{}j{sOyJ-ǽy? V=7s 9ѯ;ؾ>?!3r\.uߒi i8a((nI|P J."E+Є m%PMy):'&{ǛeCVpYpoB3 B.2W.F~ (:`>}04YĤFۂ@}V}??,:*3 l;#dnVB[M3ji`Υr 9)Ŏ2y dmEAJ%Ңѹ.Pz[,sC(]A4Gc(EرcY$?,嗮r,ZS,L %š\XnKY@RV@Ip'=/S\/[.7}?6}qۥ}|>K7_5/?#:bߓ}]s}p{*j-U|NI?]֭7` @?+<;P4QG<Ƈ^z>}K,vg=n Zp&p_Ҙc$l\w${ʫ/!^zCuo{wAi QR3nz8Pgr\.ZTU84K1fE1K4" UBՆ*72Ԃ!aD)\Jh&1[vjgqvB}\}9+^ˬ y7c4`SY9JY?ytV`JF^..aQkXZZ|~9o."M^ԗ&L eaR)&gK2LѺɔ:֎lmf*͖ڻܤρi /I\|;@`LHa\8o~]Pn;kgߗk6|WgC[=4`oq>܌\G\k5~W ٸ\.rz-Bۨx&pѵ2_"&IEJTLQNfظR*.)rC7Ew q,ÿtfԀ&Q\̂1k@ K mc]_|FJbO'ZJJVؑB|>\N\cxϒʼv@ +rs˥8jTraculÀƙo:xQ^,׶h9ʸ`+^xqՅxfq242$h>&-|1 4pbgG`-jYF gL1a>L|< TI)nIޭf]x؆qKm.ؚz=8zFW#=ON~劯M\8+XJD-xA%^x:>zSۿE,8z:6kovxAg-<Þ+࣐\"?bmyKmwv i{m<.?ns>z{ۖ~t_w8fq^ux};=U ~r\.4.n PWc4բ[j' HXqY_8]IQyjQs -9KȄ%O df]!K0!]?bFDd~MAGUJx䊬(%kW .K)13f},m?F_M3˺F=Ln@3g  bQInƬ͝+0*X Xml7U=<ƃ5Ô\Sc"g.|bk5Bn:`FuQ@[?Nf >Ԟf3jfy-3arN׬BGϵw{në>p>y;V;7y֯:pԾbK~ sN~b\,„]eDZM꜓~ r5>~[|{/oWplj=I?_|Kq${'{..p7?z>Қ=GwRubl=p`Fl[HyYfLm8p˻L`顺c`{kq0mN|{U~OzO7nC\=6.r\?f$8q0bJ6Z aRfZ'QnS.`K`}fS0UeWQe++A\LӟrQ|VJA"; ֬Y}Y#QmRZS ̥= !\5s+ba:g(k` z Kk IDAT)-s <#ҋ|M bHbdɥL!(:苑l̾K@8{\WM˄rJ5*WMyvAnL5FTn*I_|-$=7(rJ ymCmlz09b]Vfޭ 1|K [v܂G,]w܌~K' r<ė#_~[0ceǭЗވz[y-mčw^r 69x=^kno>X5[oo_ve &e-KvdYG=</Wc^kߍ;߄_}vvS1e\p_~ަC]y- tKߊ۶ހ?}žx?O\6)8fq-}{ʫ~{czV k+qη| >7}Ɔ+߉!-=$>v{;p37 W#pMu?ĕoy?}7oc<w_O].u 0Kr\.UGy VcFJA Xcf4a8E#zcЂ h%"H_:ܢوGe?f3&-4Vdu'kVA^g m)y@7 }kv9wޛk8fqߏƇ}~]st %X3ۀ^sMg8Ч'ZճOW _7|xށ}k^~C\x;8`8N~nU<[^V!vg>6|?y*a8gṧ =lwqƓ-W-0ty-X;ۀcZC7<hܱ8'>y_ٳވ5KqE=/xĿNezkO(9'6>}듻<+vE7fO?^sPǮt!< o'pKz#vs|ixÏ|vsع~l"0C65*IRQU0 b=X6l-!CA%KYIh0OG!.[ 7wFF85O.ĈP#(ԙ A8[@aS1EVvUβ8~ayv c0)f&j52[$W&ݲ5yn(2SP;lJܘVLK5l7v"a-=$am4/0xW>\ xŜ6e(!u#1p41k˵k,x_?O>%xiq=zOsNE_p\.ڃJiizshH3SZ&JC@ZŪJ*(rº\{vc9߃gm(.r\.R'_zj.Jg5qx0MX-h4J^CQG_ H*Z>fY̬`hjGvqҎST`Pks3m6uaHPYE.5VÀg,WiÄXaӛ4DDLֆɭINZ$+qL/}U\h zμW]/|І% ԱkfpW\& 097FE8箃dc xD)#R`?`ak{1t>Όې[1Zz}j!Mr |[}$G\>;׽О~M.r\_0H.64lZ>0 𚀊ZlAr3G'v6',v/5s:BXPKe_+bDWHj]Z{QKQt\ ̂"* nv9Z SkS祐_ xtݲeY$PqB&m8̃{vFZPz h@T~ۖk3& U~ |Y-6v+d"]6$mz{ӈ!}Z_W`l=yf0sʺ\U7=ѿA{.r\V٩rFqAŃY4OK\CַZ#Ș@Qj^Yg /v Ivq@-i]o\* )Eqy܈5ˀٍ%G}8iYv}\pG_ !*_4_]~쮛>]%YHiSLs[pm:p2f9 m3g}MYSU5KKRxW.е@FQ¤NU:_?e].r\.Êw~.N4jL2 ? T")MZYZkʨ;!Uq%6551}h$9̉5܀ZJ6K# 65R8#rohٖD>mN+zedWNb}[+WDHZts3ucqS=.u'Vy]JSƎ8vUk"%`rZi~$%kIL='?0us|b̆ ,˓OuӑͮK\.r\.˵7(%q`!V$LXE5m,,kQ`4ymӇF=Fc&d"aǚ bXBR&412x4˚,}ѤLsǥ,(?QK{܉=S~B̥NXXi` κ.L,} W#X9A08`v֚Yt5p:lZlaI1k׮n*Q]ebT[uE3P x~&JM3J9Hjlna_H~Dc8Zs3 _#jmZwp2r\.r\BuC3*, 0 / dpj2%) 85h7B9w<V_O9bL%g5=l̔RX 0gl#Es52L>:.ƍ?"c|/|0[X;ξmS/aS#"0!VP;oqd!>f.0 BG9Ɇbcƍ0۷Dh#Ȃkulם 1snoi6H8 /=`r݋ A@ |{bVd_|B4.r\.r560 3&"l s4(W]\]!sl’ޞ'λF |<7/%n]tЌ`g\t?a>wꔋ&C kQ~Æ '眻K[qA) a|?-8t\$F궠TnlDT ςSp67pj BCLun;29Z!ƨfi-t.;JQ[@&Ӗ^="w.2ԭuɂla.z;n)/!WD/`SJg,׊ۦe^/Ymˍr\.r\=/}8{= Y dva!ο z$Z$B3H3=3jKVi0yW7O}iB%+뷮ХYcgO+Xk*1 {u !ײczVYֽLuzmJ*q p +gjPko^$ߤXms[iVABUCbpI5d3;5ɹrX=iHBED+JEj]w<YZd´][gP :OXr\.r뮘 eb}*Lϭ+GXYbS4iq@˱qa^SϓH/`|l* e +rRؘTmKĘ8nJiÙ> LNo .)h3Mf/bsM7XsZfZ#;#u@ov5.PrML.80um\n;mSF+h07f&_0#|+dL)`_UR:^Ϋ}Y}tf`or\.r\K O^0փ&![lyGfvf@ Zd~ۢ P\My@J3v V0a7^2qybLv帼LKA`6Z1 P(mә}˥ݓ!r|-.cpKKp,5Lr\.r\{N8l(Q S>SBj'~fEs(JY>lC)0}B4f7@5!D.% ;J,T زes+ Yp3#fRSΓsʹJU&S%YS %΍yv ey%f{#3Cf DF{jgʅ?¬=iK.Rs%BF&lHoDU 0G^)ۍPnFu,˩Sc~k|M0C%B1Zh9Fؕh]||9$gbu.ϋׇ~xz0+r\.r\{X٩(yldJiyDQe-@DS sЕ@-)`)Ecbڀ)ǐQg)L]d&sAQK5r-)7 (1 :nnju6aMrԢWFfIauqޕX-;a6-9@J,y9_b):Z1!ț].; ys.J)׬Y2TmKJ0PZdX%L mߢ]-n!n]3o5͇zBc@͹J~ږ٬hr\.r\.מ90)Ch$4YUgY4Z[Oz"Vi|{&4mYřHRMhgJҚ[Jq{1!&65: "< f[21"A{,(e_! L3o/꒬A)ʗD=o&Z&u+krK#82YZZEDZ$/öK6K_D jI0_s$w\u Պ4$Chj)kl׺e0)6Q鬡٧?E w 5V2FWIOihjZعN Z+1kL( m{ K&hmDV j-`FJ9p٦"~&ShQq o ֒i>moQ%{š5skqZKySӆU MglZalCuZir2fJ=)iUNi@)Ůsw\.r\.˵5*i~^\`;9l[lK-V"j%w,|Ȃ/&;v̲[ڃjgFlݺMǖ)RtG;ngꒌg%\=#9y]GE-pkeXR(u^9d mf T3]iGhRȲ Z`fl$suBsߐD)ЏaClܸ `.-Xҗlubv\Ax?-L<_$^u6*-n S2.t\.r\.3{>;/im30ߩCf"S0 a@5FfӆaeY6n*hcz\(Hَ {N_x@1gF|}hG Vpŷl9 ݋]7w|-wи.嗵9@;jMdCqd.bg10 Hn& \N I JzYehɈ.犻l$tF4UR7|= ۸ EݓHl,=޼ uaBA>DhV,G'%uWC].r\.ri }<j;9\! AظJ:9vڀa@/&RAHnךLo@#4Il'V:6^D;: o%"q;RdKF83_;m1n3hT~BQƳK[T_cWR-KDvi-q̺uEe V宴 Q2jf3X2bJM4lCj 1SXkŘG)E#Za{ɉk`!?3)!QZ+b]&] K4kk3]W%t\.r\.˵>=_i4[@"6^ń$;:~b ,^A35vQjǠy8Ε{4YcGMBQiX*-2ԅn JFcHc郈okfGfR7DNJ@=eo/A&PsmA[)΂~!ITj$Q־D:J;=mơcVޓjӶatAE%g%.^3uc۬r`bȎ>Oܻxmm?PRxYre"fl6n ݋dD7ohujcki1gZZRZ-~V/!0ũ TZ1t O?T3޵V:B^r\.r\{F +NSUֵG w (]f'2Jv"+sAX5bi)Ʀ*:[Sw6UhTZi Rp/e!IT.IuB(h5BW@\5i7܁*Ϝ\qI**Jo$Xj2z棛lmCm#8R !DZh^Gdu%̶EZBmfa^Fc+2߈aKkmQm#TYCo̱s:{ekHpv\.r\. &#r1UkҢV[,R5 cL)o9QЍGY}]):`XSn!P-f@cȱFe@__1,sRǺc[Kj<E`ljʲ7}P|YE#@Z[g4s%Y7͎}n,{~v [0Kc::0`g"éi#!H0Cr KJi1 ւR4X'$oV!3YCrt_GV΄< yPwn2Gnmd|DJ==tZg6&pX3Z¹q.r\.rm f݈Z=r+Vc_6j,62㰐ўCӥގmW85k`#`~'_xKcFОIxM{IiQ01[q݁ԪL\ _A* ̀qڔm?.ai] ɔ>$S]s0P_Sش"#Cش(lt$N*ٙXr1[pX1DB\Si @;J|i1G?D신`0S@@Dž ,`챘lb)j ]s\.r\.˵Ȗv40ieN'-:Хf&,MӋ.rgtGi"JrRn8;\y!䬰26xRShf)&ŚA:YX)vM*6afWqRbllN:|al33Ltv x'CY[j4xdnOEtVEgڦWCDžb|I @F&tl EL <_ ?R+4 ̧.TٌP+XDa|XdQ,"iuN*] &9 zf3S6rMz/$߬&P䰋EZ, JТҩ @U'" R}2L;dt|z/&0P&QʲDdyWbbC-9UO7-Qa{,}8tǕ t Q)9٨jr\.rQ4[Q V kl Tme#,o(K2Y(ψ-%FqWk@m uqs5fҔ{P 9ݓ*̱8܋9NibA/X>ZSjE-<8 bg& a `rMq1VqUJDAZVdӨ@kgbRl#A=`g$jMƯ LykV&Z?jiH<f7f7u!̬]55wj?U7wr\.r\{\d>C6; 7k vH~2{q,S ir (ة!"g`t Y0ũArb^RJgBiiz)1^*vR朻Y>I8TLb()(hs|VB [l֭;u 1,%Mh|B <1PuT쩓 D;\p/C+ш#d%if)5r]T# `oLYkmV(VrR7 9dq4Nq߂aPNnƩsG>Ft3~lkgN Izkk5$ys0WOYr\.rb<̓#Nsn4DdJ21MGKĘ$QZ,h˯|4n|>JρFyp4.<;/2\a6%YRƮb@kQيjH[\sdaI1r-z/)vYZ c8!ZxE$[MHlh\b8*>`  6q f'[+{Uvai,W뱋yPIl|lnTksr)ۦ곹}7LIwi'rژ5ၝSX/.//}r\.r\BZ| )RWM2a!n@m%>03=^q -YR8r9Ti34*騺X3|֏ujժn֦gf<Ok"ˡQm`K^#`YI\ˎ3f@)ͺ *n6+_ZP\tnG~APZ}PQ% .r\.r"&@"2i"Sv^lyt樣2xBc !ӟAO@ 1!3b:" Z%lS/LDWqGrgjhjYql UR*f`Ֆ|(ZPRzꤤh!iOL*g illˏnjXȋ 0b2 :S8u2\?zmre0B*+n =B5Vb"L/*K!Ⱥ `qv>i:V\|n3ZM+u@hr\.r\.מ4(chDZw.kx>mChfD 30C_ndqͨ(" 2ZJ5UfFM}Y!qDȮy. MZlҩj"Y5( O{5Jznbe8 {-gjv wn,IENDB`onionshare-onionshare-26fcdc5/desktop/screenshots/appdata-onionshare-receive-server.png000066400000000000000000012316741521174352300317610ustar00rootroot00000000000000PNG  IHDR}VzTXtRaw profile type exifxڭWr$9{E߱ -,6B;u.hFLWu13נc?hb*5-bwTy^?ͲwEϫ|>n()ykmz ܽm?m|k?]J;`;k B =}}Evnso{["| uA.}y/aP$kZܝ̼Wz`;1?}ys f{bźje(sH;c>5@ sen3HsdOk^"N,2` Tq䧳rd3܄IN{䟏B($+DXB&SI5s1s¨^B%\J^C5\K| @Xjjkw& ݹsEÏ0H#2hOgƙfef_~EYuշ۔Ҏ;ˮ~N.m'8Iё P^996OS$O\RrS`Χs_fRWy˜Q?2gWY[2J R*6Z!<6^lxcVͫ5RX$wKا6lmQ~l[_ Wǎ唸Ȭ-S܅<ǹ[O/jzK͚?Mh2J_na{q()hkmg__ y[ԯ!dbOos:ܩg;mI+S0ja$U*+M0FnjgTِK-҈3 f :1q@@~ h0gkxJOzrL(,?FjgZi˰I6Ϧr=>*Y{u@EDٗzboWeǦ35`i8 <6f4nmGMNjl&GS0MX"ۏĈYGG;[b; <|6c!:t朋dB ,ͻfЍ8gU͞ZW:$kavh=qJ˷T jb&R!nV1w60a;$˵u[zSso2H7ڸ3 MU' S2ZFJ&QtWiJ2E` юM3横_EOM!L:ĹiT9f0 Q\YR*PrO״O e]j2Χ<%D/Db+#hmb*N^)0sŜ/cmwL}>/2?ƿ^uyt(էRt`QX0T7F~ͼbgk@Xw;A@ GhycLHu`c >mGו-sAV4+DT^ Ig|f[s^o3 ?BdtxdAZ4>O #KaZ?Zuih`UQ'^̷xj}V@V:^Djp=?6 ׀ #HR^o4 ~CsGQ"V62|ֶc!XZ9}; ^Ͼ|tsD:rG ɴJOVV,+rEI2~ 3&mz;) AB0qY}ruި@\t3)9yw jf!ZgSJٹ:]xz ksBCYϾh.ߴeg[ b(jhesY#P!nL(f]~Jk.LpRp8121)>G34*n&  mD2eo@Jo4Q_ПB!t?y=ԧQ9t_&MȀ˛v/ME(EN-ٶNJ̲֘Ǭj/o#\[ZX Fj^C54 O!bҋ2yO1Cm& aX|[O:J)@ ON J#Vf!yjuDc6H =` P 3q5KO \pX&S[!x@Q_p'`i~9թإqiHrDFe.AĚ1E3JbWAx:OڭmO_X=kH 0D#W/xl׊F@)D<_;~@9`OKqI pQ0kBh"6elc8V '5u;^,pPB=n0u \!=Օ:xvD`* Z`JH ^7$zhHF \f$nB<)AV;QY2b-"Zi鰌IuPN6˜|qI1V\{9rdGD/LåNâ+y]"NDݰ1#6SnԄJZC(q;B0R-ɲ'2pZ$esG0htjBC|X%&[jamSpB\[j6wpP׼vTdѹ8<|Y]8.q( *5QM[Kau |r]2+0w@*Qudk@A&Kڊ<p.uXC+ +R:YdTm䞂 x&0nC%c.0H V6*ujw[ǐ}R: ZG!3QID{6!tҭѝS[1ԛy}4B \κ9Z66sؔ&huaI+%Ak fU`oUpac7-a#< Z#>:$:[|JE v*VfUhݿLI2 eHH{/ AT=:*\91kmu`ځt;`G@RC>,G tWl`NA!nAjZ C]6w?* ꨅAe=vg1X`.{BE!6.`7ҴX}(WNtAY2چs!+GXx~ud;u/*në*D H8$*Qn2C`JPB)Sar72)#ދ93\ɱ{ϢO`0 4{2A"p )vxgD`bY={Eby顥/xc.T'z j<اtU`1Qvm,n0 칂8y*ߔg {lEїaSɨPdyGUx%̅O73DeӲ^QoqDPK{ |Vz U^DJX I1g# ,MP7U@WFՇr'H 1Z–IAi k%d:L>ZR/m5gd#I%yE:w}SI\ \+K\әݟW{M{/E ƣ,TluywT(307H JGak:zPn|"h~!5;^_Jq0[{T`&t_]8zS?v%"ÐO7< wm}^>]HE/u},$<嬧 =2 BM~`N:z*[a*SxR EϿP.|XbX 8~f"Z|ðq< =2Kҙ#Sh[O'ܧ^7鴡9HaUOӬ^O'"21(a?<,Iyđ{q\ js:kH* s?qxO`8wR[xF o7}q}mBr\Gjr|@ Xml\A.IqgI^wX\Q{N.ѿ] %LӡD^)fA4.HamܨɜţLcN l=##6f)kpaCŹK12T%XGkX`4^5UO d'8(Fg {}΢Z56$d2<"E{-6\Jm6 tN[:tO7MORɘ`vuzS]0viٻ[agD=ƌǀjI `y=yH *wа+b02S \pUGRzhFnK b_];Vz%c4iTXtXML:com.adobe.xmp obKGD pHYs  tIME?ur IDATxynGU&V~県0# La"2(2)ހA+Fe }'QEPehPd aH|>B@?/Z5ޏ\3߳M9چXI,h;i_h\;s&⟃y2RY/ych[Wϓ3sB=?}{65c}ڊ(/a%i wS'ss>[y]=?yC@}FiIE{7:ٱҎu1N b}YC)1;d, "O>~cG<4~7{rس0R܉g[ۣw0HˢtmJ kG7i{OR{6){cgߧB{WB):baߦ1rO)X1=o?E㙮è b؄ьKDt 5B7GasJc߾Kz~)ؐ3_e1 Hi'Li s>TPǬ Dܚc֗y֭-eam9ڸZ`r~s9`tx)&o[%Y.z\>?w}9g//׷eüXژ)ﺌ(׋wv9k}-kjS nNi垹٬{Fv}BiUdn\Ya z&Ԝ;͏#iʾ/_hoܮWRYSZ{2Oho6Ϫ>l??}OTD>y^mV;sl1{7x^)uVq_H6bJ뢙_iQ_vߩňӔ"LzPJɱ%vR,~ɑ@듸|2Ma8bA&vj;v6WM`HtO3,s"u#4PnDh^u 9Mdc;*NZާ]n@!9>yyu9nv@رc roS2-6p7m+Q`3׌W} $["r=v {mjAo4qŬO`r"5QG J;o8c͉{ 7=0@2ĸrs1 Tt_B^{lN{z몍/:R׏CBui#|lJqf2@}g,6@-=w^/{qA7hoyAԗ< 3;qXR[g fmql qnڜ¯\s߁Z> nn .L|[k^ny>מͦCٰOa׍UH^yơn,:zXd@au : mDn]`y>!Vg.?tƳb2B Um`@ @Ū$h <L/ tpUWcq9ϳW7 ߀뮻d}iaL$Qv}Ё~.M*R m֎2q$fcȍr|~/cval4ӱcĶQ[Cf<. h -g_TP61A,X7x^4|ꓟEu59粿A^06E6zSS8iCS=E޺Z!9J`ryK'w&o}H>ezy.̓Ϻ{.!_com}W~s ڵcKLota6هRBi J|ڇ<(p~7K04@r> "p$ܳd᣻Kl} OnT+acr+v=MCWAnB}FX0=nDKXd^l|'v8-u !<[Bh@b=ûX (5ڸf_R@*l7n"\ֲȢ3{ծ;\S )mDrf6'ٔ+c msI˰anv!7yVb_Nr@qrLtk,8[wKr@i!d׺:/ C*NvޓTik5B{oTl~PznŰȿkITv]# N Z ܮ`n/-5zC"RyD6 9.U%X6IZ޴6syD) րKh/ϟ5tR]EM`3a MSk/lGDGb(zfi N'ң6q .>T c?(.KPC[3XŜ?^%IƚwBr.!| Cm>,mIm]'$`*TJ7CT]Bq;VOXjqImŔ+uM|XYL$eehfJ[a X=Zv_RPDZ,]hRQaKY׈!s:]-y 8M z]˝D ?i~`&z|lN O:bޡ-en˜SpMmѷd&I S5 VGڰQf(`An OcT]olM_3ӂDLԕc|]|{e]v֚e7N_˨'#z3vںvN l}jDzl [VB#LeiPSe ْ' g<@̱Ѳ -Cve Ѡz]~^z镕=Ne%KEK }U-_`=e>Ԁ&E):ߨ͙ X\4q ,J)Hui׵<,6Bm2a<{)ɐD3T H3܆b0Rqfsa}7޿>Kydf\KVR 8V0?(KSJX5UʋP )M|,6.~dSCK!dX/tvFAߩe# ).EJ.f1ɴ{C@ʹj TQ+Y6 g+-o *$`i_L/F+ґiQ҃Y $RLصk'#,J[T{4pV~Wt؁iٗ0q2x)E@* iBC\"]B* %1@bVF#xM/5Z'CP17S: X{ V XuK[U 3sY2|oS#A?KI_WxFZ*ݵmחɽ ek/^׋g]-v=yk1̢}>D҂qbKyej $TYF^N[t㻂Ta^yccO*˙ `.5bgZz)%F66h>L]D3s[Y,Rˍ(wylP y˻yTaS.t I;FOLJiy>N>6,\Y-],5[pp&6e2Ƶy,7H{&YF%s(QAucZeyxF'qAsp +津Va3vli8oĦ'ĥhIgJ{ ec\u6.*oW\ȅ͹ ^b%Lɗ-{+iBіe.iRu371Zf/l g D`dgն98I*ȑC~FQo6|Nqu哚 Lͭr2Ӷ gMvC.e6P&E^e*ݱ4H W/˗&FʺdlՕ=SǺ@C_ IDATJAV+U@XvQ(^TӶuN٤ Z&\+YKle:ͪ = 6#b4Xvqv2=S-,Ry',oK{g| (n[FVضb7{??׹6zFe|j`^7+AMílT|} UK+{ٱ&F%X:#$u(:q]Gx?8wg>}Ţ2Nʨ|^j9j*%8,(dB<&0Lw{3 DmAj_Qѳ-to-v؊4.lBa/* aJⰲ01Ņ: ,|z]uMYr'e~4A7wZ4/;gWp[D>9DA0΃T/T,D׿:ryޮZ"\8iA-n^ 6D{jPrKS +$m%;2%APd IJ5E2fyOHg &/c*ukռf0P+LՆmo)xlepV*'mlnTZ]=FeS:]8)-^Mz]tpM.]uqd3yŔÕ_K&?tF'h&R==֭Y~c5ςa\ @CL:#ie=~ҲM3_e2s\)KyȵZg`x53ʍy4 M;F>Qs\wnPTC=R*E8A[9Ƨ?y+ќDri[X,4Taf(}z[}=T(6w-P%WMϲϫhY՞5;zޙk޽׎99cRb>x]-6C/a箄8g$o_T4`vn=UnYfk>js:HR3Z/>S9oUx1,*4Tiׁ(?2Q:I5[{K2'h"eF/Hs|Rt 1mŃ|KC'#\kn;悝5?ZƖl;Yawc- xMy4.4K)8-~1I$xF=AEMtV~aմ–ؚ|e}O9&uZ5S}sk40u7ҏw~:U}ZU hyXW`!J 7iFϭ^0Kta/sxO% 1h&bx~ TVu`Kn50m"oe):T/QVm^E0TnR&l&D_ )y~Q2plhJ@o㛞SrF89ٝт mz6}b1ɾDE/6 OݤIK+en)CPq> fh PAN]T\o$Ǝz6ߘi1h+œgW~U6' ̎+mcZ;3VIE7XJ9Yt"}.>Tgv1muUܽ.a/,9N6cqqBghsEBm9pI"w.n@ tp6eѕb ʎ#vA/4OR9t*{Y5:2kk@ ZؠYLy]Y5Qt}/m f.L* w@ݻN`qD&wp@0$XZ`ݭ њeo-ojF#ڧ WJ)MB3hf8н%EPZwxo>wi#kv}=kZnNLi߾Ri찬jYEcOm?7¯w^eZUd#iVۮku>=28{ Lla~2&yJ۠cS_ʬ`u0&M2WP[NӖ DRa+d\|r)NKۖj_t%^XO0X*ry~[{#IO: b7OF?40JaΠ`5DL&qRk2\R'/jЂZqj 28r7o2֒V4*B'$HZCMp;2K":I%;- fnM7'9/5s 7++/#'8ο,OͤCJY8iBV;/\1N>mb-lJ9s߬:)Ôٔ]+ xⱸ=uV"4.43X+pGb};z}y56'* `-B7f4זk<6/J66"2t-{2Rʣ,gj?]~iݯ.ynj2Hn#'"[VW>: g/{tw8\;vAZquvؤe@7l/\Ѿח e)-& lLXezVD/toȆ[$m2SmdʉB[KYX-q?ݙCI?T@yk "-+6-K1nsDyIk\/aEѴˬw_ۏVD@Wkal^xMsƈr@σmװ({\.ji^X>C{N;.a@žSN5=-"'?`Ͽ~sr6eV.Fb:?ECyVX\Z=klsNPs?_%|į!:{?qiϦ=;!yak:qA7ёf2+dJ{&8X "᝵}nam:ɘ4ʹll夦:_ 㒎UznƲ]ٱXJx`/Z 'M&үњ>wgxorr Ɔ$l+$V$fˬ<8E/Ӵ4鵽OdfM$;>tKB>/bj֒VGeJP=\z݊z^^L^C&#' ./kԃVL֘=RhIsr;N &%xtRh-M {@үI s!giqdL;أg>$q}?Rǝ0u1e `с Cs+&ű7PFb:'쐀PIpBs@p(_R'(LebȶKD&((tCdZKgSI\>{^b˸\Bqekt녩ZliuN.hZA(Nvƿ}ғ/~覶2F41Op>I8w2.t {E[b9v0JW0Eu/wPIw͖Z p=:Z×{^1uX:+`szHECH4B+<9BhMK~&]Ԙ4Fa9[:+S]|͈~f)P!!ɽ#ب[iTCBqe^:H16˛hD7ȢQ&%K{/SqE› ^RjlZ ^K4-ZhUTxr8`2׭Tw z.{-iIh4Ķ2梽3>π#vœ]wcBqc5~g{h4/"UKP'! t6YӬ bw oZV1 nFZR=62W1Y^RLJҪf-7F+/ټXf"A#"uUl@9[|^3E3k80F#F1bĈ#F1bĿIjx1[bLIf#-eem{bDkӝnѶ*>RcbcM0 :ht?=DlE VwP&- R7A`c C|iUkauMX_Z?;gLu!HՁK-ǰ\[^5ЯR_&7:=:)GN}w6H=вg!u!`)Ug$գwwWpe oĈ#F1bĈ#Foy18VˬVL ޱsv\5g5`7t异Gu f0b(r˄g4Y4,J!~Fʃ3ۦ ůAqʼnY1.k^DMW@ӨV8ڒ(GJ׳z( 1 b-(e y^`s`mJEXD8O@ATSSE8,MHZ͍$* <"!!|ŸŎWEC )1-cJ[AZ'_̆S;RfG1bĈ#F1bĈ#-#ƈ+q`Q (S/}TʹBH'ũ͊3R^kΓK}lTju܌nل uTҪG¾lWgJ5*ƙX\T2Pp l1(@p-9g{S + ̠6q AVWˎ+3sVpVlҗp5*w5choa݁-ٟ;4iۈdqN\c_M5Q)_7]11bĈ#F1bĈ#&KM7u:{8`3aQ.P2fȘpJQgȑ}h|Day*rd9;GXJ˕񦈦,xn/ւG #RjVZTX](;\0EB||\,fr]zMPnqE4Ukqi!7,чЄ]v`aV-kQ[h:<^z]_*ȨBhCVwJc1bĈ#F1bĈ#F|"{3&Z=)vVO@8k0cjJ1? Igʮ\ZƮCcM$-1NjIh \`*XsɁrz54g`ũڴRgh _) \:PGJ # y0J,7BJ}X.@9MS# fak$8*4ДD ˈ司f͜0BUAKPaI[L0P#F1bĈ#F1bĈUp*jL&7/fԪD/qE[yN'`Z2 c%|m7lnk@cdBTÌ[bӴ2Soj ~7)ZZ*ƴJ;|GPVÀhBD!rs^Һ딸XJ)VynrByr|_.Q`8J1H2,70M#WR4r})EǍ̀J{XiErT9#F1bĈ#F1bĭn[&nעLlBa escY .ɕ[&ts/q X'gDom@T8NOI[Ds+ci:'hM@,ʌrJm1bĈ#F(|݃<x]F2bĈ#Fw]%'uvDGN^ew]T!ʮ o-BV)=#!*B$ĵk.ƜHqް#Pفz 41G]hq$c'+E.s3LΘK+Vм3ڀ AʦB*V SF"sJjn$YEAWSޓz TDp+Q8BKCp'ZfP  7|jTKqbZzt4:baإ0,׮Z`C_U+62jKmû2#F1wqCއ&<ܫ:>y#F1b9y|fi v'\w5K7T5ٰ  d M˂LRv]rDB3BT5 Rz|/4pGvCY)S_,͗gsh22}d+FKJ'@~nV Qe ˂ҋNPW ƁE.FoTvi"+kr)Xi0 .E87^6LBC"rWV>*2:D2=0tLPC09i#F1╿Kx=wjjuo['_n(^ҟ =OEFVgϊCC]հWaT&JMrL=&`kUIO:7h  eP[jJ鲺XG; ӀGG1bĈww~g{4x‹_p,^/|pgxw9XOWGVs^xW>>g |KC9x-?|3Oa7VwSV×=θ]_~sNBo4~o|ܑoe/{KIX,Qwsi^)kp]6-X~ 67'5*M}1?j96^h.#AqɘX `BPu;΄´! k0HijSJ1€x̸ HCLki/`kmze^rH\i I4T#F1b5))/C G@y7S)x7|(|7bSN7_]X!_h綸ƘƱ|4e60 ͗Az&uߵIlD [maB&+F З%G4GS+DRq 0 !|Z' x6eA},]F)I-*8aƊB!*BkWM?*ቦ!3yoLT]̽ D{Gְ1bĈ#-}0?Sw:K tpV@]۸]fB ~Z}zDC 쨛R 'yY2y|֖@K T+*($8!MwigcZ[ َq&i(֚ M|PSfiAR\Sb- x#*BkĨ 6;_?N w"3qOs7-K"'.{qir?㚡|2bĈ#Fܪa>k5h^hq|E8(y)Rc}X& 8{/mbeKa \<˶IŵP+NSZ5BPS+U%╡z*{=\LwbPXmm!b+1!Pd }?(ˢ;z]?Ӕ&M*ˎqmafPC4V=>B#"">iD|E;MyRE_"loStC gĈ#FCG/ y/ ^'r ľyOw~4O{.4ߺŻaO'v죸q99Hyxǟu8*g߉]~}0xK)xqwq `wÝ]k8bĈ#nc|-wqv sXNo9x:ۆ;@L{R+f ^%cf8z,J*B[_1C WaLXd˃s5`Mc O"ƺT.NέzMA,c!T]or+-P6&;g`F]VYmݘL[fEaga5Ӵ,BeQ-S@gYlQ'-n¥.׶ /¨nALW M^/>\{/Z3bĈ#F݀y/y< ~C{n7\nΟ>S |auX >p@n9Os w3R TpFB5r-= 9=PF1bĿZo~S4cGJ >O}*]?VF"7Xuэ15Gu G&jkHfORBiJTb5h$E̺)!E1P0PS2X#R]E<@=Kc\+5OXpgJbSRC @EHy ۋ>dvCC}X T"7jYWje)GAf *:=bgFEU@ ᆢ@e=#RT;ES@O阛rr3O #F1bĈ#F1bg?GN^߮U+Wnw>|]YըSEJUYnl?pɮH1n`TH LXLJ \_sp_ymVc'|. WRDzo*+J3ŰdeAs|5k>ȚȢr,5RѴ\;Ȼ[ &SQ1 \6huJdMJR19R,x3'<yD\\଍Ֆyh 9!sc[A”[CbڡH4B:\'4ʠ6@sQؽgBܲۍ !DqQ\~ŮV 8 9aInı q~DM*?Ly;W2[iUʜFO+B`] 9G3!pW1+8մxDه|xS\˲ S9*wvGR:6!r3v L#G8f7 d!x'x\L۱uo΍㭤]kT7guڅVj gCZDV]V:Jĵ!s\;Sl@P#F1bĈ#F1b)qqU7 A@,,{c IDATo4!keB MBM XĆo@ ًiJ5r(LR:3 [k\&4;}-T1u,S7j bH=3ȐD^o +!P2 כ*"FJɸZz܂NrPo67\s-.9%Rm(CJʿձE<`(Z ,~r!lm7s|cͬ;u\)c k#=bĈ#F1bĈ#F3θFl!b dlJB”VڱC 03!yU-4a 5 :s̶y` RZ!gãgtr`5@#a-M +%#_IGls#}B _LH1Wř1$c@,|G<7-)9On;me/N>dE\*F U,w U\íׯ% Nt:Nt:{^IR&PAˆI@>N9ݣ|Ɂ)_z4x=EgVRn$|]ZDrkvƄH9]jшӂBiF]]l'n7VˣflűI'ɉb{lj[p+5z\3nϜ[xeѴD"00kE܉Fc/3dѬ|wbk:!"KcOsTщ\n!DDwF4ѰCd 00<n=M$wb&#hm~Sfq53H n%e֥iP|d=#o (PPQ+uՠPع07bݒP_.nJk8Y .8mvM*'p24+^I' KVÑR22Q)bPrJFĐ|\p\]Mr۹VJ+ j+2]VOڠEb'ׄ۴r)VEǼW ֭#Pup lG6r6bHXmΩ?2Ds689I[$^EvOGFzt:Nt:νpz/}$1F, (CV˳eG.SE"؍CO5b. )*%T<1uCl:0͗UQPX`KHMHRn!AHՐU5\BS**V/Z+\2A BN0\\$) X!)M#!$(PGuH&hμWm7~"l,t&nI~`}m1p ޑhQ1R6 yt>f(lH &(Z֋vo8-nt:Nt:Ns/Pd QLDF0BvgiBEW)Q|WQM\42 AE\g;002򪡺TsP,Q̰RV(>N@Q892J\^#@,0đ똄[Xf>?p?R( gXI7/Ű\VIVk5jfF %g9(P\U+ߊ9y%'qpQaK5hȄ_eBy\g_KF)U &UCTW% 2x^3q@jf˳ժ= DفrCG!G$VQ[;\ ';>l["k##ĩwگKW/m8pnMl?ToMMw.Sclsr&@V =';Nt:Nt>X$%*s#cܻুF.0G_ؾ,:P.4_PMrdJ6E/00~5(C`&BHŻL &0 5-1bbU$ ܾ. C=bƠ-؞g='Tht7j ,t t:Nt:νB邋ǙРbasF<*6vR7D8Md]{ͨ k4(^'UY%9gqp8b`3A P\P1rc0# d/b׳iڼ1ۭ^hZՁRHn XE~L d|ijn"|uY wMmNXUlk:]^cxqk&ܝ:Y"߷asj#-.΋s Ch1S(wšϝ" O%*'h9r˿dbt:Nt:hn^h;@3{D"w%(aӦsq=sNȰ#!P^NQ4 h0r>"%S|Qޣ!FpUUa7[{E 9E^F8rݜNZ~iNњY̵ŊQ(#R a[iZy Fnߌi)%aTao16v!OX5^bx%-Y]!Roc,u9Eh\6\[%m) bܮs W1./z}}x, .A+˹:$vKt:Nt:{|eJ5Duq=y@ʙq(I)3XLG\21R2Fz*41 qc*Ʊbfed!h$+r~Ãlܺ|ϸiv#$Xs++C}վ|`N H31D,͘\!asWv5ܢ[IUAr$3/f!чL>GnnkDhEN+RVJy$k45'egQ+[)vךpsŹw=/𛘧\9qȸ mp,HnZvx6eɛ7_J=kuHGB ӱŖm@̻ϱt:Nt:NQG7(D(nNyTkBUV1jbk&dE#{UaB0=mDG Ja3--WV¸8cFqNL|&؄iT 1*!jlیZAn&2鉨9b>l~RMD\Rv\|~bmI6+¡ iesv!"rJ4ͷb]֥ak]rڶ{N碋:fYhɟ;;Nt:N6/# Ĩv2:ViE(\vǴp8/a!UKpF@L`XgۣpqNx V"qꮊaC  %Y`! -|DBոfVH)-c`dD=Ag:;!䫽}ihnjuY>f.J6\s3I1b(ڭ ^}BA0Gib~ _YiL9U%{2\RNF7yVnu٦?޺ [9Y;HC܇r+4`XΩu$"b~*st:Nt:bqc'άD ڻ)'0DJډag,Onq@d!P5.N`eٗH)!,Ȗ1 23k$y:A@ %J L=q&\{!%,su8sp Tp ⶵx!Tԟ#0[rbaw($j |072-hBC_[ zVqn xUQ&(lDŌ(2frEh-7,۸-a{sSjw+fȴmCC'\d; iNʭ]t:Nt:NsOU@S"4Mu""cItgPѪGdOԁ9eݞK[Z0T)k31KF¸GJ$ .&PmX2 01%TaXJ&i0 Khс Y:Vr=vN~5qF kt:Nt:N@4N t;#4w/z2.u%PraFrJW]jiLfdH!̂Q1 JⵥfaX57 V"V=*Dqj *e$!:a@buX/u18:";1r$͆xBnzqW8a9pFmmÊ(=̺n9b-V{:B}1Oǡwbۋ؜g ka}s{TKif 1߼ܷs);Nt:Nt>Xhs!܀16<׮\k+rIL|iw F)Vfr0lvxv)#A#\1c*%4ylϭi=bJF=V +rkP\i94ϨF.X6rs DC6b`:NU?#kY3ȍk9gyŶF&HS˅nX_?^Xc[g_B沝)nPC;E6͒L/K&tko_X:X Xߖq\Yv}}Pu{6*6]r3[moat:Nt:R)\oɋTJa Xeۖ4sK($4x5#ĚG<'̤n=3"4@txucv~CVQwV'<{|9X5 DCp+ᓶo1roO^3\ IDATyF׊lHzY 1beժZ<8C=6u~ ];W汋v=me-eblλ1kָkc,Ƃ])]VK&&~@'Yf J:~ o-'zΖr""3fM+h*sZa*60粈19&˲pov0ԞNBEZYf?6w:Ny2>Oo5?9O;^zgNt~<#Vb3VfRv!+ +{  14FSZ8xQw OY@g9QPJCܼ|j7)y Rkj"FdyUJ>p]mo;q1s^r=nqeOxaU>w)yLY73p*aqCnfloGw sCWӝіЕX}nK{t:kg?oOv2q#I~~'}LNCx<~~>owa|I$?L?Իt:ίpJ)hIHNt@P0; pNNǫ;Pܸ4dtnGqRTe9$-L7KmEftDs.ntFa߻ кLlmؓHkf^pDTԝnêѫ!k] 4'qİ:"LL8[& 8^:10!]{~,{4QjVZ[mj]35ۢkx!<-" um,DN~իvOޭײMD\RE5.]af3LKzmn %-~=c^t:{x?ysyްR(\{syѳ ?awu>׾w XfɛO͇$Nt~b3%_oenQ2R E2ŽAr2rYP)Aή24r"=9'4(a{lB9YKԘoat}/'sPi<[TWNUtrճ~ ZM<ݜʈ &(t 1&4x]^" DrN.Vd[dwXK^J~_gm?tC?|؋`8W?GM|7yOʛt:νD(3Ōg>E:3c7xD&ܡv5\՗)Us*H]u*#Hp.n IMi\SD3s">ʌ1af q8}kƴbbX0JտZDNDũv5h;0""\*0kҢbFH8Q)GjN #CR^">6`vڲmɥQEmW߶n3yӮ'_]-.y7.7/9&]ϯK)$ڼb:K@m\ӓ xs+oo[r+nO7dt:νMGy?;*pe×g  L>q5s Kx^~G>pӇ#7yWo`4܏}8b.w||)_7_Gjᱷ<=C/ |+>yϻ䋿u/p9wWt:f_g0!cD5]{&*i(F!2euI[PYs\oG+ygy]nA) Wi";to Ą!(u 7}GnkTĵ̖aip\2f[#Fח0RqU#4XI41Orib2ctw 9a,bIGzNTNtZpY-N$,/B6]\ss.m&l'7 w#PO7hX[mǒNUb?v8ɵQTMX4f@JC CZouNNt䫿#7T x0˳x+>g 3?/!?//~/~-oqoȗ\uŧb\|Ͽ%/y(/r?˧_>]_ī~9|k?ɇ:Rom|o3ywI,o}3Oί 7 t:{l3=V9is.XU ͌MD1\&LGD IyjJ HVGbM[RvDAd8zxV̟'daؑ\ng%td.?Rx_ ~~#yn(~~77v:NstuJI5+.YbF4C9rq^PU69O'xU@BT퀑awN .DP UWJ{(RZR %[ B XqoBt8aFՍZ0R"P5e]di8#L4/ȵT:|?L@ 8rcB4AkJJװ%}SDl~)%Fj0/K'Mtl*aJBamŷPq|+UIm;$M!F~W'zw-ډp8Ghˤ bl"b\]Mn£.M\tdt:=]Y|:w~^{.۞NGIv-xoao}s7-y׿_?)GPx?~pQ ɏ~/ozdqޏ-W~|ʟ=>ſ7?/]?Qt:{'4^LmBuqV\l٣:RDnc*\0TwaĽ;D1q1,& aB=QK&&AdOPp$r>"09d"t miQ0O3g7uʹeZMbP1ñ°hHL\znwZܺ)1J+Ss"P0/Kmwkڍmt@ ϡfj|^?]lU[]q-~6#i՚, 9zg{ ߻.l#WqҸq>n߾q!"B[Yf*pt:.&^ǯç~7{s/xWkr`3? ~??Oc/-\`|xo~ǧ"q[L:Nky_{5ٿ;ϰxW&O/| o[{5ow|HrկFWk}?Iz{[H ;8ޟ?ȷ;Um=3?_A?N __1{Goju>G o_t:!׷9w#oⱛo#8BPAu!5$^c6@s.eE- j|֏soIGSa W`4PHyg7=n?(dD3j;Q %O{uJQ<ᛘ-=L1֝wح[0fJwӁ9wqۙUspǡ%4J. W+, 'ہwipqlۡ8/ϲGjV s'^7,,q` Dz;QL.Dz^pǟaU* >?P]1Thc&Xc@6]l}ؖpZYCNtuOOq0w|* <_ß}໸5xH~y_1 `/s~qun<+b'%?qr#?/KuO=qƍ/ryW-Ļ~&~ ן<\+;7Wt:8P KGb:6ހ tcsrM3 {)5lsEAj%as!A˄#9 z#f0@3jJE Ցy\Mr!9+J!č,Y\I@fx;wcƭwrqǸ<>Ɣ8LWdBN}#9;=! #q<[R quG0䔼P ECmM8V|ym]쎂dNh:dY-e qPrM7-fqu}i2g}ǧ!q\=1^k:hp)8@13;RJ%D=g1M72<; 42\f 5$D":~>q-cz,!(<&h\"p|v#X/6ؓ|?jJ3*PܽU_ꢟp޵{P;ܹ5S}TeᚃnvѡFOGX()  s0Sl&'_uʵ#s.(u#[\xF_K @ s~g͓1SggŵWUwH~CB004375)u$T 9~좡2!FrA8yr/,ґqI93Ms]gUruIbF,4!,:WlM9\nN;YkEtߒVpۿלrT7ilucPJQa,fv~MmEŬ 9w < oSzӱE}-'~mwF]nXRA˥t:Nt:νB.A*##[^LMi=y͉w`lʙ!5j 1,lLapi@U9s:z3c !p yf"mPۓ0D nINzM5 B.Ɖ8O(bgA0.)ZQf"솑T2َP!(%$X%';BdK9B)࿛5Ż2qU!Ofl-'k%(Qя'"Y,&\]*c.7Fu)rrm!rhX91@HYH D8d]VI^}t:Nt:N@udP k^'WCKVNiǼF+ ˨/9e%RN# 옧#!D\z9.!T#.)MaX 9g=iND Nu4q(39\55w>v+UGrGcJUL1yf IaREQݑZRI#RRxF9\EǣJmێT4{"*h5Ɓ۟{5uc*\ű5kRG3iMZJFjx]9b;AQkAZ?bc'B_6s%t:Nt:NG !H#e"W 3Dȶ6Q3{j,UB Whh-1FR򏃆ERFuG 4@*!iN6T JF&JT17076 bT AQQ2כe~&@"9'4U_QJ9@qc]{aDZ$# H^Qg81 Ȯ-KNf H*ks-/YPn}xԡ5&Ft2ȱuƭ7YbS)-Fu5odluڭvʶXos^|nQ xG9q!nW"`t:Nt:N3T;(%;q AVוb0g[/1r5V"A94 ɍkso2`7e\;tqXjXbBuխݽ|*icSI ~u '}lڵĻK|r0XJ^~@WK! )-]lr V ">M@lQfwqF:+;Nt:NtJ[Ɣ]P$Rȳa;m@鈙P,r@m8>Nz.-Hr>@)"HBTJ12!_2c:dn0 (qOЁ8"$&9_1Ogb-۲s9UuomVb X9y(Q$"GQJ Eq "!c"Nw@vq?{oUZsØsQˉKUuk?X+o Ū~Mpet:~ JeQxZ.(+^+5wLRe7WJY8ϔr60z HFo6#4͔__Mi(@^!VR}׉~pMi= ckYdY"6ѮZW~/GVlYƧxw+ü{t{C8 `0 `Q\*;DŖ )sHizY)8Mo,fa'oqlz}E)WJPºL =)IBs%g7n2`,Bq WZ PJdz`x|Bu% g>Y -,Z}[_,iqF`0 `0  )Q4㥂]'y%/_}r>cHp Nwoch9S6"BYLb"8IVe- jNG<A=ڮm'.)ފ]x>7bjr^Z`0 `0 7( B i:QF[Gj2t*OƄCc^?ZWDt[ݻvw555}?ǜD/:qo?S< f `0 `0|/FRbYwm94'9oᮗu=ΪQĨ4a>}"Qʞzۑ] m"D0h] +.nn&{a׺h'&7evh{7FGfs!ppvf?sC]y"Oݎ׏՗?l]JӦ7`w:lߏ{ m 3 `0 #S/Pg]`EH\`};|Gm ]ǮkJUQI37%.+^ǿMo|z܍W#/aﲸ2`{ S{뷃L 9Oٶ ^=|Bis@Ʈ>dkVIMMovMjQU;l"b%܅6峢 nz1p:c)(E<8킡FUpƟ{_4M#/ H-{/wO=1;r{ Q â!;"xG|/A/]F5SJX1c-Y7YoD ,~0F@`0 `01Z,: _|][ 9o^ B;pRfmId&0)U7 /_+Xe\ XK:Rʲ]4Mc9a5%hzM)R_x7x_|gAk6,VHOŠmH_ߞhֆ`Ү9{wZw)z8fHHyvp,pmWwIO6: 7A%%[ⅺ;m.8F`wɍ hfNJy{p.fږv t"}zSn\62.,eDnB`0 `0 >jVTg#:a;#IHey@S9)+k D$꺆R~٬c3 թ׾9)O-Fc0[^ˇWөź¹P\ n$TB"nraNR0O '=>bN&1 "٦$sZĝSb±Z)cM23j3uhAe۬(-|4պHiaK9\R8\TË>cwЕc!ႨvGcn֍e[o{9uڅ]T0P"~ve9gj-Wa`0 `0||'.ˊc3L智^\%KFOoc&m".ufgܝu]#Z2J +irC "~A!,j2&w#$-H~fRDYtª{ ( V lUxD!+B wť˙m"]׊RJB[O6 >4Ozi( /VN~`uܻkOIG#(9{vL%QmP9vM &2juRn}D˱ѷoj6!6Lux8UE&:6`0 `0 GD54Eu̺.-OqZzr|Yu傦jTEu3b+)) cmn\Qq)4e]I-%jfGz4!^LJݒPW q"oS_Mva󍶮QؗycP)Sm\6o! 6ߗ qc}](!Fv= zgjSaǢlHmQ..&^ saP@Zc{OY2"i:xqqua&r$w Ԋ5W`0Hs۵mB`m5 6\m[dVj}*$J4Q,S=I iw!)!6!y3ua:gr-HrB͊a)l&90w6Kt) RKö_٬4]H@ˇo/`! ζ= }N+u'\yw7\G=mqw Fybj ƕRk,n\<>1l{闶xhŚcwU;{ac|pd=N;\`0 `0 >jT3'2)PE%u)N!1еTFh;ՙ0iJUֲ"(-+%^SS8䬒R+L9?+k'XV;\~HQUeAUI)*&4M}ږψpkC $R=mfZQ-b"kp=&kCT:ZH9|@nm¾B`ĭage[ +8{E-Y{`yX%=V;rN|w}PoVB)GT=if$mnΧ{n )M[`JF s0 `0 ࣦV.H Zx+4͜`׊[NJPׇF/[Y\Y "4j9)l &dTd?AOO43{&ƒyՋ/j,Ӎs4ŹG^_(.kAsӰ8#<5=G&qֲrXnU7#>!'!fݪ WDPŐt|5:Th{Rm &W pdS6oMyģ˿!c^0pɇ{նLymssWm"!J2rS`مTԬ֐cڇ.mc!:`0 `0 Ti>_p+XeYuEM2˅iN`W O#Ǘ2!e%˂)G$X||zJ k"1!!.IsU<˜uƠtBZ\sS9?0"!Qœ' 2m~)5Jh-N)wBHrDe}T3"w["X IDAT`7z.z-7C&E9aa}V772uׅ; ~>kM^Sq1prG8:u;{8@5%9x02l8 p0 `0 h,N^xДHb,yƪ5yS _T8yJ3)i TyΔRc6SSR˶2Lnk}Kt7"ڭ@; C5\!㠆es鋺΋^P܈rJfc9E|;CO>8`0 `0 GjXMNpV!KDZeBD9qzV-xJ$} IRDk%5cWˑLyb.ht)P jx&xN uҟ]I)ŀh)׮ 4mb,#/X0M5UDc6Q[\Nc07ޛZ oZUt\sŃvѻN/5a:~qCn7_cmT-l}Iw_͵;Jb[okvp8zs';vs=|F~~xp ź8&碔DGe0 `0 C)W1W3"x,h:M31[S͊<ū|ǺA^wrjR8O1Rf؛9.EuyXsHɷ޼؅?є635ʃ@g;jjb6 wFG>Q(pg_ ,MT nhb%ףڎ;@bm'`":}- 8`0 `0  X4eD"lW0߱>$J!q]_FŝC ଏ+^~TgO1=IДbCHgYI)NSj,k~8aZˊRֈ 9ǒqҴUmOE8\h ¡i:TũzwwRê4\}땩]$ҷfTͣ fE f[l}ݱշe8ZqS퐁pIz` fňe_nKDzśϛٖ_=~*]=J[^QDe3{wvb<.|nn@}[fKwQD>i*q?{`0 }/^;|_o6=3ވ`0|K^_|O d 4NȢx- y ,WxE)&N, .Ԇ3T[1AFRrX#"44M)+iJZBj7$)ZM8Ju4eՂJON'˂k]9P-)j$U[I\ԺX{Ϋ'br˽G$m;z'1^[ƭ7)¾ƛX7A"_MC~|FasI24A_~rӇ("N].oLjpz 2DYJY6aZvr0 `}~>sg>//   Zq?NȄ3@O3V(91}0WQ=u]QxMPnEbd "b[rTDPDI"œS˗Ȼ0G2dѻoc6"q{Wܸ^ZwŒ|t}mC~,۰[?>㶱 iªsr\m`V6A/"鰠 :'9vdϓ`0 ny??7{~?S?5ތ`0|Kf傞3Hܘ\Pօ[)uy OL9SR G\q)^hzN5`HƹRݱD'0NR>@=3J 5aw:V}hpJϹqCnୋGte;^A礈PCU}xts:b `0(boy `5}EꂫT.zLSܙ; T1@gHRfK]xHgwm\ڝ)OeSH zs}Vm+m `0K MqH^˅; I"p][wCJIS&@qYp?i8)oԏZk$vw\&r}ė+SgD  iHSFѴI<9=g{BNOє܄XݜNmp1LyfY^J(Tsֲ¡s)k=_]L{f}V-' Ak[]yQ]@MЊQbM<./98B&I҅0^9:ay $6!q|u3zOUH+ۇnWѤ_`0 ߄Gk0 o5tF%T.BIy"x #ψWNk8uA(!Vjݩ ǁֻ'CS<=Ϙ&j]ӖdJʊ脨Pl=vJ1iuh<[jSx\xXާڙyzkhM7iPY>ʲl`,N$KTФ11u՟̄0g-;T..xW7Ɗnvp t~ʋt Bi|G5tqn}mׄlLjWNwbL/+=>}y] `0 `0Hifg@+|w^܁$t/Y8O[L΂.圶x`^ \˶0f JgAbUcX$ **{m2'{~@g|LyJ> )[s_yR>y&MOBJJu4O#S6!ibY`z$ia,wj-q~0*+BW 7mWjvםĉڭ;[nMl6]X4sv^;ίoowAL_W;vş}||~/BXt|gv? xEA9 `00Uޏ-j`߽OH-h[4Q͙:Y<ݳ̹Th›Gi}895x) @|BjXkS45 uGNN'qZ!".T˨kݺCxr&Ԥ5tH:"Uq<4m&6uvA'~M7!VI.B+*=Zk7?ulw=hFoWZy=-)M0&u]eN7qc)F^?{;\k&ۇ܅wwmC'G\0j]`0 ?~(?~[? `0 1eEDY=t 2NNJ-Lh2!Ms9GG*ɔ@B+p;ݍ-\ M%Ly}?"O12r XfVR8'f9-Wvk-~@ifzm_QMۇ6Z,Vjc]#3lyB0V\b1X6bw큀Ǽst!ş 8{ m.¸>30ݽnQ>?o\q[f0 [{g7]~`0|i:QmEk6hZ=uk`vE)f d^Hm@VTbmdđfd*^\ճ'tzAdWRJruz7oD$eJ IJ Xiqa1!BRIpg)D&M]p+LӉu-x%V_[6T7ԊHk&(9LSf-+a&ap,.K83ғӉ*QmkQN9NwgeŚ)/>rҳ)gj5yuYӥrVoل>\iG+sr p 6Rat ,od=R|L)8d,1Ң}Pׁ8,<DŽ-~}< E٣=]̌N~}\uDwIb `0 c`0VDUqmJp[|Չr}t1<E(GNw1񴒬VXKBº>"-K ՙu&'O%1;[%DCUVD+<.:G8X<\.-Z-m3Us |m%>6P[TV5\9Łjm⟨"Ns. L $}=yӫ@ÑHއA1 RB;9YERAӃ5+8t|< o;`r95"?iVK9+}Humsw2̜g34d<=~~'<{S<~e}yzbH2%Oo.ЉK^=~J"MOVZn$/5R^+[ |RQ75cBsRX׈vzЮm ըZ)mܺxx '9Qkm lup'Cp{6.<"0k! Ucgh=xnq1wČj ߰n/i'm#E18v|FS_=8qc% \^!hv\'}h8 `FE//E/_4:`0 ?9c-b:MUQ Z te sCu`ɘ^W OqBN oya:Qk Ftqey|*+izFain֪")&E$*V0)VRyJnkRjĀpQ|CQ$0ׅ pj]$Eшy5 ` 9CdVDZcUG;d{ ppvZ5;c:idot]ĒF\x^Bi[9{\59no=$e@{݁Ga0+K5ݒKFmy0 `[  ݿwc|S?Y} 7W>7ywxS讶3˲$"ȔO?RP}DVD)+~]I Lsf]APjR+VFZ9bo"C) ./y.I3zETr%5P3բ;0uSDqHhj\Dnt*&{oF<w FC !Cķ kVpEZ{ssEZCԤxHo⛫w񅰶MÛ ^y}ݗ`ѭv?b]tT`0 u_O"W}t7?#8 h^+/~~O$M;w/}/񫏟w7FWzu_ům||oFQQI HeX54erX1oQ֤sI~j㲊kiL:^V.ﱖGDRs>!M'.XۨTi q ESŰJ]HP ) 3hªsr3I [CRj! x-;,ahH =Ne)$Mky.@o0kD.ziwx6Dz4z7b{|֬`VP[{ T }ƻSaZl77~{?#( ;!9Dٮw0 `Ǐs˻M w?ȟ7"./w?3 9g:>oos.}+M{+_},*|/"պ>7x_zuf; '*Aܰb&u\AN`iRD6o]"z^snk{}3 qU/}J|1M]ۢ IDAT/f󦟲uǕc4g1*Ta 7ƄfrK`摦eJ07뙙^h<4ж( )1s q-\;FB%] K( LU3NʲLejj-ڬf1f (3U125Ma,݃Z12#[V;nQZI_Ktpd5L4 ]~qFIgV[9;t v_!^s p Ct:y}l|l8 {wbNaڴS~b-3e)އJV#KA>5 K?>"'< {c^_JR` {2?)#8 gHbVr̓Gȝ_p|+l~_~t?wG=|cdzK6/mK96j:s잿z윭_-'a.u:D碵ѰCoJ,ò]2PEROģF_FZc FFF ݆Qz"ǪoP0 ֺqGT|C`ute}Dw"#9&we"暛qxܩX!Hr&b#rrF<ϰa1د8XF⻵ ~" C=쿤J4=o8 x_N~O_7}QιdQmPFOTjto/S/`rǾz3x0,3+yĚrk9̯!G.g9rOIZ~v>cX5o/c+SE.-Db{H5(jDm GU)2Hvk71 e1jD 5G gClMȰ(jSͥm Bq؇ #KPXq;UZ n uzZMS) J7B~k=UMlbdCChSZ@]/gT4K[Xt I:sԣ?xQI뚁LQX9цe!97T2Y E,0V"q>Ĺ|ax1iY )?033bDH΋ѻdpͽ㯟I7#inaSJR&}C& *KR"Az@XTTTTTTTT#ocx#89'>?y!Y{<;soN+σ<6~0~o.50>O~ 6 o4xfN9_xy{m}k?$Nxy|P,yO5^?`EqlZ;ڛf5kXaV[ l慵r{~#r;\v1_>u _dš=gyVqTqoV3V=|kȏ\3ņ#F wWkN)GNeנCR@h8,21;P тxESU#\LEtMh4b "A)TccmPzHCӎ 6ܧk5ix4u5suj4H_bىV#G29+ipcfVQմ ml B׶m"*%Hd3( "DT26{47di4b7ծ]j"mXzJqt2K@5)NTuw N6+%Ե"|35Q*0CUxs,@ dv*6$7aNT[Qun +@ 6px#,n_|QFK-sI|oDna/%]7pO8څ|n9=Wh>`fX1{_]>m;?k^I N:VjeU!߅~ZoO`/Us9yftP㈇c.+ow_q?ǟ3m__ew~ljEpܽ& rf8siixg5O]5ܫY,)yW+9VE.^7J'UoKb6\X ,-2^TBWж0fes+AǦb,,ciK7V6-J&,6r&k[L]'rĐ@!Ďhhc60UOa<(G=R&4F7B՗ he[ w,cð9z묎9ӱqmnxqn^؉Hq=y0 !7ND,B(:8}4c0tPLĦnr\L 7_d^I>zEr=O ^۾0}/yɡo8s8)Vw;Ž0ci_OW|S~{.nFm9w۩d>K>!ˏnWb/p8jAV<|ә3+n1kFl M =i#_9W{2Us ym[3ϱ:/V8|)nhsx S{/ aHFmFf J#|@*2?Fi(1h:2"]".i5>''%\>UZp 3h*S'5hz,|,uch7qf:|j18cH:‰-(iaC3R5ƀsё---"C,f;aܦM#:AIH1c+.D5+}DEK f0pLE\luNdt2xQ雖X+=lZwqZRL>d8v]aw!C1 M|swϧ/T l:񱾉8F%K/@v ]2]9!D~ϻqD)&~|}܅7%|]>0繏;_1poKz73x'5_ _ơ}Za +*94oqM+./|S6Y(~̙o9}I|lQxஏg̝o7g5 \?z9+:wG{y=ug^i¬ XinɍlHv^gm˗._DWMυ|Q02m#YD͠3q"KX7A!h ֢ThxTu m&$lփAy(Pb h$#Qjg L_Ƭ$Fg"VD2,!4xS?D5zT%֔\XZs`KͶȗ"!4N#RႡM <>+B !aŰ 8Ԅyv2h? rLr71!jP1&wtp!M(aC){pgZf t.J:b\oh K}߮O'b?_2ܝ;ty۟Ϟ1{~҃bbnܛ'ӷplp#G++Tpf8|xwz-qfN^ISx汫Fyù7?́M}o6,oeZaGRŸQ`CicYǿ{lpʠpx 0nΡ%BT96BJfFbJ͡m *3X#F_|@J hup^1^hDwcK77FxDǰ$C6.AM7R]=F5;CM#]QQQQQQQQɵ}k)WɈ1D*\?cM*X=|yB9oγVݕ&T8O*m5ȪcxCw)ߢI8VS71\1ֿ}g.Y۶,d9G=9g ~Yt<8َbG>cJoQͦ?U;zC}-5{!}{9t3}b=d:jڵdaG<>[\rECV~t<uxԺy>p,_X=vQd<5zT|2;)a~sN$pнq5zNrGݳfٴ"l]Ͳf:5 E'H&}6-`  iQot3 a .P$(7HgJ@TJJ@q[-}!!(80& mt%s,4M64M1Kp"b-v;{2#1xPfc]:\~[\5ģT765mjl3W%.:RjpJ)kFk`֞o28ars!SF9' 2{7yM134c2#aה(L7'sՊ=qO^tV]^{~-/~g8vn={WKa^?t.@ť#C=y}?R~[EENN>Hz_޻M(D`mdFiY SpJk1JÑiIU )C\cƘ/3g;8TpMt;9u2B)e%:h>x;X,(.'+k읎;>_0;uw}&a8׳6nfhowioO|G@%{ۣy뾅9ψб6uܟH.j"J|TaLPի@(h#ՊE-b!`Wt(qC,Y>;>vR5/M!zމiE3[UURWN}kZ4-UUѴ-z$m +DG1Vp6PW#mjxi S8Md+3NBma\s/P߉o}}<&I"mRnXA`bq[AFnhmM28l}c2M2H-+ݾ hd-t7˰O&\ybT,뗁f,)`tMmfp.b35x1)p>L8ڴEo80Be8%9K,J7zwJk]j<>,9ƒ-|戲JUe Lz(lcYy]w.C)********ڰa^x!g}67oժUX 6^{v5ۼm齏^N^v,***=R۶u9ԔTԐFK΂÷@nC2$f8O 17P!",]fipmHZC=ǻP2 b\=yx}gd`0oxtsHP/=!dۤ ii6`H}D7`.:(:(R%@ AD!J Q ݍ} ƍgw[\{hLTp YP!( 6BPZ<251Sx@ōVSkQT#aZ39PUk=JmMY^mf+Jx->1xRKEնmvƸu<莧i~`-tT&fۖiWT(_~.(|QE&3;/¯STV]qHt"λTM 7X c."  43Z.3ݟ5{ Æ^XnޏsH5Q$ IDAT_ RL%+GctNE5xQ?_W::B)hcЂձH6->Td۶҈Ƌ|WLCcet, GD8I-a#3FmmW냧r8s9Ń(HUp&c 1HJ)u<#5֕AʼXk5}ykYg@suMjsl^A"P}fJsq9w8d斗|Z6Kϝ,Ncz 2L{ZB{h>xE1݄Z/ <#1~5XTTTTTTTTTTTTTTt+Rp,-- B!Ѻ Y`ؔmG3e@Kjb7D@#J/ j޶4I˸Y AZkhv@SU(=sy:f]U}U]uJKQ_A *C&Ma^3:#:25=Hi0F#A "2J bQbTp-gEdt]_#ptyv-~7.d1⡓?ή9bksѩ<\ݬHn[׫I3 b?ߝOvV|.J4j +WB`۶xF0v qisH~M֓LG߭G}u`a[XX~ #1/ ݖq-}Zϡ;1bg 1c*]G(htиiZP o \8Nk > vvmS76i2*Ck[`XAhhv% FAaF6H,vUbǎd(l۠$$bSL%)lS-ǖ* F=F ^9mL@%sxiS+F&w }L盌F7\pQx".ȳ hk>vaY>A|MlYtpӿ_1K6!OP&_ yrУMc%jL(t)ǖ0LO/0EEEEEEEEEEEEEEEA7Ƙ FkMJII(x+xZF@ctMx-xޅiMi-`,GDm1FT*Уl{(ULJy;[Oc =.9y8Wi ^]B,. "a%M#РeGcR.vB5_t⁈Oxn<e!}KN .VH HYd 8S8D!#±&<p=Կ-}~mruq\Ua%PcG #X<f%`]b AUz]ZBc6([rE>.T[]n{f0Pp W8ފX91ə1ZaxH!!;ǒ݁ұ(F EH549#B9L+!:NiRh&}T+^0}:j"x1_ UI9\g1V-Fe,~v'ysXDC\p߹z ?P)^MDvI>fn`.שtO"Byaޛ5V A\ $!*ŢsCd.YTTTTTTTTTTTTTTTtPRP Ic|p68c}aw=J!bPE\V*L ] &"(S +PcײcؔViO]1:Ъ25֠ہ`TFFM\f;WsG\4!J!,Ac xQh=[{{!@0mLn]ZǾ TLz֦ـ40fAJX*eZvEZtߺ+ꮤ"s0hUl䏝v]+qJFv{8]Hrzxzk B1tk1/#xd1,JHupًDN'EEEEEEEEEEEEEEEEkΡM!ND%* Ԓ"mm43(gm _zZ.ٙu!X HB۴]lZ (E[/'1ZPR$ e~ m)KKqޢC9v8.ths.6 ̃sTUR2̀d.\m;g+8QQTzQ3x?ƹ'/gӅD1hKt!W=hXq9f<{'a|]wٕAeQQQQQQQQmS{lY_I_җ~tvGǹ|O56MC 4vxPTa!^Yy֧2TSA0)m;yۥ< q[Q~6xBƤX;(( b&Bt8'-֍YҴZ EW(8 ecZci&;+TpJCg`aqoØ>LaTwB}T5BDb.F;KCr9Bxa7;zL3z=lνLE(+r> C@'HHBD} ;9A`(ԝQk=ᾌovڋni-3c⒀1T$kǴu04-Z XdF8"zRoEg[mJc *T/80ZEFLb-&R!&uN(: Gl챈EAcj@g Axצ1rD =-b1;\2)mp^S"J:)($b]ֶkoǹ,Tt6rXxN|W cm,1xD[9:h#,r͐1;~BκX\qIeAaƓ1|W:!ufʫl3A.rybvYi$Etwvi1{h0ҒSy~P\!{! A9udv?>-28r=#K܄;qxʠt:>ŧT"Y[E|-_NMi:.W|Ko3ysޒ7t8co쯺p5_y˟=WGQQQQQQQQQQQo@V*/S8&Y;!0g-uջD4hSR(U!BKӎ}~ 48r-5T3E]"Y5iDJ$a2>GE`m>8QTUt,j qӥfskoAQ2 f FU( ӈ1XȒA,.mb5,,]C㶰n%%_K@BdnTz%bf5(m҈lV9l| A:Bf1w+$W],p}Y};kEB o|BnAGfhh A 1t̐2[0ի8 ıoHOƍ6vth,?6%{.oyy|y|‰, {<3|KYk\y_g]O ʧN{ޒ+܃_0[9?}']m|_ُ̓f^Y'ȁOyo/|`+Suk_&x6]TTTTTTTTtۖ2m#LDh QUeĄ\`bJ\ m h6xuZܹf8tYWd_SG.*********%߻ .t!ۀwѽg,~Bpx/fJ@Z-}FK0FWFb4@۶LM"F@j\x0eBT'4Sh-h6DX{bVXS1(:_.͕ GI_2&xmױц`>,ul@k}ʸ* 'Y L7Yt"òar7+[f禙_"m.\@7鞗ɯOے>$НO>a鬧=,d"& ]=ܰHnal˹<(1ޯM>;G@= g'-eε}roG}n湃zω_7\|7rysaUs<,PQQQQQQQQQQѭLb6(SB4h \ET <[h Dh[(RkB,C)a8fZMT,AWK9g1Z#BjV5"4âVZzswp&VKJԩsYj3:Ga7.qBRDeTU&GH1ng,qĹRYy_[xweGWW'盤պ"FvmWg ]gRx2Ԡu.jpMrw`ٲt. 2)lSX&JGrIH3=p|yPVnη <9Yw?qxS^?c8.?M=ײ]OM&;~Ox"Ga=ḱG<(l=}}c9qpOY =r }" ݎ-y~1w=GqZx],p-'q<ku^.^{sǽײv;qsy vzX_ߙ>c8dߵ s{8oLo|:n<o}n;Vbծw3[h/ ~":pO'z ͗_8p؁v7v[e/{v>_|m`qa1^ϚUZݎx ;kY䏲WZs=֮a>s?|_gysN߸^'5׌=rwSi&z xa=O敟n╇垯?}^܅p_=`=ﶖ}3>u|}{ݗZ}?qk"n.ֳvc<}&vv߃ ?{OPk-YdžƟd7~/{_9O!G>kװf9-gYEEEEEEEEE7ils}?R9`C0xKz6)Ѣy.(j,-F.vBMJginI a`2t2e'14Mu e#ַ8 % P1ۏ5#`*CUWݨ:hөmBv甙TӌR׆7t_hz Ϡ*t3&]v mJi^o"xmu(DHE"x'ӓռ7ihDt_`EO70>7~Ɔ٪ 1qv!D$C?(Ps >B$a>&q 3ېZbx?^}-{^yʇ>8^x [}kp?}X^uCy[?]/S{yZ_{ s0<`W9yG׀ k8l4;$/_n^u,?<Oo~ֿ}̧̍^r^Wq_>oO p;b3Eޙo͜\I0`;D{7}w_⢯\i^khv߼uǰ܃_,څGS RUw{tzAAPPAQb/[kCc7+*"[L&^kÙ{c6t o~s]3sξ|Vz۩~{]~7WoTKߠW/5-^˵ g}WrowZA IDAT=#Wu튰sɤ3z|.8f3 jlgY]u^ iSx.39<)lR\7Zձ rЙWsZ3⦳e{l  ;r%gkƂV:ͷQlEZ8_]pg|ӹat`&_lM{C9vaEkc۞psx(3MW |2ihCNS`.|g::c+[؆0t[ԌdK}o͘{p˾y*W WU8t 遹rʕ+W\ִv@XŌG)цІhm( +LAȘ: ʂNxQ|k1`LEi߾=;'Oe1̘.~ ٢a)7a2Wl[}{*,O4\G>$0Gya;ܦxAWZѺگ?w 6u:SRБ6afMz93CK@b6f>lE%)%>3Soc.~_EG~sWYr>zFe;Ż|h5])~V[%yyI:n5͇qYǿu^U֋/H5}w=hmԍu+> hZBdI o ]*n6g\qf?a?:{mwz.x_mJLyMF0 ]_МA[!1^ >kϭ콩ćS>n8mҟ6ؚ-7/?6ӱ`Y}߲m{09W2|y_+rʕ+W\rZo!IS~2N"7a(U()!l+֠V & 4b Kʋ9 ʥ9J`CL袲4Q 2w7̝7c4~ϫr1 +I-vI% ň#cc 18gL <<ܜ@!(~yrɕD"FQ6WJj<~!*Ls&M:&-.Uc$ ȸw&qŎ=ϓQFD `2"1i&9'*5͡sLž4w0Q'Pr&"K2Rge ڋ #ۊqYkxr/ڙo#tZE6؊üZ7'sEMPr)[gn}Z;{Mt;[/yW.5zP(}1,UDG, j ⎛s9mVe\WȎ2Łmt%憉p?e.IExN]鵳+9Av%,I󓮳EHo*ԗ<.9`,nq㯙@v7lWe&q%-qF6W0nǗ>n:M[OD,x c'\b_Ӂ z&;g7?= x{CŴuӽ{sK HnmͻꂥqT߭]{7׊`7n}#?jڋ k?v}ҶW8}‹-L/D^$mzy_PPEύ7]z{G5Tˁd{%&XmŅ|a>o1f QV}lW^d_~/FlK4O'^gٲ"|Or_Λ3 بkG3`5 :tҗ=6f['j^>ϫϼ)^8K}8q<>[oZS]bd?:.}0ʏ?^|'.#E^Mظ~AZcKcMfdkڵLK_z^{S^O^LqHK6HMW0Jl@;徾J\rʕ+W\kV"f Oy ؋a\jh3&uN.ad% j\,Zp<5VCnW5FE@@&ОBU5GT6PU@ dLn2O(@DZFP(8Ӂ5KeQ~KW0\`B DahBKA#"LyB/Bb H[O|S7eDЈGQ2U()Ke.+Ȱ{<)]!Y_wP) s*%.mӹ._D)XLZ'ͺi!DSz -(K9u#ڨ(D^&qe[|\2rrc.9Eu]X㒐TaEZ!`w0W^<} y ԁݏ YN=NMLߴ 6?cݟƲ3espɣi9(vذb7|Rބ#\מ/m93O)\7zTuhOv<Ofhg# 77N9t8h˫7_죶rGpпrҸ}Xv٨%y,Թ#DzGqDz=c2hPGҲu 쿞gn\^k5.ކ5{Nlҵb}eKVZ\|BZôz{VuD;wWu)Wn~.5w;tJ}VQ׊U!o>|7 ׹~+vަc͏bhSfp%]>;]SG>?^DЃ wR~Wol,n[=fF^tS9bxw  nN˖0y^깊bn/:,|:몯rv]ưp} ;wUy9;NfgqȀ:>5sRl?y = ٗοP2=~;Z!iC93 Oډu 'GrN-%~:ã\5 &;H>忾?}%z/xkw%7 ʕ+W\r5eM昅{Ct^ b`=q (`XӍivEX$;GX#- 3CYIs^L%qpǴFmE^[3kUt{sCKΝ'FI1]wuEOgNOg\U-oƸ?̗܄fCd]h W]tWQUKxS;e c"Gk'n9Gs?#mكM'e߳T3wK'w,ڱ[zDPr- ږ3.jS梱1-lN1~`UV)7gᔽfiކ. ({yŅ"v%UO}?*ڰ'rڕ+=_vɿ91/P4ԛginr9r7XZ#3}Wu.ڡuX/:Sݞ\Vso8}/*Ѭ A~w)y7> o8/ Pu-Y`vRpneMwg]ƅ<=ow2,Ay~_-^V-;SW*a>!0W\rʕ+XB@C BIFP]v!)Z6@c²R*J!h]ƪ7Y&1"Ea֎(FF#褍b hyPJ])5Klˬ1뮻6 .p#uIi!БMG bxvq~:َ!Vn-_e 4gV!֏}a4G"¦$1X2?`P* tCulbLL{xt-S(&Lbc~lD:ç#„Ñ+Wݲཏ^˱=NNby4W\rʕ+WF&i&YFWCH\lʨ # ),F7% [LJ:HmƵJB){BV.YD܃ax!aXra#Tzj:xFZ)SSӊ@]e4 )BiQiQ}I烶er5)Phc BIhcD*,DƱ"RTS_5 V~ɼEטuʕ+ע.gcalsMiF\rʕ+W\;%\4ryQWkxRspa+@(q/(UQS:h&$Z,6&Y:8bP!K)QHTR<% rU^5U6TUպ^%𜙫%C, X aHS,dbp磤":0 M,F;w맰h[F*CP)ڄd tAH:%]5cML7nc{"OK[Q6^6N3[AknY%{J1:'_ Gmn=& IgL\ŗP\(%]najg\rʕ+WF\rKe868%&҉4.#ں9vYҫU]QB&]F!)p%%,r,"='6s0(/6-֣ ( ~AP2B!9F)%6 0kU CmKGh4^Hmb;Bim3#RT.JJ)cmH.,,q[OQGKTtBR D ťm#$.bs4o^Ϝ93Y?!e# 񈾗*]. a{1KU6V(en'9$ y|"=˔L r~b_<ڳ.SxIo˭;ʕ IDAT+W\rʕ+W\wZ A~dcZG3A HMMc T5!}$F͹1w2!|(F<@K `Zii(5|B_p"x]t٢<8A2b(i'ĠIE ˒B|k h@baZd?n\jB^A#ቈiY mWęvsR )vZ)Ԧ&Qո17m 4PJ/lKD5bi^/$s}W$s6=%'sEEG9MµƸO4t3 mCN,3-٦aǘu5ʕ+W\rʕW>c4ם^kµLzi-;cwS}riڄY hpܮX,s(5CI'8[ЄkJQ~[i٬=h,% ]YJ;$̜y_Q(($Eim ͛UQ~5Ȑ@7!"Ī%n]tX܅BEp"#I!JɚSE_֮[BZw_p4)@ )-:IKA M] )986oWG=YwւIS r}iF):F ,HOalv7P% o ʯŘ"4Y8si,YoC#( QZ4A*QpGC2kPI/&dFYx r}Ճ#!!XE`N K]9[Qk}bf*rKdd9 M^ L2gR!d0K]vi;/Ww,6VDuIfZ~mUjvt7*)1D$8}X 9: o̕+W\rʵj]3ݽ̇Z+w|Guq}3e(ZĝW/\zt>5 0\޸d;ĭs2ӧ^ǶU˻>=Np5V=]Vy N|67[ҵE5U kwoViKkUC ݶk_&sפh]\e~|v.?|{vw"mW =y>v/zv9< Dpi8q:H-';՟siǰ%yRYN=93?:z7.y^7cWKfs&x̜AicX42)c%Y~xY~o~ 5z9} Y K5j Yh{(rZ*l$|EJK #kʆxқV<kGkJ UD8~",AXjS*5Q*AUM5cnrݜ?% bEր"F h7/6)fd R9JCΉ}Ȩ:5t2ZCF c#p{Ehe{mT4K \T@cl&!ڔB#I\wz Duf>kulQ}Q,ɼA!t{cP)Ŗ8TJZ 9M<֊ Mdܲ6*Xqh0%9h2q\rʕ+W\+Z}fС :ͺ6 U[zm=}o Wлs+j jZdSK xN"~6ݛ jΣ޷UShֹ?{_ On;P sɕ$l߶B vBm>FkZjZwc72eAqW_8r~tm[Oѯy{]3.=p]ZTSH'*ls+ǖ  yZ4T7б+xf6|mۓ -^ƚ^g؋41qg6߯?Mכnxnf櫀]?O䰝g3•h\)9%I8vĵ{k%Bn`a$?DqsDᜈju1X)U:lD0z<TpcPMfiZBJ/9vY5(Tf/shd&zsavo3=te!x&My+W\rʕWP31}֡h>ueq2m{yj 36όj09^ћw\O%|9c~PWsؑwwOӝܯz#Ȱ_ʝjICZ̏r15l.{`ZO{ ?]MG>i$Vz "xiFĪ~e{YޚSpᓫ:i.&]ҙ (΅;$1= x2''n+5h5d?cėsهj޹so/M쪶>GHA=Obʼ;Tn+]'f?`oRZpwL3WyGCO5}ZkSOB>_Q=,:(Y@ӦXJum( Yi8ihb)iI5keo.b"&bݢ7w_yQE6nzq/)Æn~eRkoH^65\5Cx^0xËG HIu5ܲmu\VKvtfj_rIi}c4'_I4j#$G L@g* %2T%]F (> K HW+F#iQF$14a+6b<) C|K祟g9TϳQB]쥔kGvQgDx%7"#'kr锫JXW7qϋsMq$yG*QkN]{]gSج2="s,o=(s줔Bu\ƎF=rʕ+W\֜w嬳z|j4eeY[3v9u}{/>s Gy8mi)UNS[2 (,{ڟrZfڇ2]c?iNMz]!| oקo}h:#6I-^е3ۻ3[Y"Bsv h3),~ȹۮԖ[y?[R,ߏbk8?s:rŠUx4ta4s6ۀf^GFzp9<OunzU f/PQʕk#^O$L 9մ1(!Ɣ]87P ?AaXX^ iE@Xd1B KJkLY+|O'2L)6 )PQz6fCƋT vк•yQR2YG\6:o$0&⨫̀B&;ֆh |GqWB4׎=7u5 Xtϋ` X:?ي08QZۤ̔ZkT\6R2sA!:GR"#3 rʕ+W\r -ߍzq;uVM栃XRv)?fċp?r˹d̝ &ZC\‘-1:N$1ZTB*FϖmRLA1(@#j!60=0&2} C.F6smuHdah:[1z\E.K=aًK\rʕ+W\~UxwLZ<3BUi.ua3q[6>}23NWMM6پ/{wۗnfwm^>[̥۟C3oy"!_={}8r#l>S 9nW{)~7x<_w,gDw=A2LivzιKwk=I{'#n?B>f43Z>n hϝ5T @ˁ'E]N=9GMvs1JrYy$Me;JIJ2ʏuu K : POX*!ēȳ5mA,aٍ"tD*)SYsY|߫Lhߣd$E1 3m46ARa}7WP4I:bOIDdpsL(p06c\[r JJTZ6Y`YKԂ#!((kL6<P(n}q[1K/s6L6&Z!1Q5xN^Wb1x$mi9M;Dw}-crǑsynDYsʕ+W\r1Nla3<6Ka, o'Kfo; ]ӗV+lƜĨk]e)ҿ>bNrРV c9};أw+9a'N^lsAQ}GN`&Y`F=avs4֖9-Od91>bݕua nsݔzNܕKg:. %KDڷY`Υߊ:5[o.>ȤûD~7.܁QwY:oÎǎGq騥&}=JspVdm{n5'C Zȓ Dm7[PϕkMZhQ3kQOMIpԠ.9 JE°Kobf<|4VB@XK`GWƯ0Š.f<~%2q ^zA9L:!1*L~„Ba#–dn-^ &J`´B)| ^$vaZlOmE{RM%hD@Yg"S6FTy --Rg݃64ZlMhyQ7@bnqڰ,cQ̙ H? $ef?a0Z 5gc&q Xffٳarʕ+W\ o'"ׯ ͇g{v/\}rF IDAToO<r(l2MF*뗔_F)#T aXFEIry!_硵AeXRZ%X!1ƒ|_Pn(F^c'8fA, L 0DI!oX  L#Ɣ(xHYS֖Ѧ kC QX{EBPȈmAʟ /e.SQL)EdtVI@C E<02۾󲜦ވ "bkȬPQ1:b=eD{J7޿lZT%3Q;J9Ndg /ufG\rʕ+W\rPfo5M9>9˕+sij\[8bǝAK?['>g2]0Q< C og66aD*pEqp|<"JPOQ$KTԮN_t|5'| @ȖU͐Ca%@ Rddj&OR,MaT6)cM2OJ0JFb("m * ϫ'H1iӂ5.X#Ql^+MBӬGoDJSt?[B=Ux~ Y4b%^}@,n`lA+,03E)RH"E) )R;M2VF5DBƅH)rF)_`^vVcq9Q*rwZt(Qn62WZB1 <3[Gh];^)%ab d(=Wb .e2rհYuROD!u#06G$4+0" /M0Ze Z$ؓ$\=@)a% %*hm/|Ty}P8pU;M7L$8& /JʤF'`1x1#%ZX P,}E 9_Rn!)? /XXJX'q(ȧLߊ}@"E)RH"E)RHØ<ŠLBdcB"R8D)TH%F2>A1ڑk.EFDZRa˜_e!]^DO ^JYI`Z7 e!ص˘!zWb.U ݘrsTGyYn@VX%TBIj+ME x^zNLLfFZ!,MȇyyTBn !QIɋvn@+߸< +P)3Ҧm%/uIRYޑ(dZJ12Ium@p7"$R5lTW0V4%Lv<gZj:LHMU&eHcYxI2[r{.»B{^h{ؚiyޟӄ=.6MsͱK則gxկةyr4_L|&~JM8n(EɒLwؗvOrO"E)R4 uS%#ǥ%X WOJ&&Dz^Q$HD,օ[੦6SЄaʆ/ѡ Ss"5bX+Q 3XkE!U)x,N*.1Z <0 EM@ z~0tbt}$]HeZkxN2Qo䙱d1ƪ귘<Z~lYr ͚gQM|aRd.VEJzϑp$ıe98XG2 SLW H [[*N.MtzIH"Jq brUDZ[.T<2ݗ>rǰ8k)Ԛt;.Y̝6jF_2,/_>K֕mN{yp B^H}=qrfֳEsugY׳ߎ&~_'so^㖓fh׾3v=Q R!+ӿ!HԚt7|38+_#A)RH"F`LH>wbN).kf- Ǣ h#qy8$h[j%c7&4y(/r|Z84B2@eaJFRA@Z#2-~J5A 0lH}D!H9w:%~~)«9%oY<)B2 y*:,*aU=;̻8BT8QhA$eHEVHV$,Ry5Y|]KpPoaLĹ)˧lB"ԘZ 50 Rk>":H9X=w8uT~nrTQ"&vƤ_!|DR۽Pնdgqدqqg9&a8'Y>:OEmcG˂,H )NރA;l">w/ƎaƲfyލC_+gp׉r[WFM i2n,2iumwKlt#99jAt؞Mzs}oUl)RH{(rڔó8AI,a"AXaLي ZA#(ePRtHc#"T ˱EXԅE!T,V&dN䌉Mc\K,V)Ʃ !qcC'3Z"G,*JΑ ͕FaB6uJ5!:\`(pKo.εKHaL$בګSX\$!"Y j2E)AdUQ BP3: aXGntRy%Θha2Vrs{1k;ap%ý4l؃NҮc/zz)GҏMWѹncH0k4 \E&}Kxx55lOJ*!nz xoQ9|9Nw0ݪө|T/{՛tjGU xx-J9[˔G.]ӥ-U]YQ}Pvڼڵ]^li:aa4^9&1Cvۚұ][f̛,_4G#bdNggPܤ٥ߦTUu.ùY9ܾo;*++i31>z:}{m9}oBUt;'\"UQNMWշ57bi{SڷmGk3p5жʶ;sGh۶wg=Χkn׎lM`S}ϹM/:@pc2\;!=}6iO o$cF\wؙ-Kv;|~*幫OcnImoJmO/MnGty+}n7jRc}ٱ=f>>uӺV]NJ?6l`Y>~.8nוҡ@zVrƁlݫ#u6rĆ_Zn6*^8xh>˿gJ*+8jT(vӉU]\5z6h5n|V3^~lUš}U/݇֕'߽ǭX9&~<>]:Юm]̰ UomN6N#-(ؓ޽vW8['b=8's>x̋sD"-" Zu}NEjE)i7HZFcǏ+W[PAƊB Hg]EĨM(pE1E4aƛtCغwoW/N 9-|:~.|=~_),WƾtӴMkXqq fn&Y$l׷Q_>ΨoInlW{75ȪtX(wF ~G{ڒXʯ9d օƃ9W:E'^Eˮآy^SA):|\,f^Є6RxW̫+}Ve[rtzhٛ1<2ۜ6[bT?v-oÛ8Un}ȸ&3C4m݆` s~CvF3eX -ZL}x/{ P٩ mAT\|_ΘWВiږVu,}|5e)jFU* (tʹ,ajtfY2wKƨSڈY6ۇ̴ٟ2\Կ+ L,DCok)/(kәM+3:*fьEMf9?r*zJWS~8Dngr/[Ϥk?>ӊ]ڳ|$p?˗mIv5Y;2v5̶M4o!qeXɫ8q*WNeV4]?džtzVX{ gg*kAe>K_?MZį[mV 8 FϹxlՄyVF/۰|x^uVإy?swQTu=];6GөS>`.}ټ:3qunڳig O9da[1y8VT^c1FT\X!MÛSl ڶQ,#^B&L˓c`n=mWQ+VФu3yL~*NXі79I}m_Cڥ/_{Ѿ7/9w[{>y!޾h _/_Ѻ5L{;Nx~ժZa}M`҂QCKx)x=a߾^"E)R@PJEdT[L`Agu6XE8\(0M0B:(mׄ k3aEcJ J"P%FOc4SXnP91 8&:`c#:r$Dh~ lts8ت@[UˍDR5!+'vV_2&m` :qq]>Yf]QA[G-E(ET6ƿeβ\Cq$!qF!)N-( )NHTDQ;,7x)xR2~o{ hW[Q)ྒྷٵf0Bni6N])_iۜ3|UɌGyՏo?Xr%c6S>3>>T1x>.c7ύuReoAɋLSimR,W|K?2q}Le <ԍ7OX-ߊK^ydR^v^/SN y "{| h{>dȈ Zgaʛ/Scx7[%Ϭo,_8;;vƿ|HY>y.s|y#*C9]s4s=ffϘ=r󶸄1}7d@=gK0ɦӂa31Mbv^{yo,fMë$r?66:KoS]]ĿH7.s\YV[^ƫg0}ZUvސ= ;Is=}&͙F/W멟0Q5 Ozۏŷ~ۆ?qӄeNGw?ztx\ƎϷ[&p70~ٯ<(ߞvoEq^.zcL6\͠a=טu޿|Jng<RZj?τ۞kq9g,/=D vk,2ꏙ>9a<ǬI˧|D2MoZMUt_)RHG\.>1ffﺚ;!#?PN ÂbD|WN' 6AT5`SɈG2ZjQL0\_IbROG>QDoswh]u qi9y&|Wfk05y*}屲5s6p{Wy&(~םykt`jXh/kwv= :orGi|I_9\,}~{!ݏ8ChJH.jN9v>'3{CfNzplVTVVu`L#{nؿ־sk?&;>mֺz4t'R ?#B>׸Nc )kR{zҍ(!Rev`E |EСɈOY+XՕ?}K"E)~܍IDR'a&NϳQv|HJzXm]XDh0!ߌu0H"gj`-::"D CUζ,Ua'KBŜPm abAdBK ^G^DR6`Mvmm2I-$j?!8[6Kh;l<U._(@1!㎃0]ΘQB=ZIE"r4]С-B*8aQ8 >g4iRN]] Nlȉ1&nW<"yۄc_L6^ܮ}b5qss5yq3?Y7[|'% ~w14-i1KUD|M6hD9?}+2 ;G@;nN;n=9rk( P ]%kD1҈>&kJTGRwGoIq@ڎh3G 3~K@S<|_ 1{܆lLV&yOmWd^Eߵ73u_2~4o^e¸w[zУR׫k?Z,zwx}h|t>cs)"E)R(Y/zV=|P+ve&%ی&y%zt1-RѻQ*oX{ 0yyBHUA@[>*SNb;mL(z$i"/&nЈR:[qp - C ©!r}e +'ZbE5)Ge!h#5Su,T8S"_AI^kaA1@ quM`IpFqͽTZ1?@lY-Ѳ(%VխLCܓE$}?*( bcm+-M %~|O>k[kN-˩oϖ[nB3{ü@ 4UnGv`v(, Fdȋ8_0b.-s6_μФ?z{`,ag_ȑ#y/9S9R{sp~-W< f[M]M- ac:PtfH>cc4ٲ/uk!TJ{?Xy̐n T Z6`4JbÀ1Әimނl >a&iR梑T~u =d:L]f< P<.| ?a{ʨ?\͘Z(hv]Ø˦l.h}4Z ?ٟXQ'ωG初YI ₇n)'s[3"jȑ#9?'͐ټf1c8#v%\^K0mBAl5Gż3|@0[l9  %ύy6mssviS8y_ڡW^*6~Yrg'@ݏn1}4o ?fz۷@c 0K~ȑq3hϲ ̷,~*n~3ܛר=nQh@Tξ ,YsIϯ£φ]7}pNد|{/fG#RH"Eq)lYBFc뮱&!Ҝ,% C݀ZĖڌuv[ yAHQ'KRh|铑> Ko 4yDAZy7&'Ex2gg$bO0,#-CkL<]ctd,NhїaaEp(N$ CeL:k|:!P%h,ktfG_&ękIjv"]Sz^x sBt+. $#qDDh^dLRs$v7sDzݨjێvUʉ4XAA{,CN OahZ-DjRO;][ ُp6֧7];lBݯbBJҺO_*ʱ\ݗ?N/f^]ݧ;:ugepm:mN{ Wk0£sMW{qrq=eյ7}zt7UAtT|xvC@ܫ\47c'#KNd,4lݾ9~Ӈ=3٥ `Z"m^- G>'3ǧq/s۳1߬>##48]ʰw^qDzg61ؤ/} ?䖩! 4$l#W,6gc9flV â'Oep>K&veЀ&Qڕ};{sӡ|z_pГk_מ)nňnS}AK֍>ia@Z\`_t ]|O̐=pKڻ;v3ʱwG^t=e,>{_hl NޏFQN9wsD Ӄ=0&Y[V@Çֽ:w`sۇ8Fꗳ<?x8{p֘=nQ=c2٬?}̓_id9ȍrO[|5-uOj7[,G,bNGě@ZjR/(*jI3X+rM>*DAec)JU9ѣ⌎t,ۤ}?[R(MLL)=)7,hs=ԥ5RE΃kG)~xin9eO\)hgONi>Sv\r@ڗXM-~UF|W.U'e|TЮBC̻}:ǜW\lUou[rϜk/ZgڵE<+<}LWҦ*"+c{6k%]gn[ \|tyqLMS;drnEw8!@yRq<[Ց~BD Ql߫, e=$Oe)i P*~5;\\,GZt"|-V(pC`F QtCҤ͚I'+6IMza? &f%`zn@؀ l% akjr0x2D k*?;%lpzKR^3&o\XB~byty<~\Ny6+N&~-A9kyM8?.\H"E˜1cvm9}=ITBJ|FI*DH,؀ i:<ϋb Byh[)t~9.w!T3/F&TT4g #8wx"j {WDa2!>C̢MAtS iA \ 1u:@*24[F Oe#Ƙ| l<eL39sa>_3-sj,K'mMhI;鍴qrfObι җOueg^ny[Nޛ-w]9K Zěp%׌sO+R YDNTV:ǩ,BFah( ,%y6HVʋ]X,L<ҫ@r_mjyQ~SDAQER6O)!JKYk !'gq#$"Ck=\m;tNħ 1B`%m ȅ˰Q,(DDtAK/&`)]]bk# BjjVD #LŪ7\G$r.qWDHDTDbmaZIq _|^0n_l:j]K&bf ^XWP[ەU0_p=d~|:vV2ֲxuVtqїZѾ6Ӛ*$5_t՟P6v 30sL =N<+ܺ2ڴoJP_N4Ǎ8{|~1)[017ЪI׉\=SV}|3-wʧeGlgUH|YO]ΰmӦ"CMq7Ipeנ S wqΡlݽ &2xߓq7N׏>Λw_o^ؓLy9/yKv4H1_~9#e)jr38c^3?FZmS|;l;0h ?ʖhJ9TC|g Ba&\ ˲@["m1 _8¶m|> :iZؖcu6!DU6R l&D?' rLN';y@. .+l;M#=qvy^DGdYҋz&B|a\dPi)0aExR O.!r CFPM9q"+0|nd0P2raxeDnG2WbOB{^ wJ~%sI7łghbqLuIz@n2N|ux`,WNEIק6VڈUu|v桕zP^z, Y7>0Y5'Y>Ⱦx<;3`ӂ}oGeCtw;(uX_ E*=~F"圵-V }k;5 p8+>^ Ԥ^uOValNq\$nCfHSwRYjzo lۇ#~m2]%CظtFraq  >"v^UW|-6yiW?8/3e7ӵEBiNۿ⹗f ԭ5G2aOTjZ29'?#çcf*g$^~H@i&; 3+V,ΨWVx';}g*UO>6mݺuGN#eYH ,j(t0![J%ܠ pCtlF ;)]?|OI> G-k,4pm<_@+-ˊswJ9L<L .i&j-sYEۼ)%QBVH 8r h@\O+o&Dxq| 7VCJ]#d:Ŵ=aĕo\dv11\IpEV#u=,s~yœ:mGd6R!]C@CJ0s xg7ixObG|sFa{ G瘉#X0z7LtnQ͓߰^nP VΗ K' %)Z(vs> fĕhZ*KVUc͜ݾ$K(BJVxj&=0EKW^z,uK-N 5hk KNV`oO)1y3[ץRtҊrtOiw7 ZfN5餤"89z>޵q]Rv/lUO8-~|tk9E¤D2g+oY\ul 3h4I=ߌe+Գ_y00WT"PX6K^kZ(K:{?*U Z+?>BZT=A@{驤&_[ԔT[:<>Jd$k,6II)L"ϳrվKN-tzƫ B߻&t'=5Ba;ұH )i,um@E(Z]o{'<'wԚJR? |Y^u,=t}_v5)^:\'S 6*V,5Gd7Kr]\sY.N'fWEQSfS4iNN}i|xGYv~&3Xl=[vAVh1D/l; Q$V8PV29d-zoG^4/;#L-% DBUb㦃aM*2W?=L[8͹s㖟SNXC|b>hBvAӦMO޽?v&Q ֶlpaMu4s5f :BavL:44ݣ p2n |cA^d(Eb\*)IJMp0hg|.~C ]7\vA:\| EDd)%eEa߇fģDBODf@ӓ*l?Rqؖ%F1t=/ ݈C*mm /FZ\C<-"oh܁Z{Oy?Kj}ơv6fFQih,ex FCEB!m0{"*5wIsD|lBT6˟M{fަh qZ1zdgcNw X})J<G׻gg>\v{,!)Rbrx?W8 w `3ؿldl+ٻWA0ι%/ʝbD*ԩA1cgY=D*5\7Nr .2+Rbʦ!_ϙ7(} ?ؾh Voe09g0yFMZne YV 0 69)cl[ uw8t׿csN*qp4ܛu?.3eq$j4mٗ+r@i,]Gl /km]39vr$$%yxs_=i9Nm su_x)hֹ͌+2u%Y[7WnƵooOs}S~HŪQ|gav]嘞//f, B~b[ZEWbŊ/O/ J/xLG<> :G i<MYl !l.])9|)[l]SjMۺQ&iBr,0,!#Kao[ut%7Y`KE,㠖ds`DJ ʖL&w=߾~;_X ?)%~+[|VEv]oC l:V9<^{m/,QyGᕖ}4 RlQv ˳]gsI_grdIʶ.X] -6>kv&+y =3;$$Cd*l/c[K9pXVaaY6g~ d)q>!ڍ8RI䩙tߞ̩_[p WH7rƗ: [>܃2jҩ}q22o c̏?XVT>[SE+CVK۲\ǏQ4Bt]ǴLga[N3qp^liALQd'FMD4]sIZ`I25'U*mYUa8(;aJIBP^.a8>:fr}H%08AK" ?(#:!t%PQhW ;d zx̹h`.:6h;P\:o 'jyy?aG?enuɠR耯۴ugYy[ҟٸy%/.1{, A֜y#Wފ5,X{`X;oT&+=ҍ|~+[6/`ddD*^aNYνZ .u^X1iU<.cڟxUjLrIxvmCZ4wڈ|M&/2#| ۍlݺPܫK)g9GO6y}~0I ("3?_v\.6_SK{QV_' z4}c& ?C9ۖ@HCfcтX'irK-({ֺu}{r2lZ=6*-&f +sz񶴯fm,Зlc|,!BlY\ZqKa;遆^#]jvٌM_J)ձ 5>xz"[C-[ؒ15B~Ov V[nו >e*N*"{,A?X9e,zk+ Pg3ƭkx.管 ;*Vq`#hTiX;ѰΑ_~a< 3+'=]%i7(k,?X 4\\D>“{9[B@hz6ԯ_Y<:bhh0_d)XWtmN\ث mx9~~BL_]ď&Ѳm=n8ţ0A^XM~XC+NҩM^,P}3;Y s9#RѽOGZ6nDb -[A\hגzСf2WCߟݚymO33%.Fm.^m=ϼ  ^Y7?]}ony MO>D($@/~l3vTa$'*TcJdONNr^^ z sI=-mVj4(GX2W:qŧ Ѣ|<9Z.&iA =&e/BP9hV|k/re/N ~Wof9]2 {wD*.:~Ճ^&.)᫹<;{ו+7 e5)dQ#ZJE8]/֚AW':UOoL5}*}:P\ b`8n| (Gv1w$_I"m/H=xg8* <%jsZ N%81l>bkir 8 q[CabEѶC2^gS)Ec( ?2y.ӳ3{Ob Ȕ_+`ĿS&4g/|k1' C:'VX% Ur䓌U"N~U,`ܽ2Ehn*4'J%H UT:o~7!-4v;BӠO|*RFLe}fգ]T^ikn#IN؃e%ظ ڴu `J W_Y7>IJǪsd|Osir^_06 z;o7ݚ:}Y"pnpuLL+cÕ=`Wn]tiiEiy3RZ&Lt]BW5+5k/ٵ B^e:>+?Vzg ŻpM;RlT{a6,Hn#%`m2M2<_\w;9 3gQa~YEjR_=oYs5/.@|H²mt<9 Vr4MDz-4]CKwAmM& 7kU>B 4PPn^ev2/t-%"LhsY#P4#jPM7VIn" l3 Ӵety^(MCӝGc>{2(zX-땨z=B(4hf )֟:.&\ϕF wZ.~y^f8۷ 928эZ.Jg=CkQv_0.煔HɊbJݗ ;od0Tu^yQߙ[.|Wu Tp! ?bRԩ]0jj!PkyOJ UkS/@hR{no#F0+x>H";#bib^4NU` ~?`:>/O%c\UBG?˽BEb׳dV U)_C f n6N%ѱ:#O>[ v a) iWa"TFY0 g`fNԬYуW #1b87_;JfT)NB\ѹ  둢9}(uZ +.Fa2N\sTK!pm˖t/TUxSӗ:BuOQWZxO=>o0O-9mtޔ82T.}t9ImzѶ8T[wlvMSh+8E:ӣi\ޚldo&J$dPۛ>q OIZ:kc˷^Cy{70b҆*VQf ǿ~ы9ƒbʑ\= a կWJ=Ҵ}C[۹v?Ր,x);x|4mߒ|[⛤a0މ1gS~Z/멿ޙ>ͦU.-CnV3c[VFL!],_ZtcleיB85JqԬW VbGyuh[5Z6F:4ZFzZ ݙF*U*WXb;>{9?fI^Fu)n/aCNc`C|J9{'aF-,6m~'䱗|^SQ]E2iUp_|ǰ!C1LrM&drjsy3|q~ū| y8P49+;eYanЭǒm;71c^xrH4N 鵚ki"T:4!܎ ၈NGiByi'\.P ށ#L.sFf-+m-vZ;\Tdqydd?#ˆQ:ٌ0xA/—qMo0uw3*:rQ0ncDh&(̂d \S@p7X<~3 LSI 9r$H͇1 Ѻ$.i݀|3䛨pq F\ancpoyq2FwSPJvNm d1Rl-A/D28 xv9=VbLɁ}Psu4@ӿ,ZI29U[g,ቆ>t'δM]S '8|܄0xfm*M {$F)(Qʉ]>;oV_ g֏ +XL:鿆_fؼcChw_/4C LʌKGE~u-@ЉnưfƔBqg>G6;AiM}sR@f>uгkL/Iz2ߜʖD?6ƝyeN'3Q-su1?OY Omuz\:g-?/mAνh\fkޙKqK F._8`NZϰ:#LiEf.БvKD+Q5s՝V%;Hкy&~u݈c02f{I:إ)8=4˫8^k_Ż׼/n޷X|edؕeIV?m%;H5)avq=F7MχPw: >jź0?rԣC1G^1|07yhAܘAfeI8xW'y8Wo;y`u7Aٿ/_pP7@سf>\C|z4,WnjNOrY߸厫hU9 _p?[2泻#<ܡz&n/Q'i]7Z1bxߗ[#:E<5k@u/E3ٿ+^x{ A^3>-kSƉf M-5m}"׏RоL:iZr6&.-z\9 wDWsIQG L]v<9ӽ5ۼ7 >*v9UStm9$y{BC[XϝWȜ 3חC%E=SdCڑ6O䶛{] \N yDϋE:r﨓fL*\H.?!>գTu)6o_yQ2%%2eʰ}D*T>|B́FRl꺆X +DǁrbXNT蚁2L*V[ ! y@) 6MK8m  P =~rC$- *i';lG!>]ǴMgjX!A(*l{!(OA%0Œ(rM`Uf B` D@vBDuAu@DTGDb01IzP%aYyZv:>l :>~LYF +D/C{Ri.8JTPJ$t$rLE] /დ<ˏu,_zM yi [(RZf&fb(}u@$j4&DE29tBR.R(3e޸- dOvBqVM߈Sf}i׼)-:]N|~Ev| j78/zJn<2 Qz!ʔđl|ku j3itk'jOB;QRRDs}J\io1KM})FÑ s/ҔMr`Keܧ<ME &R s/O(XM;6|)W0r66`tU޺&YiaY6N-L]+r zvp +mHF)hO.)ҍ> w;{U eZ&^w:(W5&#V_|CQA KUR3oro rgk| $L2,~"_R4MCTsAV0ȶ3oTz%jD|g[9I/;O`HzrØ EXvΫv k4܂Tց>b {ۖԘf/rl(n'}o|)pK7.] xtjߙ+ ηQ!Ӟ6mD1`/@Rn4Yo_.^n?!(؉>mⱴz V6z6~bK)w2y 2i :ᶱKI%f~| Sޯf3:i~|g\[ҙDQ8Ļб}zv=Zz_;xb@i֌wJDdU]\ʯnيj)´83yz٥ /iNqP2϶ 2.OQѽ]{z:W(O$M?*q;W_`=wquY}UWkxel,UTe~Ho˫b#V5k5nLoֈJe+dߘ|h(Ҏ`KϏe`9 ?R: ϧcZAD R8~z6b¶L Ag@!(Dؚ4.Uo2 %2;3(!q4)@uE(Dg0O:EB5:4-Ly%|-Gœea|NiOcX7"Q./ 7 ;VrTF!]>u:2aHeHu*U.Hȏ5!(0" Ǯ8:qgE.ƈ/.68ծI^ IDATwX(:K_J?oGqT T3n|Co;xɛ_bw-=NfrT(om{b5s]ƝB4}n c,ʿ;գNۘZ^}5%j/W7` XlUh1tk:n`HE$ eYX@ t͇mضwN.jBx^~nH hU>[YdW!4#̮eCS>DYvB ģhB:d/cAm/.B(8t  n88 '+B@QT`ba`B7<` a˲ |hn ض{ippINNNOrtWWUа+X廎V0=aйkH?ƿǎe`a;'h#Bk(^t^:Ҝd:H/0$+%>^Jdɇ0p@HTh 'G#y p[4_abX*VUVLmoޮTP*6]ڽ]FAU/y'mU.ߐwn}94B6B|5{arFRIZthA(Bh:2xLDS|r@ HEe"U& [ `k')gOP2h!,20 $%gB0͛py1tr &hF7('!N(t(_6iPtp&!5?p} sPP-lt'/6nG1μ1a:e(RJ4i?ǏgBDSO)44444444444444hI2I1:U7煜R86S˗(LZ9'JۈH)QW $0VH 8QhF*Sv,hF"aӭ;8'4Y, ׅkɲ>.vmją,t3ϰyQZHREE .7YDΔVp> *YϘ 'n1vMoC..NrѐãPfu?;"{C,׬nAj"%mT3#l@or_oxS{Fm${v|Gb}iS? yG} shhhhhhhhhhhhhhhQP F۝x @Ι$MJJ]2u])qY[Z7yXV**)d1j)H)(tYXT. u^^Dz7GBB>?u!{ltu'a_q]:KEwakHmj4m8SGދ-)w~PնkϏm%GxhhhhhhhhhhhhhhR,:c k1@/k)7AUEb,'?-VnawIR9ϸh]I11H UJRJ5]7זK]ըvMzRnXk}H=[ 3'3n4]gpTI)K((WQ=)'t8]=IO]Dn'tBҒ@D9cwŏB"lYbUi@.Ǵtp{TfH3Eׂ蠭1ۇD]h;mPx4_~~ ׹R낦z%$uuܰVqsny\S@a Lw n\BJ9xL]UsąIm~0bWX!L)eUxDS͏!1\oCK:==t~IC؉ul5sUj]˺_#3)Sj ՅZoP![PEQ \5QoC8DZݺf :UBRx yAnGPԚHmN[xKheAco.:WGsIKZ4["$z/ 4k$G 9J=G] Nv%k ƒgAϯY4MJ|t J7^0JxnLc_l?x%xϽ\ebn['n݌GPh><(; {|7܇Nju#ޛ];3j & =Jwj1aBRֲS+9z%iƉ Rά3tJYΤ"nqCũpxlZ 7^J"#rCnnb.4.4TA<^;OBrkRqp-JƭD&Nx-\EU#i`+N5| Z֨7m80 vHcZ|`j'\nGu ss~|=|1(\ f+E{glP->=zFw+}Y3k1H^uwK|SI}1vc!gRz$%8]]Ţ(뺒Rjh+"jWEZmD"F ND1<;1IiF4A~A4 V ռ8%tBYx.9j37UDiXyO+" 5RRݡpB2k)onv9o v+CCCCCCCCCCCCCCCnuY98u R4QJm=`U[)o9RHzKBsW3r5 Z ]+-R8b` ~7\=i$B!߾)SR |r^fσgt"Og"UEt "^Nt 6])%z[:唀jʬZfJ]Z;SVi-2r/h.ݝoJN֣ s҃pXa;šŚqd? RݮA 1Bm(%܄\u/GC"Bmf1RܪRNT[jEY뙜5OPZl*DP} >#Բ}~Fl,9+:WHHbՌ$:sW\QKBP}ż;$̃EY-xfk4G Yǔ&rM5K`ф&%&43\-. m9nWq`$bI\L@(ˋ^w|P̍tPV jeYZlPKp*;*m#%Vc!o7MSfaY k}pEyO6wnqhQm@z,P"HiJYc@#vgVIX{Ah?A+Z}Ks~phhhhhhhhhhhhhhh],Z MiK-s{{w̜j+WsA}[PaX-zFQL8TT V,bXaV+4L3]$Erتh6u-(kf&SU+θ;>g Lpg 1%-c݆uLiGV0M14nK'vxkAu~?jp bE_߾ۓN?a} }4Jx{Cmу{; \E݈Y CZ[ݯC X4 Iu =27N7-ЦE]II(BJ!p%8h[6[l⢄wYs]ƆawպNY[0ptyD"VJrAA;y;U|}>砩le}߈l`7"ZW)"`#JE"ۗjSJxuRVJk¥95XhRRXkʒi:Q)!u5J< I3˲Ҩޛv#!jZ`]Jzò>2RƫlĂ:WrGNWTVt]R|XׅbPG9ך"T[p%U䂦U)9gJ)%ֆ{}dw;i K : +.@?~O8))f=6ͅ]QXwDn4+C RYm~=|[y ga)Sץ;S+gLۙМqv~ = eYH)o,֕i6R7GJJc "kjB{Vd[ ܖnpL IJ\Sb#J3)O"bg EbB۸9g\T/SG[UkXJin*qS!un݁+xa]7u3[0RN$T%:[5;bXNdU{/#LI. \պt펶ޡ;5;ۜqk$Pڣ;ޭ"{= $f_wŐHP5m`Nuzt>۪mR![QnmhIiOz_z^pLRV 'z'a?󈯈 ZW' eYQIXRD3C1jrES&R @dBuTZbc&z!+@7Cs(%b&)d(eD_gd4ӽ=L IDATq v7c#P.Z__ٝzݤfՅJ54SWO1O0[H9F6Z 'IP-*wh[ׅu5ju 470Z0/䜶n$9R8J S)%RcBfr[) ,ʼJ$"Y-KJӅK.^TT3N;u7^_VlM?tVOmZ;P 릛#2bz@Gwa}tsWlª={h}GRvs6 N5+CCCCCCCCCCCCCCCD1%WZ37rT+ixSR$hHsuEE;#3\cD<,9&NO5u=i'}9XdkD?HXZ1R@氺-w!5\JJ@AOD7Z&jU Y@RƢ<":O["DJemӵ9FV wA䳶`,do^җmW.n-^e(JzhLJp;a -KQXUwm%8:5AL7#OJ(uc'4]1Oʺ.mjujaIN6x9_JZ# "@1nu6zaϵ:o7mK8|h]-|Xn1C%59}#\;$Gmpob e_tb6GrlV;Ek7444444444444444U6 bnZZ Vu!RovfR*N :`iOzJ$*4gЋkc,DƨjPRbJ u+y. x)Q솀8`t9#zNk1q_^4e겄ьsbS~S9ܻ=.7$T<6e*wMYdOA͗0?pͱEz $C궲ۋny<u3"rqp.\cM\-›x5;0 XI!*{t:cgMs =+ķbg=Qo2L)FW΁"$!@j>1JǛz^A , yHj _ND/89Ozs'\?B9SKKLSbcgjd=E\y!iۇ0'%a] ŮY9%6v(1ׄ󔷵Z"65k}'ov\ۚqq5u=SNXҶ}I'xr8lo<{tctw9[`}$Dbbi8m!tq.X u܈;S9:bl卽 .5V^Dp-.1nm8ٝѝ(/8GM7oa8o I_>>3dhhhhh 9xK.kTRur@Rj f(Q4h iQ4`kD$zr{Է!z~[͹nS;}Ev["a-^۟7%cr L(csGܯ1  aN6߾mf Գ_uohhhhhh_~/<=.ЯCRsMӴU 1+Jnʔ h˺1MbNzxS-"-xF(Vj]8MOquyۼ tF52:5iϤRjAP4eAZ9[S4Ĉv]L)8V SE络gLR¥nAufҀ9O-ׇy+gpAm,tD+ 6؞.tb"kk{_!ƒ]ȗ-2{;:Pk7iqğp\>Ep(c)]Iş~sɝş?<ЯC9up B ci 5@|ffX]1.gj9T\N(ڒJ-v栴4cdzi~ tzo wg-7, ɨnAú}\}̓um?}W {루?[ohhhhhh72CCCCCC.;IaAU,S<,1a k Wj[ pGS=ShITdOX XJDvEѮBwuwa!!m-w;444444444444444(ȝ=A93匤DM73B5sXۓ'ER$!(ĆSajjκ^so~EiκZI8QR1 sz^5 o&N T4)k]q<ϲ>z%+L뛛-=kdyԭZ/OSě[w40Oћz[ą]@li}Jr51TK>j;F{־>l.=mMXCx}@#Y%y>ޡfiu [?o'vn`~_T2"}ehhhhhhhhhhhhhhPg)v*t:9%e[bf#?4+TR+gr@&iuLBʙ<`>L̺hZθ-(3܄, ad_hvrêZHqae3Ι[$)yIBtE)k\ºۺ w ҸVgYi# y!Zc|A=9'}'} [tTi'SÀ".SJmZ9D_ n2> vif6vx_}0c̴Qfvpyt#vGߣqzNwp =J)IKQ{&x Xqs|6t[)QKŭlQ憬^%Guhn5L ߉R ]O\@[TS$O2bNrR K5ğ +@mRArEKtNyxЮ¶!effkr.X>RK t$ _k-{-pP$5C#ڊUxnNIw{iQ-o 8[zr`hyzZVT"mC/eUZ5 .bÒH3+- ɡ; _s77wqSK/mq# p|cR5:z7c j Hm[=i1+4tAwe_q ML:8444~ /Ƶ-3Wí ,7~Mp.XuRh[͚@&$MkA0*tt79XK]1TpsH)1eb7Ĉ5};׽]01*#n4.wn?O$^ W[mḶ3ċqz1q7l'qߎ[ cC$B9Sl'۲p\'{A:z k=z1/'~_n_+uoߋujCCCCCCCCC) ,D"VuimGtΔg ڶ& UY(5&' EY2 cЖdMȚH#Iΐ̙ ƺ{]eW{_Kb%sG1X]cv]õWWNcܹ2^NNqz%ynQ7vlT$$UrHA4t < T ̔kU]HΉR֛kf&C\s,kئ厑_}F9bx8R՚O*lŒ:=vkc^N!{7i< 3Xwߑvce\sR=a5CCC^JQ4oo6_/|ÛB-|<WTw^7{>oF/Aе{xݯ$O/o}k>;/m̏awc}7 Ɠc&yoV>|xYy'o>og/Ω~7u&^+o¿ͭ3_$?ͫ~_9L05|9wO@z~+WkEW؛ނ穏߼/C7KON+|/>;|C~m/ {x>[!k#&KyeN**ZE;ju߁[klB3nDiʍ_ŨGGBu7T93;FR?k e!Rs )R.xY p137 7緢TR)#TKū UXe}hu04@sy'sN MwLLjm}f1luߞt ux#21NϱmG4ʡ/~qvQca~e;nN85Km;; mnQliwC'BMa~'>Skky~ܿ_k }=OsM<g{~s럻Ωϼ ՜'x7;J~-~;yE<_>E.2X?J^>y|O~w?7K{g'yyw~=/Fo/͛?z4` 3~N9O$qlHm *'ݺD9)M3ejWDVIr}_3x}-;))GJiV97c<Үj`EJ1%Ql__sW9?4B|4uC QNK["@4gbHۇYED]ifX R súv br 5mJlI[{٨j](Z75]}e8;yZ1Z㴘oB EDXR/ݐn !l@<-"<44&?~ş5_y񗿑7΃_8fm+[<|<|?>{}Q޿?ܯqly˾ fC++x۾7o:o"}q{o'YUroU,â D![b\иDnhqEo*nE\@`Yz{8{kfPcO^ꦻsOTWyσ}'>v8{^ZO~:\woaa baEa3Ȗq Kg f]- :}Xua}۲{EΚ7az{;IeOa]/T̬8zcOOZ]OpnAqݹK6_-{k(********y%Dy|-@}[fn";YΘh[sM4PF:@UUܾ"FmU 4W0"O3TGhsET hWH.X cFy]vìʅp.LJmz59*#alTځ}ݘf<|\ҵ%.✡д (FeAZlXJ6;8S>ξK>pw|ѐ_twz9==>t"ueQw^~NmW E+ Q&!Ku۹l<*vz؃yzf>SXX ^̳噏v 30!/AXdk?ήg!s|+κσ^"ŋrS,3"RW.Q&hYDf"yyb ! Q%>B-!1mԃTf$}6ԃ 42=@)֊_FD:>< j#FǙQZ]*Ap(0O>j@!f*bc)#m_6=} #sx:A>.蕂dՕ^ .8kͷuGWg셞PuZlյ|#7:5ݺsz fE"jiAP3 #&7kT/Ld@d*nݝM,{1ڛf0>cݟcnkb)7n{wV6fto6BXw%/ixԿs'_,Q/\SƗ>~a+Y[".#5{&;5q-  ?!Yf_M?eW0Y7PVcԄaapE1dci2a ̚U(И0ҏwe/fp_~@c#Į.]TTTTTTTTT65b`&hhQ)c5H|^׳mcنx7hU6yL@`nvOfigSUҪZc !E*d@,`ˆJy&N 3bb 2lS(_<;$7 Uh:ZBBt\6};jZ;ղ |X֑c&q_׏f S8v.{A%BMG;q8d c'wb2`jRHj$*u?j!!]o )o65;.5cpian1䢢?_Oxp5߸fCykNz sY|O|.;ln>ɖĦg LwfǗ6uc }v`3SO?[_'rϯc]Gb{I4;3gt|S|6 ~駱7YE)unxgecW=pތ8 ˆx0Bg *UDAz4VƇ@ ȤiMt(nGEL&&hěLX]}5f["33ۏ˪T]z|imv]%mܾ '^cÉg׿.$1"itjU)BAXĶ=8nޥ$CΥ5 )m4Hp]XGت=N \TTٴ#퉷®6k}\Sٴ^pNe'rs~e˥>'n}]9og};Qtx9Tv/_:KM̿l|;d1g>x:v#0jG_/~uWX.|v8] ~yD`+c>"_aZ69v;~,vfXzr?A-wginr.]_1Aun7?ï760HK6<~zvcndrטir".]TTTTTTTTTTɂwdM@i6LRe#@gk zh JMflAEQ$g- yRXcpŨm5ΡEbnwl5h܈'bJVwd!q-` c#Z@G*:j]8RCj0d~.֘4ێm.@97l/vSy+*#k';?_}k7QGUI8C={M`D44̈́F-WZ#XBi܄a]3̓E"^A3v(=A!^IV֩0 "HpTzȰ^gP@t%.,gcgz6@rxp- x[}C6u/Ҽ=<"uŤYƧRi"''nT,Qe,FP:\F6&BBA<6iӅ@TzlO'[z͹y}}OSZct׬,S8İ!Hhn~`&Qm]m뮛aeLvF`Xb[Qu^kK0l0/AEEEEEEEEEEEEEEEE7y#OPZGk@rWb٬LJV V\3 (]Cѱ9MPn'UU(=ʠt@5(qfuȇ4(3V ږwI$Z9Bh@*!p@U(Pv֖ 芠f;}lT ӺVBMgfb8̳<*`Zt2Y.F< CM,)Z-ҳv]Dl1m6:gҽ1LiAYaښbyk7@%ÿxlG.='".FU ݊١KDpBh]|]08k┞1Ǎ25Վ܏SMeЊ[d384ɤUTURx7*5H(  8BI ]$B.ʢ Ǩ̂Ad2ԑo2aq*# #2"Q2 QT»q1i*L% g%Ci&R4ڧ 1!YP,,`3]*7fgZnōc BzPu*H%DۤH["AW.;qP4}T|S eJ1뎍.1zni=^>W7#15LϣCp))\TTT|9\:S>6:nbXġuj1F$:٬Ay5%XbiFm ~u,AߺDb"QhOM)B'J#J7&[z/LI!,(trA-V爎YB8Ae[diw@VC\gDbx9ljPW7 V4*` ck1Y `svx[e(s,-\b4(MӸ^lXoby 9J 1|o= ۏv}ΕUF^]AJ7Ч'[/;I/K{67΋n2F!.$!T,5j&RxsT7ށbB@" UVhFfbvvqdzP$xD}n۟+hǠsfyq)**************yH":A ;},#4c$CTu4Q&XІiVP{j+wHxAOj=5A%(Lg 7:Zڒvx1L£Q+XSh6QRoAٌDCUm1RU&bs`$ˮ ob5=]l!EniyVx$hUrfBte?!A" 0U0oTksε ߒGAMJ)&\fMiv@Uچ'Qzםʫ^QQQQQQڝ&RW(IL;]%6ZKMlU)!FWfV8 J. xo&2IO.]: I{&zIYL(5i& J{pM@f%Dc"꺍0|hgF 㽣jli&-+-׵C %;U-.28@z5?7oڵCSz:G\SF=Aa{80.F6jᗯ?_Sv KZg:5XB?k9}s;W?JޱlBQQQQQ@yA1T)Yp.n#4#8Aۙ8.xF)`m,p 7 hS3;ܑY /m]]g4 91cpN:`Mk-އ(U=q7c߅Ov.⎛1F{f|EP-HnK<>/+4T@+KwF.#$nS$5B;.Fn;G\Wl0pBαyM: 6&5zcڹ~*:t|^6~Gl.v)Z0n$HI;?=GlM&Wa[ N}v =gM2%\TTTTTTG)X}> "mrR(mѦ"O][6 >+eiq h*$`tEu o@ E_bW` X3;1V ^GblZ|;"ө#wF(k3Zۂ~|Z݌CE,KJË(*****TW3h-(l@7B;L0h@%Eej14èx2+kXbJfvmˠ%JF`l,* > C Qt<)"F+V k45~VU54?1vEkT's." ai'8oq!iL]vi ;D&4auk m:C87P0: ^?#NM^5x0бNpOg=WZ0!Gwr70+[9#. yMZmB>j|]|Gc=-o~7.ů,eL}Y'1<쐲!EEEEEE1vCWQL#g) PZ"HhM(+W˜Yj k]c,"hblRHhp@Pe Hkږ +@jNPT RtZ<f f4ףt+!q0M$l*\/ň q]e .m$~ "Pbzx#Yg}&6Scfз-}$ T#Q u u0_GW*2Ζ~BzCȑaj NDdcZggjQg+, ufa7<&D"ݜ6h9(`݌! Ba8㹦A!h-6r(4J >DG#Ҁ B# h]ABc 讚sjR15jR-/E&XR|+M ӽvczQFvul֥u Ac]# *gJSLcT8uݜԱC ލ~(BU A[ F[(؄ROb4xf4aqy  B+X-#Ex=AiшRRh,A@1J E(hw,RYMdBij QU4~R&h >VmQ<#VUt&b.͠+:ek@CdJm pF7":\h@+T ˮw'S>ʋU ]sd܀LM5#1XM:$B:K.5z/ -"+0xNКcU M P ut|)ل0x"A0ƋFD@tJk:V̴F5mbS39 a02Mv{F hV!$ڠ 49nBgLx9EO[ .-k w޻)w^:4  cU9VhR~އ]KH:]ɗ[/J9t:|,fُFdn93T`DKd+X)o|}0J$Lj(;dh9k,ޏQZi0JWLWD#hgQ&*D<TQ( +G's[[a`%1r٬)mӹ~*!΋)Y 0 Ҟ ;mryH2СEϢoSV@~T@"!t#uuuus|φ@!~Jtzӎ֋VO)bhQ b'(Xqq!Ex3cqmfdZ}قʷ{`,***************T;P vj bVѸ{-!@pG]aŹeD OJzAAtӪ>TBјz@ M^#z#"֥Md?6ϚDXnߍ38!L0ڢQq{ʥ{%Hkmr28NzF :6 f=-5ĝZuy{]2.8`[yI (R6wc|8nmגLeAJNutC$;TIA8q`W;COV'|oF~;-_?J-]RVZlj5Z9h&cJd= @z JY2xqC@G*AEe*B]Y&ȲT& V3|ۑwVh#3@Yc~*6_ɨFzYU]RIBN> [U&`6ۍߋ1YAeb,n8΋ó\t!Vm Lcv_С:L&ǹ%%x qH` h7 !~S@ES]y}sM1B: ~p$|x_nS`QQQQQQQQAkgk~?o!}\~sï|#lx݇͆>ͳ٬ǹ!&([ 7A1kgf8c#*拦95:IӠMB/ժ5ѕ: 2s&IJ18|4(2p4M4a3ѸlkZшFh]'x !0TkSAҺbR\T\15٪jysHZ}@\6]L9ԾQ =L8Ϙn_ߺTpf!޹C{.BR;nZ*ۯ,wv.`[_Zkh޾tkM-ΖKGN䯋~Kω>[0W>qc'Ac9R{9זǃ5><ò_?ҍ|cxύr4/6~QNe :ǟ 6HO:}waMnxK{4`.q׷W|=j˃8C?CKԽYYǿ` G>|[:gxجV}SE'ݲIGYTF$Z$NKas$LHhM63HH*Ը@i` PxrV-UUǸ2-km)k\w`#e/_- W1?5KKײx [byy62~=-?cy猗faZfyxp 5ELmk<cSVX&`GF?FGGO ]6@_ʿ5m掊}n\:I'> iRcɍ[XDf#PCMsws. ;3kUɉhIݵw!}xilLk6~t;̚nMg?\pڗp_\׮ZNOo{/8qgg~ c6Ͼ$>3_R^pt^?YQ%v|/xKEo%IaKb338͏fčW}Os_w~ŵ~!}ӂ'?j+䠇~mNڗv8?n9MO?쵆kO?M?\Yev]~|?X.5ǽ|3؆Fmz?o+ﳆ_ϼ?:x{O)>}8_x;p噼\C<sէ=;ݼESd}ׁډ~)<Giy;o'ǧ1wsy)]2 j~u>9'ူ֩[r۽.ͯ8z~n븡D$ei D4:Ve5[9]B*ci!cnبS5ݘ9k-!fv'A͢j` W]Vb+ egAHEܑ7I)CR ZQ|Cѡ%&4#DN U 9j3pj; @<t ZSo*JAŒ2L(:bU}]~~*O]zxĊ<ܜbiK9ZІEzqb5m̟kM,%ɺ[;w/N;i~Aȶ-I.қah~ A)F)*********d{ݎ[7s?{H3|wKpAp_97>Bs2ױs*yޓ9怄Go]ww-l>w>/{q .|88>;S?g>&z7Mj?|Goo/9j{x_7{d鈓x'ro69)gNVÿ4bS'Ge7>R ڷwG웏1W| - ;enKs|wJoUMՃ[[R/{M?3o0x˕άdhy٠??*]K=ow<'{uSзOGJ)netE|QPAġ8/X[G+E76MJ@'(A˭։'Qm"c26SY`*\c|pf<5 !"8B0&LE>4$`RcGm,C;D@Y*;LE#^5V`T,YAy55Ed&L 'Hr]{n8ve!83/Hlc{{1E"}cġ֣uE&'W%[kRX3}-:WO8䲅y8O#Sx f;2fC_4Rlz.EEEEEEEEEE^Os[#$ryȁ;b#wS?iž=Xڇ̅^E~]4{u{jÝӊkxk ~Q1yxG>ˆ?_;7{G_g#W/k7پO7{_'~<.'2>w/{&^>C,p^Ox##x־eo ^+8g7MUͨ{wٵJ.u{ù.H@ IDATo|tw]pe?cx nǓ>a[oN;|[Dq 4yĉtyk>?vebuУEEE"28G@Ta2HF<4ݧ4MK\(:V87 P5r8״k;.xuZ lc تBQt}gcq[h_(tl8 8qcT2 f520F1Lʬbqs1ʜQmڭ5p(`ikٶγd]H\ma[z'Hwy4񸡍灆m]9.K0E@[**>)\u~ULW}2_Ɛ3L$H7G)XisቢF< |x*<搧~+]SFX{vI|hy?F^̦O{  gg/ᮽBK.a+y9|[N_=\XwE\3W:72wkZ~u)\<G/>|r?6Q/K_vRs7*vmW9G#n>Øw!|]9{qYZ++vbċ.؃iN>rlqz seߛmOҫj;5}ƚׯmS-.EEEEEEEEEEqN=gا{n9 }XK9ocGʥG?ړ$["[8Lt.t?dCjp!쥧܂TOawЬsnJC ߽W|[G`n a]ϸnծ6]^ȧ/6u f.xw~ǡ$]zs7?=!;~g}x)y&X9|G`5ko-Ga0 f?g]꟟Ʌ_[Oy:w\J.gf3EEj !|rж4UU1AU6C.X;OhZ3 U1b z`  f@Qf %̽U u;wsaI$ρ0ܚizuRkecX) F 0˂HAa_%i G{P)D l7x9#C w^S)Cs\Ja<0uᗹ@h1Mm/Q/T.hO%f11dW E 0 LHOv]ێanC4D(LC)*d܅Yl4RD Q*""?<# X]< EC')#&H<0b# _6Cg F`bXG$[,w@xO<`Z  !ei0DW2}N9vtK^F?F n8'ڮt2jx;jNJ#{ZwcVo<{tk|7+7Qyë́`[wpחqϙL$G!?3ͮ.IQ(o ӴKT)سS[;!O<^,Ӈ])lx6-7 g7w G_YiG`K׿r4Ӄ ;ѡqM_ zao3Ho5~ß ؤ,ߕ>]7]w[<4,^?w-g>xUͦ|/GѦVknW(6/|/AB摢_|'wII׶5bO|WovW>৽YRDrT7ɷK=}-7>u7OIǼzr]3Is'1zx@:jI.7iJ#WO?ΨwKk8G.} mVdϸ6=ϵ{!' YF-.Sf 8K7z;v]#q>g|l֝3.;K7;l*4BogIt~W=V# ){ˆ?SK*2hNA"'vTW{9N}k9lo3\IOisߨw+,Y,g4K$͂oɵゟxhlAҭi*zl6o? G@bc'sF͘O"Q j(?B9 Hųi)^k0ޠuUt*_ }+j %Rlc~?X0#(_2xO0nh}q]~NI61a<{0ǔUԭ[*er?d>y%)~׶ĞY3=IxM}?duŻ?:?}ƽKqX!]0JW$Z'╓G 8-/ɞe0xF5U˶>NJ$w|2(u (ᭋZ<95:ЮrkyJALxonOlb_K6>b?3s n!fd|^8Ìql 7Կt" 2'v&zZX2eH'%:ofP8A^n/CqJosmK"$JzEyg4Il'D0,LL,@۶A)P2+8C`HŽjq0eZ~FD<續bcV YD#j0 50|!qliH /X( R(\ !cC8YoGiIZ{#D]F"0L#A '|nɈ)<兪HF{ b@:Nܝ)-5m۱z2`zD q%]0x7["6ظ#]׉1`Pe8QE(cbAڗQjx8w)  N~a%$q{[a24A5k^LYM 4MF~=zW$^ƳO|NJnb 6m$&#f ]-U™B>՛rT8zEϬHϊdfcp)-]"jߝ}rZ4KJdWK>ܷy *>ОǑS*Ǵ,~8ߞᴜ%}_BәG^޹9'?g=OʡU5ΨHff&3b{{ФV%r*סUyežCDMGбaurrR~o}lONN/&~4lFnN695r9s1L9c_hv{|.=+}Myꉕ^hGV Y9i ޺uv'VˡRl"_n bҧcsU!;+N>{ˆ/^v'Gq=ֳ/g_=$X3BƟ܂cV$bu||?fn-W-8v3qw _̰V*jBKb2ԧzNUq™%;E΃_ydffm*\v m29wjpb}ܲAmp#0231i%z^(f>>-F(a(vq6UsNgf]sS%s N>p.'i@lԣ}s|>wݲ6rP nࣅ xh`w[*9<ԭե)*R^}xA[5wu\*egS!ƫ?c@rraxWMFN=q89|s?a8qmmQa.[?eZPR695ߪc&t].Iff&j H0,+<uP)=/G''d.xw#_[#9I$?;ޟWSS9v"%+^/d^i lU+ )q6U5\p]˲b8pI eƶ#~G4F.H߆P N?oY`HTaE9Q,ˊg!QK@"(PaAj.:V'j &=@zuݢ!P(ƱqwI HX: @HU$6KH2|kGt  ET|0'AS)lP^J%A-B}n.=1$?Zb<7PXvĨOr,@HӯPP{33Q7ìބJϿ+| /r0 b}9>zyWcmEZ/O9-+f_cD46x\С/Nz7<5Q$/_͙7G9fT2˗#cVVϝg9TYKiv~r3 ;LVn 2㋩7o⓷Q7MVlOI RxNOREy,^)`o"Оb<}'LkZxOPm/3P`%U疢i*a;>j]~MObsw2n%T}gunaһ]Vly|t~؟G/nHQB+ҫ,b4-d>W1i|{J[X9+ˈwPp/~w[i|l=O=DӔB6~6;9k,Łd׮EisO]B[RػÌQΗIr~Ӈo垡p$zR>.7? m3թjDv@ۃ\6Z[1;/;~Zټ*$8K8_`;9}Өo`)las1 spmrE<=]WEMG>w wK>Dzp,*dc8+<EV*&u ݅6(|Ã9c:0[fi#57ԧ<ӯ2E-EOp6[q-wsQ68[=-1}p2ϛċ*|~콂΅uJj.8u냜Gx?QOB ^wLu12I70VTۙ5z  w=Q6^fBQӼ?61sYHw2;>I%4 4L"$,')驨'BЎ-4Bс̏ЄlH3t"qQ ;(,܁VJS!z >1 tP(##+.JJ81'ʒL84ngEDp(@i8jZ!Jk @B7\J!a&qg+1O.-L5 RBWDs}Jl(H" H@qX)0hjE,nB ȸx_⟏C(I<@DB~i$KC9EcVZI˞qW?ƶ(Лy٢Cx&kep;;sOKǝ@8Ό_SᎮ'1ǵ|vkONn4%K'Ѽ: >[H6y2&k*&g\Rf}^Aab1Ĭi76b(;m`=/zԧsu}BfpQ9^]~#%<Թ:ߞwvOu|6JV,G+y|{;dS7~eקAV/ ٩?dhm}Ggoe#d(o6F^ 5|4w խ1?iDVMHKʪ6I 4kVٚ'v thV&Qe.<0{E6Z,xfrִ縵sOP{jZQ0酻8:-/YTi_d9ұ4i6RgY&?9:O̦tZGsm 9HΑ OI=assuax^}sЩ-i nlY2>LdRaRg/۶d'2p?-EC/Mʤ2/xymF4hϾt!C[ʭ_7t>8$H"$K܋*GEqRkX4) XR`ʫp;)$-P:Qeฅ([D:{RqaxRXSH&oibe-(RF⊽XVP GڄBZD}8&6Rd2p]4ZfaP(x%1~- ATTJ{҈+q6T %7-ʯWuzAFp@dFk2O'}e^ح46D/N&zG"I"؏}k׵BcOm lMx*Bߢ)/]uc>}י:w/0Z=Nt0}*sIiDi۶lGusq>d|Wl)}8'ԦAK@7DB:.xèJ0mV̦ore f`ʏq;aY-cMgҥEjȥY[HAMgwZR9'rjmUX0i8whFnv9RD h[~)'L; Y*ߖGvDWQ/ߏgrY=b`QjPlU3>5j6.,P93"zUhgK-nXp1;X㬦QNc%,Yw/ɋ;PZ 5jJ~X{/P׸ Է%` ˿zw+6qͩLыwIj3+v'rgv*|-tnW:s-[.En-3?`k\S]`948|t~ò߱ihߩ rRۭ%Jbb˳QalG'&7G}p֥Z+Y,BpO}Ljܹ֮q|H"$H"\JFW@0p@!vqBa|Y/A!R@c0JgFm[Elݺ{7Ht7Z R" I'B?@Ev$J9H }O!E?P'?=4ۄ$d "@tJ=aXhqCܐ[9i@qf;!I;h;vsʜm Vo4 ,Ta,B!;rک4:z&:Բ?r^lʃ}u>Y?2-L׫hrH[@FHh`ˤHbvi-)Ӧ<ûcy+uk,At_l֋iGӏGxXM-2ft;λ-Ӫ{\Zp'#q\;iN_gd]ahQ^dT$L5f˴4z%Gcj\2 snamR¿F# pJWAwђ|<ąt|59+p׫(\{ ̋xV4ka[4H!C,8uЁALgƨs#fS%V0ql[_V`6BuY<HmùN'e8wxvpnQE892ˀS2 %\: +9%2Ql}9  ŲD )4iHƶ;zsv>d5U7GDZj|H"$H"#]q])a.NF"PFaB`Ai05NEQڷÆ:R*ckX( a!\^TJ!\.d߾Fe /Xs&qlgG6(u0Lha='Z 虱Z!0B؅lRe  }UN>QUr ΫqVPM4 4B),CA8: 5-B'aرl C@j cJ@3 ԁY%bV['G+x?'/T)Ĝ'E!hL"E:X]$4Ҍx*c)1>@ 4ѺhB)" E Y5;" y8H2*աnݺe-ÜW)AV9sOD˘x46 4e# 3׷y](Q[x9ǘl-B2bFtg;>'gݗy>5H?0gy۞bkiyRW(v墱ӘUT)pY}:?~O?s5 Q4j~Y~W4jVjVdrֳzc emlKv4iЀjQ0ϢfF4L?j¼[.2sXrahݨ> 5Zzxd5iB%?yr"̱Ms#ӳfFz僼3*g|S$L Y ~?_,Ep0q4ߘT8z]$';˺E ^֮?\0t@~e+ )^//G=,}-; 3y5pT:+g֚*lZjco"vf=*k"qxe ׅuِQq[ e>shhvˇOQLK*)gW^.nڔj)sJr[Ņd6jBbJx./e HvJzKgW@f1Zh\j _N U J¥,6J "!B6eV9Wq88Kz}(1Mڂ_]{pj*y5.$H"$HV{TD<\rB:.. -2#+\+T!qa{ !K޾+\]?e Zνضk ;ֱgqLiPidj9DJ2%3\i#tU#T" a .N!CCH!CMfYRd#5!A K |B#մ,F('Dj84!3YJbe63@ LF*;\l$SQ>iG쫚`NGdW_xqq r`$:.R߂,cuOةXr,Ez Cz"6fWnS~c$BBZ(( _0uEZrû2v\ѹsi>]uqi ɛ^;O>/n=QosC^`dOn`MdI@F}ν/\&>uBY;wv~^;@m>Tyq&p0 }1CyѮ Y+cw1TؽHA|93>PTJm 2FEpS8iP;8X4&?;='KQAݳg.d9\ 5 1G%J&Ⰶ@ņWnsbT)kR;.ߓ K0P^ivΞ̣ѵfH>W'^؀ޏsmJ;X6D zQ( !4{-D<ʡVC\J~%-; c\S.`ԀȻ?-r,,XwPmZק\ fY[%3%/g\9ᬡ6 jEek/vUIiPIʔx#ǔ5عn\yR8dx-su)wŅ }<_Xyic+TQDŽ N +s1ۣO]pEi]uSB9!qʹt\֘o,!&32qugk8Xӣl۩d5I 1}N?wC!WK=J:*b` v|3TYLD n,(WìAFxx]66ʖ |1Wwz9J/sN|'/lŨK;P\yPBq-pzQ'qu}4- rd1Oƕ7a +3ZeGAG/g y"asw3e\{A{oZBϬx[~ͩ)f8wH֛#tPcP]| ˹כү!oyeIj6>/Pc@ J>I$DI$_!M 3$ʉ(35ūM" 2a +c1p9'8NfX4 l@e8NGȰW{O( L3mDHVa\l4C>ZE=0p/$S 40B8⡢e0%J $RPnۍzA"A^eƈAqRzjF\P* ѸAS(`Nl !^3i1"*(U~QD R!HH"*~P0` S$$|WHG$_ 1mqgX Ob4Bv>)$ uOXT;cȿi3٢OAgеLZʴ7V2g 1ja2/̚c^}rUnE,=F_ErJdT;30Wl;vDȮG L)!=,6iѧm΢m ZsX}S\uӘY 9ޓ8 sweք'E٭gdN!N 2vZO\0{33~>v94qV%Pea|^^u}*;#<-7f}W$NKrˊCP-oy73dwq;qSj(%4A\w#cS"RJS.'VMQs{R_KAzy5HZ)xʄ{<{Y٣IɬLzQa*vWӹkls ˥eL!Fg%/]֋=nr{LrOfύOe׈ǹDEZ,ru%΂rq>FkԦNvNI8n¢bͪ:411\Ur|x/A,¥/C X *idĐzX@˞#xͯX3V)9ڐ/üRzU>[ ҳrW -+۠rs<.TϤw M')SXNٛؾSmS{<6nUB=FL`o#y~LHL O ;Gȭy8?j-{3vhίgt9 N{xg eP#:C-oG6}UjM9y#r8|lI^۹c5 Lkی_Ojj5|YvƗ檦BYc^{D9VAˎMh88Pݡ>;i{n'ࢗwъZa;F orp+^dňO=<xD&JH"$Kv^T*@jMĎbjBF,P!(^ҭiu\,ӳjiZDX%<H ?oN48m#DiÔ^7WaFcF2B^M@qCZN遲iI(DQ,ˊAW%O X/ggҞu!dxJInR<_ V Ll'0HiH,@cx"D@;qaq*PUǂJT&&r IDATEc%7_eB]A'glÉWxuAUHf ;oK%-nUM[d ?[$Eo%`/+ly˻kW_1CjDIsqZdRprL_5l% Y'bAJo~䋾#%Rr|[Y=REJ` TEILML'r=_\gY!G%6/؋DXXxRxWhԸEAr@nwۓqg\U aƈ˃(c ޹ o;; 4Y_I$"lqomy_" ΢^JdyDo[I$DI$JyJ6i( *DeYB(DH $h\ܥմdR \)!ylưL0D+ϥJ)!H5mF+g4f:Ґ0ZL.(a"nSa tR 5ℛm `uA4Z;j7Nd6UujK[=)`?^AHY`Lx:~o)HAJGcLB# m[\aH"$H"$HZH"$nR V[G;XiSEX(.(\,#DZZyLKPݍSXF@)hBKRc!8vԳ:\\7i(Wzv` Z:_#D",R~rZ M|.,P)8X! :D#{0eiYF! '4Q׉2* Zi/>(JEOqX"ֆ‚)(I%xڀ?ӷVYax- B+ ϳb^jIiĊ8&ĊQ DLs0 0\@PƭʼnSE Oc'E,&{fHNgu\-DI$DI$DI$DI$8B |i% OhJrw#Zl# 5n0תh9QK&.å˛gd/~,MQ 8;ksZ&񰪶6h2x??odooUegg뮻jcMh4Fh4L@"YM9)>w]fݧ9;߬.]ǁe q; dVg9f3༳u8q9E e9x>V}8}zC.卞opy_qy|~@J~HB׷݅[n"Uce6>n3!Bw8"emwhR9@c,&,xbtϴ'KhƘ(6a)Q g;A >E+ZZ$M@qywvL<4bS}" 6;R:1MU9k3ut8;g*L5~[Ey(c/f۬hnƐu08\b^Z"s_FvCqgg'XM'oԫͬXllFˑZ8/񴜓s[МvϑS-ɁYirO){;t3o>}ûx'_?h?s-򗿜jqy]]\r%Mo8\sMRh4F㫀ȉ?vW=l\Ow[loГ]sxKRx!"~ 5B$&jգhK(@]ct͌.v[I6}%ם})M8΃56nd3c}qɆm^Vm%L\ X舖X9ZZA9@X-NSn#"7%ا ס"-89'}˹*/9rG;8 <Ǹ#9r?S|}?K.B.y|?m>[>< 9󘧼7\71'y\Kk>[Guȝi ĕ]$^w̭?B.<,}?C#_t!g_ \_˹gþW[w=q\q\x飹뿇'|^ŏ~2GnMw-?SWtM|_94n7%Oxl q4J!A:zt8aXl -#AS PH2=B߻b28ۯpnry/lm]ioEG udwHkr>rgdƹ4 ;LB郯`&pН|( iPLj[hv$qm\\~Z" κJ5_-׍%\ì_oV/bj/;^I {:ŏ' ̛xVs2I9^\pwubpȅWm6@2摐!)_qy_ᎥPS]Z s16J|Eѯ>k_ʋMqo#S uR.]w+~0g_YYvwq}R.tNhfx[6 c8,˰ 92OugsEqbo<"^@UEPr~2N6F^;qmYcRt1 *|"H#)h2SIqnuǡj4gRٵ4c?3cPIqzlq:1{0.TfRI~ariUwj|ׄYbY0te1[ͳ 8 8 1h_gӼ/;+fވs}9G|,<[6؇&m,ƕGVuF=J8?s%QPBWz[g?v,xՕx?K|7_0/O_kX}F>ڿy]9t~ǿK g^yp\~楜wכx7-_wW=ͯs~]߿[x3^śeǯK]K?\}m h4F*Sϰֳ[=LJ]=:.v }9Ym˪?Đ)9$툹,eH6gLz.DUQ;ҟ77F|pcD]Ӥt,ړ˃L:E6_byXדԚ8J[t ,HrN,]ORʼniέ-kgU8 9O`'7D&|r37l8<)W#d֛[ǧA e,CDi",yWyՁXdewEFOa͇ ,VXK'HN+fMGȟϣ#]EV໾QpW-yp勅TjE2?f\xg'^}G^jEؿ~t@9|+:.y8obo '0gVz|C僻JxGx# F?y,_Q>?ƅgُ>|wt+ܚ~{~=>pOk4Fh4nЅ~/'q8'>o_7fy圸FO۽l4¨&4I){DcI@z|J,7Dak\|f8cԩqr;\q;A롘2)rHiMJOͽn[8uvvOݻݻ?Q}8 puqas;H Mޫ6u&!E.S\vBf<=ecu$<#N1Ft&"Usk չ9Z4Ls8.L}ubc`HigMǴN}}?ˡ \ޭ}z=;DuY9kNW'RDSerDyL ACفR@ms+ҧ7Kx޷yOfǽg~;35|co|'U~wg~s;~_x?DR@o5Ͽb!I5]w{K/=#Gp!zFh4C {sx?uO||x ^ɵGoݼ͵p޳Eww\6G`$)Չ84 +K~М3+D"D:xT.8RNU`^Ӈ@N#Qi(QmQ|0 LS[iχ4(@X޷a:+jjbqhRe#M,uMNlLIpr%DMLC!r>@U5<7a5iY j9WqVlygMI|RB-=v\nћWk__ˍ+;=鵖AJ{tV\Tm!t^^O&s=;> \^wJȱl_fux:5[1xow#K<@-ď:op$Gm/S}=<_o D❼bع@ٻ׼{DŽU_}\~oĻ8z\u9\|#9/pgI(I@=ɄOZǔ u,+$ 귁jԁb { x.I<1yQ1QM2VQq> \@~@$![ڭ{!6 qG axA$\ s8US\uA:`]lQByZhκ]vmZ pVr{fo \-Hp>.5X݆$8ݐ4S)sLxVI)k_}zKQȀŲin^?kx=G^_q7 ڿĿ~)c˸[%e|ϳ}+]\enO +7yr/p9y{821*᪗kG5/~<꺯=,Kx8_sq♏G?\|#x?x;~N IDAT4%W~6O{ԧ>{|=i/X׊HV RZāw#!t>t[wgqpBùx'j-%`o6,1-g3$rU`XsˮU(ah.yH~SiE7?OZ=}"l3SqϚ'e{_b:Őn@qN&11oo\<+3{~]q·͟)/'z gO_Q^K^`ع'S|ܞ'~˹:'3g})WO|O>ֿc 8.xɿ_^+9[sサt= @/<}Bke/{x+x+^^2Eh4Fx.Q:|7GIs˯4ݵO}-|~=|v6_I4[T59('K:'j q "D!f%FE$ ɼe1::=3}$ގ/Rc;BQrqYYHQ m''|nEz}} C攫f%xd*]YPzQ]1$@:P@bm] 8A(N`x3^ xpbIai0Dj"S.qٵtVvVL?XXv'Y]w94i\LK5::YT g&,蜐Ҹ80K)QKM.C$JNQCg>qvzD$zqOFh4ycx:~cf6|Ciٗ]3~͆w-ozD|ݼ÷u{x]*^z_)OyW/ s{HݙzDQC|n{r'ueUWξL)g'qkzs#}Q:'';x9ҧ{\'䄠nl^Gc+0dCg3IS"=눹y%œDҭH萸Yu0{E%u>sd0?%{_.fsd9uWE@6,c<#E6{6gǫ3(;/UYmP)%~HZ,ZFQJW_f$eVazߢҩ *FNJY))dI9&\"[n<u֔4_bv>Vdϣ ZrC o fQvwhžp-O)OjYEy~<):RLI R?ejs~͒ounFh4Fh4"Z7{H& yBCqzRfX)_bĒTQ6ˌy$"%;'&yx˦ eEa¥,%u(0g\ !ǯv9w^V2#$/xʆrڇh4Fh4Fʼn\@נ[:a6 }Pp4$P{yiU\ o1˞@;F}SܢS}vzzZ7$ί]>E4ueW0Ϧs'r. syS$~4Fh4Fxh EѼAn 3]m Ɣl# du[Vg0VHd'X'4)h+~Ujc8V%[[e$6a%ƁO5}ӈy4@E}wjw qHѥb,!r6S6MMw :CX[$Il4+))^m839rk*مkq1ܥXcS݁Yp[.p>P|[SW>"UEkN1`u^)jC!yF9=; 7g`UaЬ[ȤZ$z^/Fh4Fh4 FB'3C^4W&Ta>LO!K5[G|ߓu[xlos`1Zj{E HKLģBXB"R]Hq)#2\ Ō0.֥@"oq*Tzxlf8|;-902TfuzJ%i…Y9}]2V-.J3y_b)tnuӺqճ"&":IZreX -Pޘ#Mz0 qnuUA.R˯exDe18.y뾶Dt.c,oD'jow2r}jAsiޗ9,St Fh4:/^݄FgLp(OS2xO֎:,j.'3)"E;J\]_O_!`ghow8-XMVR‰:sONp(YrΕu*IVV[Z$bC "au-vH)yn*eSR;7[_OnRpN@۹$6dz| gAQ$]V\hQ*V^a^"3UMU49U7Fh4Fh<HoJL |8I'9~vT]BqFeͽt~YA̩yɊl5jIjuc}#q%58Hx"m#g.;ZX !buyodE{2}(C].IE؃e4!lwa5ti2Uu躮κVX.֙b`$E,:"uDzLd!rI uy8ypc/cRYGߵ17殫0cwzxЕk#ҳ`n :Blqg/ԍFh4Fh4&Y#w~(0BN6e*{<~ C4PM8ړ;j k` kdo!}R20IVߑuÈ Y'X{/e%[_JmI{rX t"b݈e™em1urrZV .zq%@d֬^blcvտBg/Qnegu-bmYӢp]E|"c֘ׯB沃*u9g>Ld7q*orҕ8GR=YϪ:Fh4Fh4B=9 3^!5@Vt\pǃ~:M=1_!8qm,<'HqLHM_CϘ.4@ǴԛaH$mT&4930$M}_BrB{[(ES뽛D?a~]9FH1E,ZgtEs1|"Ħ\~YΎ:8;rx\苐7sU\3a//>2U-cBV>bK]ש\v-E]SΝ΅ق$.?sٽ9p {{kjx?3~z=+h4Fh4F;dm4xFp+àEKYL4KeC!I }Li2u9Y= )ԌYxp1 I1\G4Eck]Zuv#\LpyUI^y⪠ge=?ϑޔ,,M]o$vgYxwiڞ/͎LwٌVO@&'nd[Fwms8Y,؅I 19fT?tO"ӍYT?=FLEu^dfc Fh4Fh4| ҅[aU:RL4k&qK#Yu:DMn0JRt,5!dHxx4 x̀=0L&7=1FPHeܵ|[1 s!Ln뺎q'=GsbZ>>Yd]VЉ#"ZWah4Fh4ƃO!P+xr[fmG@6uy7'?S4ZҪB'U7"3ESI&~}O8Z_} UdN,39V~Uf@pL3 &*5\ ^М -+X< Nf ΋u^pI)1\Fd-WgbMo)N"/k&"~Qx/S9I0{#:$/W-&[Εe5^yJɌ4)C' rr/|߮-h4Fh4F!=?DFPIyFq'adGSgmE "|S\wfMJ 8P.)i1YY4RÇnV-9)u"h&w~2Ř&1MDc42֋*8Nš3,†f-",t8ՑX֤xqrWcKӟmpWgI{db feTbxӗuT_|s'b"B]=}8"_P,7%Tvur)=XE\ YPY'j2+':ߡ1E:OqF#j2}gGB7姌s u]8.lnS]m.0 AɑGy6'hԍL*YXyDH"klxG5N:ѼqFaݕ EQ8֑ɷѻ6|#UBZDOrİ>ruNyyxm.N]X/sĸOKQ⣟ȳҗbĺ@3<} }U4PuZ86atiE~k4FUɫ_vF n 5i?z)~z=8Fͅ]-w4~+IG:<]rmI؛tZ*˒*UGvCOE!Y|K\+%\rlӇV1~M9]}օXi]yhJ MLh4Fh4F>VȤ{ utaq .Rcl1Y.o%AFr+)Y98:}ǎ\gȤ!|1Ez bĵi-DBVu=}nr9s\#r̸WQ IDAT))⟿M`(y"X7rzsЕIه܀qQgc UdkěQy~̮*Z_.esY=8~tU45N`l4Fh4FxM[VĔ9tI")9~ ]*CZ9e98g498xC QT!Ɓed]!ɉɬ8\gZNU_NcWsfq$) .x:[uےoJwy{>:eQ"10'~;}G1dPl݌},'rJI:Wm}@O35ҔicBαbBgaqd(٬ڥZ&kϟ|ܢ_*I94嶽 :[^=*UAto=xz靈SP**:7E~7?cǎ4ÉC䍁h4Fh4F`|ǘ#59plRv?N~)F>Q:D:2&މu a.i#I̱#!(xp> Iʀ6~Yw$b<|{< + NdzIWҪntµQ:N B. U&+w$`U-d6O\~SLbuL Q˄Tf=îjyb&)j' BVuΊ+"qcVg(buhgw'W,UA-Oqן~U\4gʊ!C ƄR^;{bycRh4Fh4F!@<2ġ"&pIU֧>D1{1~u_8r7)f!Di-wL#]ߛ6w=O~udU>'zGmc!"xQTQ"oM"L4]`s̙gY;gp?g_q-q9ʱ'M /h)F4YNeCުQi+9W{lQ7-lY RuM3t[3 k=xOx|ó/4aUuWBM$͘-SfEX݄\bMu<:-9t];|rh4Fh4FĉHZ搮URXR.@{Gl7gׄEYAϽF><>s b.8)K:A)y|:0bJt]7/Uf(!e;eMXUc*9%kvu2A;/o\ﵫLkv#]ױ^'{o+ʅt97'gYbqlYГyxvZ_WT\3FHg>ynWQԌ; ^4[yW|H+}_9:ABmڹWɊ S$ZAKqh4Fh4F&%{i"L/9pG`w7^FrIv" k"seaY w,qRZ{}s6y ēh9f" ij:L31b0ɫݘ i49iY:ͥn f$w9ɣ7c+ 軞8&r$L[*Y`R&Hb Ҿ)#epa Ըr@FLi4( 6ؑ1 "9Yg+.*TCy-¼+"(DhL8嗛 7WD߹z{Q0Z50Ac'ASK4Yh(y?97u%O46s6Gbh4F`y{ >[}kn42N6#91~D\DŽ0  Gܙgqn2}T~|ɽ]nNwޭp8BPʰ9Z:Nۃ9܉I!ǒ"p).M)`9 }#+NMrNĿ:0 );^,m]29AQU񥮯JoEӺEhn]N0kUeujg_|mָq{[ogϩW]bKNh2 pWyCoU猓++. (M˽\9e83slxs^ٗ_@lLq17T!:2o^'WCh4Fhբko_1;~B?m8'2N!~??>FhlLP@L/Wg>UP`kLvC#i}hf7ZDߙSB9!E  t(a=mSF|L;8){f#`a E b"0!30pz|pbŜ*@E@8Ai 3]Q=]TUo?~v~y~_v`J["ך\h35p<)4iLh׬ 6rpBMk uK}h(!>(Wk¤{0W_܉n:aQ+"2wzg\HTaT}6[o.uFh.Df6< C!Mh|% a 08jl˨|Pd s -='S⧮Jcvv}b9b.e%4jޅa _e9bs/>}z4 KgIy,s3nVi@[gh&r8ѯτopQ;Ӿ$da+OUci$Ci] i͚G(9#TndpN MhQ[#rg(n|܊}:дQN"΃9XH}Ǟe_.Obgc~%W]uW[+ֳsmfy/P8إ%yP)j;3kktt}1_EYl{i8J\}Τ16l$ZR򊚒,(KjT5^z[Wn^Kz 5^_[ ^-*h!@+b0qZ#GhS& Bk|iJaK Bn,7%-,)M>_!Ha1OxWbe3jŐ/SKplZeη_S)v0u}B"d5|>#>3xϾ5U+q}שe#(VӔ%e:2uB[H׈2qΰ^WUؼ?kX3a!qtuw5הҁ:cs kN( ۠1{CA=D+ e!Va-iPG1+Tڌ O+j[:A²9?]sH Io1ݿХy|3=Տ1ծ\ܲgK.L-r?w4NgXѕ N0֜Zz(0Zƫ=G_q:ChsͥK9U[rrCCG3__aln'n[ /qRG6 м/MĎ\:ezGϓmOlXF^"rTmV#׃ ?o{nf8!ѷ0y8iH;6Ӭ~d+w9{/It& ߹,f͚Dú8UJēS=sQ8 1J9),/L{kk{Ǟ~4NJQ@?UMU*--Κ* vKG0%v\Y{r\TZ ;w-Kzyb/ni-3Jf+Fjq%|Ҹoa">y,Z8  ??O5$-tC|j7'=Kv5;;?ZZ~Wzj)+" n;#À4?eWmP.vGrFZ^sIbó\w Z39RG]qr1=ޞrܴǸx| Vv۬LR: =ռ~b9p ܋:DbHW6v)W9XL`g a_:n l`}?>]g 6[Mwx{n-_2zl<<ߪ'CGf69뱦jC y-gz7VgxOj3L7G/<)^zğ薗-'EYl{x \<%"R(i۱\sAe dAov,FxJ-릱1%RjHW*l;Ϸ˗(-pN#--Ҿ&X IJ /H8ڄcX$.h$$ Ki#eMaW y$ ?y_hO :0 D1*(8Pj2RT,2: Cc\(57m߸}4&#]1Հeޱ#{\)+Or;#5_^n,w+t*}ONѤGw w< #w]9onUQPܚGǕ>Ыyn-q&6uG؜FESݡ;g0 D+_ӤQ!-w`%"tNўfͰxs`(Q2:~"}aAUXsǴߥq̰V;2+t=sNٝV-~lcϑ(/oFA gfD2 Ki?$/~D':qzqY }pvپmē1/$N2rr83)zgg0j~l׺s47s^(*.ߗ M8スVuUF[#i^>-]v݃Z0蔳9{cJ{f> Iq [veo]= I6m^]c[MŇ`l&4*iʾv~cM2'd+E[_{ꝛz}GwYl,[;2h@~=+y?W(-IcFQ[B֌7擼J%o#Flb͌